这是一本专门为嵌入式读者打造的C语言进阶学习图书。本书的学习重点不再是C语言的基本语法,而是和嵌入式、C语言相关的一系列知识。作者以C语言为切入点,分别探讨了嵌入式开发所需要的诸多核心理论和技能,力图帮助读者从零搭建嵌入式开发所需要的完整知识体系和技能树。
本书从底层CPU的制造流程和工作原理开始讲起,到计算机体系结构,C程序的反汇编分析,程序的编译、运行和重定位,程序运行时的堆栈内存动态变化,GNU C编译器的扩展语法,指针的灵活使用,C语言的面向对象编程思想,C语言的模块化编程思想,C语言的多任务编程思想,进程、线程和协程的概念,从底层到上层,从芯片、硬件到软件、框架,几乎涵盖了嵌入式开发的所有知识点。
AIoT时代嵌入式开发集大成之作,10年工作及培训总结,从芯片编译器到操作系统等嵌入式开发所需核心理论和技能一应俱全,51CTO/CSDN/淘宝/QQ学员力荐
王利涛
嵌入式工程师,培训讲师,多年嵌入式开发经验,包括芯片测试、BSP、驱动开发、USB子系统等,目前在开发“嵌入式工程师自我修养”系列在线视频教程,以及在个人博客“宅学部落”分享更多的嵌入式、Linux、AIoT技术。
你要学习的,不仅仅是C语言……
对于上面的几个C语言测试,如果你已经知道了答案,并且知道其要考查的是什么知识点,恭喜你,你对C语言及计算机体系结构的知识已经很熟悉了。如果回答得不是很好,偷偷用百度也没有搜到理想的答案,也不用气馁,因为这次测试要考查的内容其实已经不仅仅是C语言的知识了,而是和嵌入式C语言开发相关的一些理论知识,如处理器架构、操作系统、编译原理、编译器特性、内存堆栈管理、Linux内核中的GNU C扩展语法等。
当然,上面的测试也不是为了故意扎你心或者卖关子,让你赶紧掏腰包买下这本书,而是想要传递一个信息:要想从事嵌入式开发工作,尤其是嵌入式Linux内核驱动开发工作,你要精通的不仅仅是C语言,最好还要掌握和C语言相关的一系列基础理论和调试技能。笔者也是过来人,从最初学习嵌入式到从事嵌入式开发工作,这一路走来坎坷崎岖,什么都不说了,说多了都是泪。从一开始连指针都不会用、不敢用,看内核驱动代码一头雾水,越看越没底、越看越没自信,到现在不再犯怵,有自信和能力看懂内核中的代码细节和系统框架,这种进步不是天上掉下来的,也不是一不小心跌入山洞,捡到武功秘籍练出来的,而是不断地学习和实践、反复迭代、不断完善自己的知识体系和技能树,才慢慢达到的。学习没有捷径可走,要想真正学好嵌入式、精通嵌入式,个人觉得除了精通C语言,最好还要具备以下完整的知识体系和编程技能。
l 半导体基础、CPU工作原理、硬件电路、计算机系统结构。
l ARM体系结构与汇编指令、汇编程序设计、ARM反汇编分析。
l 程序的编译、链接、安装、运行和重定位分析。
l 熟悉C语言标准、ARM、GNU编译器的特性和扩展语法。
l C语言的模块化编程思想,学会使用模块化思想去分析复杂的系统。
l C语言的面向对象编程(简称OOP)思想,学会使用OOP思想去分析Linux内核驱动。
l 对指针的深刻理解,对复杂指针的声明和灵活应用。
l 对内存堆栈管理、内存泄漏、栈溢出、段错误的深刻理解。
l 多任务并发编程思想,CPU和操作系统基础理论。
本书内容及写作初衷
本书从C语言的角度出发,分10章,在默认读者已经掌握C语言基本语法的基础上,和大家一起探讨、学习C语言背后的CPU工作原理、计算机体系结构、ARM平台下程序的编译/链接、程序运行时的内存堆栈管理等底层知识。同时,针对嵌入式开发领域,用3章分别探讨了C语言的面向对象编程思想、模块化编程思想和多任务编程思想,这些底层知识和编程思想构成了嵌入式开发所需要的通用理论基础和核心技能。尤其是对于很多从不同专业转行到嵌入式开发的朋友,由于专业背景的差异,导致每个人的知识储备和编程技能树参差不齐,在学习嵌入式开发的过程中会经常遇到各种各样的问题,陷入学习的困境。
本书的写作初衷就是为不同专业背景的读者搭建嵌入式开发所需要的完整知识体系和认知框架。掌握了这些基础理论和编程技能,也就补齐了短板,可为后续的嵌入式开发进阶学习打下坚实的基础。
本书特色
l 大白话写作风格,通俗易懂,不怕学不会,就怕你不学。
l 大量的配图、原理图,图文并茂,更加有利于学习和理解。
l 在ARM平台下讲解程序的编译、链接和运行原理(独创)。
l 现场“手撕”ARM汇编代码,从反汇编角度剖析C函数调用、传参过程。
l 多角度剖析C语言:CPU、计算机体系结构、编译器、操作系统、软件工程。
l GNU C编译器扩展语法精讲(在GNU开源软件、Linux内核中大量使用)。
l 内存堆栈管理机制的底层剖析,从根源上理解内存错误。
l 从零开始一步一步搭建和迭代嵌入式软件框架。
l 教你用OOP思想分析Linux内核中复杂的驱动和子系统。
l C语言的多任务并发编程思想,CPU和操作系统零基础入门。
读者定位
本书针对的是嵌入式开发,尤其是嵌入式Linux开发背景下的C语言进阶学习,比较适合在校学生、嵌入式学员、工作1~3年的职场新兵阅读和学习。为了达到更好的学习效果,在阅读本书之前,首先要确保你已经掌握了C语言的基本语法,并且至少使用过一款C语言集成开发环境(VC++ 6.0、Visual Studio、C-Free、GCC都可以),开发过一个完整的C语言项目(课程设计也算)。有了这些基础和编程经验之后,学习效果会更好。