书籍

层次:初级

导读:《Essential C++中文版》以4个方面来表现C++的本质:procedural(程序性的)、generic(泛型的)、object-based(个别对象的)、object-oriented(面向对象的)。《Essential C++中文版》的组织围绕着一系列逐渐繁复的程序问题,以及用以解决这些问题的语言特性。循此方式,你不只学到C++的函数和结构,也会学习到它们的设计目的和基本原理。

【点击下载】

层次:初级

导读:《C++ Primer中文版(第4版·特别版)》附加了《C++编程规范:101条规则、准则与最佳实践》一书的全部内容
对C++基本概念和技术全面而且权威的阐述,以及对现代C++编程风格的强调,使本书不仅是初学者的最佳C++指南,而且是中高级程序员不可或缺的参考书。

【点击下载】

层次:中级

导读:本书一共组织 55 个准则,每一条准则描述一个编写出更好的 c++ 的方式。每一个条款的背后都有具体范例支撑。第三版有一半以上的篇幅是崭新内容,包括讨论资源管理和模板(templates)运用的两个新章。为反映出现代设计考虑,对第二版论题做了广泛的修订,包括异常(exceptions)、设计模式(design patterns)和多线程(multithreading)。  
《effective c++》的重要特征包括:
* 高效的 classes、functions、templates 和inheritance hierarchies(继承体系)方面的专家级指导。
* 崭新的 "tr1" 标准程序库功能应用,以及与既有标准程序库组件的比较。
* 洞察 c++和其他语言(例如java、c#、c)之间的不同。此举有助于那些来自其他语言阵营的开发人员消化吸收 c++ 式的各种解法。

【点击下载】

层次:中级

导读:《c++编程思想(两卷合订本)》的第1卷是在第1版的基础上进行了更加深入的分析和修改后得到的第2版,其内容更加集中,可以供不同程度的读者选择阅读。本书第2卷介绍了c++实用的编程技术和最佳的实践方法,深入探究了异常处理方法和异常安全设计;介绍c++的字符串、输入输出流的现代用法;解释多重继承问题的难点,描述了典型的设计模式及其实现,特别介绍了多线程处理编程技术。

【点击下载】

层次:中级

导读:继 effective c++ 之後,scott meyers 於 1996 推出这本「续集」。条款变得比较少,页数倒是多了一些,原因是这次选材比「第一集」更高阶,尤其是第五章。meyers 将此章命名为技术(techniques),并明白告诉你,其中都是一些 patterns,例如 virtual ctors、smart pointers、reference counting、proxy classes,double dispatching┅等等。这一章的每个条款篇幅都在 15~30 页之谱,实在让人有「山穷水尽疑无路,柳暗花明又一村」之叹。

【点击下载】

层级:中级

导读:本书中讲述的疑惑和问题不仅仅会使你感兴趣,而且还会帮助你成为一名优秀的C++程序员。每个问题都是根据难度进行分级并用来说明错综的编程错误或设计考虑的。在你有机会自己尝试完成一个解决方案后,本书会帮助你分析代码、阐明错误,并演示如何修正错误。

【点击下载】

层级:中级

导读:本书是真正的程序员的必读之物,在向你展示如何用C++撰写优质代码的同时,它为你提供了对语言彻底而实用的理解。本书是广受赞誉的Exceptional C++的续篇,它采用了行之有效的“提问/解答”的组织形式,提供了用C++解决现实世界问题的成功策略。

【点击下载】

层级:高级

导读:本书中,C++大师Herb Sutter通过40个编程问题,使读者不仅“知其然”,更要“知其所以然”,帮助程序设计人员在软件中寻找恰到好处的折中,即讨论如何在开销与功能之间、优雅与可维护性之间、灵活性与过分灵活之间寻找完美的平衡点。本书是围绕实际问题及其解决方案展开论述的,对一些至关重要的C++细节和相互关系提出了新的见解,为当今关键的C++编程技术(如泛型编程、STL、异常安全等)提供了新的策略。本书的目标是让读者在设计、架构和编码过程中保持良好的风格,从而使编写的C++软件更健壮、更高效。本书适合中高级C++程序员阅读。 软件“风格”所要讨论的主题是如何在开销和功能性之间、优雅跟可维护性之间、灵活性与过分灵活之间寻找完美的平衡点。

【点击下载】

层级:高级

导读:《深度探索C++对象模型》重点:探索"对象导向程序所支持的C++对象模型"下的程序行为。对于"对象导向性质之基础实现技术"以及"各种性质背后的隐含利益交换"提供一个清楚的认识。检验由程序变形所带来的效率冲击。提供丰富的程序范例、图片,以及对象导向观念和底层对象模型之间的效率测量。Inside The C++ Object Model专注于C++对象导向程序设计的底层机制,包括结构式语意、暂时性对象的生成、封装、继承,以及虚拟——虚拟函数和虚拟继承。这《深度探索C++对象模型》让你知道:一旦你能够了解底层实现模型,你的程序代码将获得多么大的效率。Lippman澄清了那些关于C++额外负荷与复杂度的各种错误信息和迷思,但也指出其中某些成本和利益交换确实存在。他阐述了各式各样的实现模型,指出它们的进化之道及其本质因素。

【点击下载】

层级:高级 

导读: 全书分为6篇32章,分别对c++语言的历史和特点、类和继承、stl与泛型编程、库的设计等几大技术话题进行了详细而深入的讨论,细微之处几乎涵盖了c++所有的设计思想和技术细节。全书通过精心挑选的实例,向读者传达先进的程序设计的方法和理念。
  本书适合有一定经验的c++程序员阅读学习,可以帮助读者加强提高技术能力,成为c++程序设计的高手。

【点击下载】

层级:高级 

导读: 很多程序员及软件设计师都认为利用C++开发意味着放弃程序性能提升的可能。在很多人眼里,使用C++来开发那些效率至上的应用无疑将导致一场空前的浩劫。因此,在许多性能敏感型领域,诸如网络协议、操作系统内核、移动设备驱动等等,C++都常常处于被冷落的境地。
详细讨论了临时对象、内存管理、继承、虚函数、内联、引用计数以及STL等一切有可能提升C++效率的细节内容。最终,该书将C++性能提升的各种终极利器,完美地呈现在广大读者的面前!无论你是相关领域的从业人员,还是C++程序设计爱好者,或者是渴望突破编程瓶颈、大幅提升自我修为的程序设计爱好者,《提高C++性能的编程技术》都必将使你获益良多。

【点击下载】

层级:高级 

导读: C++STL(Standard Template Library,标准模板)是一次革命,但是学习如何用它却是一个挑战。在本书中,Scott Meyers(两本最畅销的书《Effective C++》和《More Effective C++》的作者)揭示了专家总结的一些关键规则,以便最大限度地使用标准模板库。 其他书只是描述了STL中有什么,而本书则讲述了如何使用STL。本书共有50条原则,对于每一条原则,SCOTT MEYERS都通过透彻的分析和经典的实例来进行讲解,从而使读者不仅可以了解要做什么,而且还能够了解何时做以及为何做。 像MEYERS的其他著作一样,这本书充满了从实践中总结出来的智慧。它清晰、简明、透彻的风格必将使每位STL程序员受益匪浅。

【点击下载】

ARM+Linux嵌入式底层内核驱动方向学习总体路线图

 

附上ARM学习路径图

 

基础学习Ⅰ---Linux入门
        目前嵌入式主要开发环境有 Linux、Wince等;Linux因其开源、开发操作便利而被广泛采用。而Linux操作系统也只是一个简单的操作系统,简单的使用对于嵌入式开发人 员来说价值并不很高,真正有价值的是掌握Linux的基本服务和Linux的设计理念、思想,这对于嵌入式开发人员的长期发展是很极其重要的。Linux 系统有很多发行版,RedHat、Ubuntu、Fedora等。作为嵌入式开发人员,我们没有必要把精力放到使用哪个Linux发行版上,而是尽快把 Linux系统尽快安装好。如果打算坚持长期学习,那么建议您把自己的电脑做成双系统,而不要在虚拟机上安装。

A)经典书籍推荐:

 

B)经典学习视频推荐:Linux操作系统入门

基础学习Ⅱ---C语言

    C语言是嵌入式开发必备的基础知识。在Linux下从事C语言的开发,你会觉得更为顺畅、更为自然,因为C语言是因unix的出现而诞生的,Linux内 核几乎完全是由C语言编写完成的。学习C语言,如果不会用指针,那么就称不上会C语言。做嵌入式开发指针更显得尤为重要,所以做嵌入式开发除了掌握位操 作、限定词等,对指针的掌握是不可或缺的。而且要掌握多级指针、函数指针等等。涉及到指针,那么就会讲到内存分配。在大学中,学习C语言一般的学习很少讲 到内存分配,但是如果期望从事嵌入式开发,那么就必须懂得C语言是怎么做内存分配管理的。指针之外,还要学习模块化编译处理、指针与数组、gcc、 Makefile、GDB、递归、结构体、宏定义使用等。C语言是整栋嵌入式大厦的基础,所以在学习嵌入式时,必须把C语言重视起来,多敲代码,多练。一名优秀的程序员必定是通过“体力劳动”再转向“脑力劳动的”,这也是为什么我们要有“写不出代码=0”思想的原因所在。
    如 果说C语言相当于文字,那么数据结构就相当于在造句、写文章。代码质量有一部分取决于对数据结构的掌握程度。在数据结构部分我们要把链表、树、排序作为学习重点。而且我们也可以查看一些比较常见的函数(如strcopy、strcat、printf等)在内核中是如何实现的,以及编写代码模拟堆栈,这 不仅有利于编写代码质量的提高,而且还可以初步了解Linux内核精髓,为今后工作打下坚实的基础。
        C++、QT在嵌入式开发领域,是用来开发图形界面的,希望从事上层应用开发及图形界面,那么在C++、QT方面需要比较深入的学习。  

A)经典书籍推荐:   

  

 

B)经典学习视频推荐:C语言入门

C)经典学习案例:
1、学员成绩管理系统2、计算器3、电子词典4、文件压缩器

基础进阶---Linux应用程序设计
     Linux的思想源于Unix。Linux继承了Unix的优点,但 是没有用UNIX的代码,所有程序都是重新编写的,而且Linux与Unix的源码级兼容。Linux是类Unix操作系统。Linux 不仅符合 POSIX 标准,而且还包括其它 UNIX 标准的多种特性,例如,UNIX 的 System V 接口文档(System V Interface Document,SVID)和伯克利软件发布(Berkeley Software Distribution,BSD)版本。Linux 采用了折衷的策略,包含了 UNIX 几个典型特性当中最实用的一些功能:
     Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号。
     Linux 支持 BSD Socket 网络编程接口。
     许多 Linux 发行版采用 SysV init 机制,支持运行级别。
此阶段的学习是从事嵌入式上层应用开发以及底层开发人员的必修课程。进程、线程、信号、文件锁、socket是这部分内容的重点。要把这些内容学的透彻非要下些苦功夫不可。而且函数是系统提供给我们的,难免要对计算机系统深入理解一番。TCP/IP协议也是要涉及到的。有问题建议用Google搜索及登陆 chinaunix论坛。通过这个阶段的学习,我们就可以初步实现一些应用程序的开发了,如做自己的shell命令解析器、简单的聊天软件、视频多播等。

A)经典书籍推荐:

  

B)经典学习视频推荐:Linux环境高级编程

C)经典学习案例:
1、串口监听程序   2、图片浏览器      3、MP3播放器        4、聊天程序         5、 ftp程序
6、音频广播程序   7、ping的实现     8、DDos攻击程序   9、ARP攻击程序

嵌入式入门---ARM体系结构
    从这部分开始,我们将真正进入嵌入式开发学习阶段。首先我们要知道采用哪种处理器。目前通用嵌入式处理器有ARM、MIPS、PowerPC、X86等。 从市场产品占有率上看,ARM处理器远远领先于同类其它处理器,并逐步掠夺传统51单片机和英特尔市场份额。据招聘网站统计,目前用人单位在技术水平上要求开发人员掌握ARM9及以上平台的开发技术。ARM公司在发布ARM11产品后,更改以往的数字标记更新方式,转为发布ARM Cortex。但是Cortex并不是更高端,而是全新系列的处理器,比如Cortex M3,它主要应用于机械加工、工控领域,目的是取代以前的ARM7处理器。
    在开始学习前,建议有一块自己的开发板,目前ARM9 2440的开发板价格在400-600元之间,ARM11 6410的开发板价格要高一些,最便宜的也要1200元以上。在此,提醒大家尽量不要买mini开发板,虽然mini开发板的价格要便宜些,但是与正常开 发板相比,mini板功能是不完善的。嵌入式汇编有别于X86汇编,所以如果以前没有接触过汇编语言,那么没有必要先去学X86汇编再学嵌入式汇编,可以 直接学习嵌入式汇编。除了汇编我们还要学习ARM指令集。有了开发板,我们要下载相对应处理器的DataSheet及开发板电路原理图。ARM体系结构的 学习我们是不能完全照抄别人代码的,因为我们自己手中的开发板及处理器与别人是不同的,除非所用的代码是根据你手中的开发板来编写的。所以,我们要先去看书、看视频资料理解原理及工作方式等,然后根据自己开发板的电路原理图和DataSheet来编写代码,达到理解外围设备工作原理和操作硬件的目的。

  

 

B)经典学习视频推荐:
1)  嵌入式扫盲篇——十问嵌入式

2)ARM体系结构与Bootloader开发

3)嵌入式ARM Linux开发——ARM汇编

C)经典学习案例:
1. ARM模拟器开发       2. Watchdog控制程序        3. RTC时钟控制程序
4. Uart控制程序            5. LCD控制程序                    6. 触摸屏控制程序
7. DMA控制程序          8. 音频控制程序                    9. 网卡控制程序
10. 文件系统制作        11. ARM-Linux移植

嵌入式提升---Linux内核、驱动
         众所周知嵌入式开发包含至少两个级别,一个是嵌入式内核驱动级别,另外一个是嵌入式应用层开发,而薪酬高的、最具价值的无疑是嵌入式内核驱动级别的开发者。真正的嵌入式高手或者企业中的核心开发人员,一定是嵌入式底层的内核驱动开发工程师,这些工程师成长比较缓慢,造成对内核驱动人才的大量需求,所以这 些人才是真正企业需要的香饽饽。掌握驱动开发会让自己的核心能力有极大的飞跃,真正实现嵌入式最有价值的就业。
         由于Linux内核更新速度很快,书籍和视频不可能及时更新,所以我们再看书和视频后,要自己动手下载内核源码包,去看内核中的代码,在这里可以充分检验 C语言、数据结构等基础知识的掌握程度。而驱动的编写还是要借助外设硬件电路原理图和芯片手册。内核和驱动的知识是让我们根据不同的硬件,编写对应的驱动、合理剪裁内核、制作文件系统,并移植到硬件开发板上。如果手里有ARM11 6410及以上的开发板,可以试试在裸板上编写驱动并移植Android系统到开发板上吧。

  

B)经典学习案例:
1. GPIO驱动                2. RTC时钟驱动   3. WatchDog驱动   4. Udev移植      5. 触摸屏输入设备驱动
6. LCD显示设备驱动   7. DMA驱动        8. 音频设备驱动        9. Nand Flash块设备驱动  10. 网络设备驱动

硬件工程师的书籍(等等)

 

原文地址:https://www.cnblogs.com/wgang171412/p/4955660.html