Recommended embedded learning books for engineers with ten years of R&D experience (reposted)

Having been engaged in the embedded R&D industry for ten years, I believe that learning is to continuously absorb knowledge. In the process of R&D, we often encounter some problems. The process of discovering and solving problems is progress.
Why choose to learn embedded?
Embedded system is undoubtedly one of the hottest and most promising IT application fields, and it is also one of the few gold-collar positions in the IT field today. The current Chinese IT talents are facing a serious "lack of successors", and this gap is caused by lack of training, education mode and other reasons, and the biggest gap is senior IT talents. If your IT training is not professional, you will not be able to find a job in an increasingly competitive workplace. Experts predict that the annual talent gap of embedded is around 300,000 .
Embedded industry average salary distribution
If you want to do a good job, you must first sharpen your tools. In addition to the recommended books, I also recommend the development board I use. I use the OK6410 from Feiling. It feels like a good board for entry. I just saw their official micro Bo looks like A8 's 210 and ARM9 's 2416 are ready for promotion. There is a 50 yuan Jingdong shopping card to send. If you want to start, you can pay attention .
The overall roadmap for learning the direction of ARM+Linux embedded low-level kernel driver
 
Attached is the ARM learning path diagram, hoping to inspire learners.

Basic Learning Ⅰ---Introduction to Linux
        At present, the main embedded development environments are Linux, Wince, etc. Linux is widely used because of its open source, convenient development and operation. The Linux operating system is just a simple operating system. Simple use is not very valuable for embedded developers. The real value is to master the basic services of Linux and the design concepts and ideas of Linux, which is very important for embedded developers. The long-term development of developers is extremely important. There are many distributions for Linux systems, RedHat, Ubuntu, Fedora, etc. As embedded developers, we do not need to focus on which Linux distribution to use, but to install the Linux system as soon as possible. If you plan to persist in long-term learning, it is recommended that you make your computer dual-system instead of installing it on a virtual machine.
Ubuntu system download address: http://www.ubuntu.org.cn/
A) Classic Book Recommendations:
 

Brother Bird's Linux Private Kitchen - Full Versionhttp:
//download.eeworld.com.cn/detail/solarelec/366551

B) Classic Learning Video Recommendation: Getting Started with Linux Operating System
Basic Learning Ⅱ---C Language
    C language is the basic knowledge necessary for embedded development. In the development of C language under Linux, you will feel smoother and more natural, because C language was born with the emergence of unix, and the Linux kernel is almost completely written in C language. Learning C language, if you can't use pointers, then you can't be called C language. It is even more important to do embedded development pointers, so in addition to mastering bit operations, qualifiers, etc. in embedded development, the mastery of pointers is indispensable. And to master multi-level pointers, function pointers and so on. When it comes to pointers, then we will talk about memory allocation. In university, the general learning of C language rarely talks about memory allocation, but if you want to engage in embedded development, you must understand how C language manages memory allocation. In addition to pointers, you also need to learn modular compilation processing, pointers and arrays, gcc, Makefile, GDB, recursion, structures, macro definition usage, etc. C language is the foundation of the entire embedded building, so when learning embedded, you must pay attention to C language, type more codes, and practice more. A good programmer must turn to "mental labor" through "manual labor", which is why we have the idea of ​​"can't write code = 0".
    If the C language is equivalent to text, then the data structure is equivalent to making sentences and writing articles. Part of the code quality depends on the mastery of data structures. In the data structure part, we will focus on linked lists, trees, and sorting. And we can also see how some of the more common functions (such as strcopy, strcat, printf, etc.) are implemented in the kernel, and write code simulation stacks, which is not only conducive to the improvement of code quality, but also a preliminary understanding of the Linux kernel The essence, lay a solid foundation for future work.
        In the field of embedded development, C++ and QT are used to develop graphical interfaces. If you want to engage in upper-level application development and graphical interfaces, you need to study C++ and QT in depth.  
A) Classic Book Recommendations:   
 
C programming language (2nd edition · new edition) http://download.eeworld.com.cn/detail/nn50/556255
C

language core technology
http://download.eeworld.com.cn/detail/Timson/277541Data

Structural Analysis and Algorithm Analysis C Language Description
http://download.eeworld.com.cn/detail/%E8%BE%9B%E6%98%95/28395

Classic C Language Book "C and Pointers"
http://download .eeworld.com.cn/detail/border1999/556912

C Traps and Defects (Chinese)
http://download.eeworld.com.cn/detail/sinceyoulove/457934

C Primer Plus (Fifth Edition) Chinese Version
http:// download.eeworld.com.cn/detail/tiankai001/2431


 

GNU MAKE Chinese Manual
http://download.eeworld.com.cn/detail/nishisb/220030

C++ GUI Qt 4 Programming (Second Edition) (Book + Source Code)
http://download.eeworld.com.cn/detail/tiankai001/563543



B) Classic Learning Video Recommendation: Introduction to C Language
C) Classic study cases:
1. Student achievement management system 2. Calculator 3. Electronic dictionary 4. File compressor
基础进阶---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)经典书籍推荐:
 
《UNIX环境高级编程》高清扫描版
http://download.eeworld.com.cn/detail/Timson/1161


深入理解计算机系统
http://download.eeworld.com.cn/detail/huhuhah0009/530147


unix 网络编程
http://download.eeworld.com.cn/detail/lb5761311/554533


《TCP/IP协议详解》 中文版
http://download.eeworld.com.cn/detail/Timson/874

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来编写代码,达到理解外围设备工作原理和操作硬件的目的。
 
ARM嵌入式系统开发:软件设计与优化[中文版]
http://download.eeworld.com.cn/detail/bootloader/27476

嵌入式Linux应用开发完全手册 
http://download.eeworld.com.cn/detail/tyw/301888

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系统到开发板上吧。
 

《深入理解Linux内核》高清扫描版
http://download.eeworld.com.cn/detail/Timson/1397

Linux设备驱动程序中文版第三版
http://download.eeworld.com.cn/detail/huhuhah0009/525516

Linux内核设计与实现
http://download.eeworld.com.cn/detail/JoeBeav/49450

精通LINUX设备驱动程序开发
http://download.eeworld.com.cn/detail/%E6%AC%A3%E4%B9%8B/82189

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

《高速数字设计手册》《high speed digital design》黑魔书
http://download.eeworld.com.cn/detail/tyw/561997

CADENCE高速电路板设计与仿真(原理图与PCB设计-第4版)
http://download.eeworld.com.cn/detail/Timson/218366

《信号完整性揭秘》于博士 完整版
http://download.eeworld.com.cn/detail/zsm1681/556345

信号电源完整性仿真分析与实践_邵鹏编著
http://download.eeworld.com.cn/detail/tiankai001/563544

电磁兼容的印制电路板设计(原书第二版)
http://download.eeworld.com.cn/detail/yaoniming3k/39090


Cadence高速电路板设计与仿真-信号与电源完整性分析第4版
http://download.eeworld.com.cn/detail/hzqydq/306239


 




EMC电磁兼容设计与测试案例分析(第二版)
http://download.eeworld.com.cn:88/detail/kq851211/563498








5.jpg (48.72 KB, 下载次数: 4)

5.jpg

8.jpg (46.39 KB, 下载次数: 8)

8.jpg

11.jpg (45.31 KB, 下载次数: 9)

11.jpg

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324643344&siteId=291194637