前言
嵌入式Linux与物联网软件开发——C语言内核深度解析
C语言是嵌入式Linux领域的主要开发语言。对于学习嵌入式、单片机、Linux驱动开发等技术来说,C语言是必须要过的一关。C语言学习的特点是入门容易、深入理解难、精通更是难上加难。很多用C语言写了多年单片机程序的老工程师转入嵌入式Linux领域后,都会觉得很难,甚至惊叹“为什么同样是C语言代码,我完全看不懂?”更不用说初学者了,大多数人都会有一种“很难精进、很难掌握”的感觉。
本书就是为了解决这个问题。朱有鹏老师在由嵌入式软件开发人员转为职业培训讲师后,试图找到一种方式能够将研发实践中的技能和技巧传授给学生,而不仅仅是冰冷晦涩的语法和知识点。没错,我们认为C语言既是一门技艺,也是一种能力,就好像开车、踢足球、厨艺等一样,不只是要“知道怎么回事儿”,还要“玩儿得好”才行。
本书的原型思想和内容,发源于朱有鹏老师早些年的研发和学习经历,发展于后来数年的线下培训授课经历,并最终成熟于视频课程《4.C语言高级专题》(隶属于《朱有鹏老师嵌入式Linux核心课程》系列视频课程的第4部分)。该套视频课程于2015年10月录制完成,并在不到的一年时间内,已被上千人观看学习,创下了全好评的好成绩。
本书正是基于这套视频课程的课件整理而来,参与各章节整理和编写的都是学习了视频课程的学生,最终由朱有鹏老师和张先凤老师检验并完善成书。这些参与编写的同学有的已经工作数年、有的则尚未走出大学校园。选择他们合作创作本书,就是为了告诉读者:做技术并不要求你天赋异禀,只需要你感兴趣、愿意去探索和练习,你也可以成功。
本书的另一大特色是,专门针对嵌入式Linux开发方向而设计。这并不是一句空话,本书的很多内容,如位操作、container_of宏、内核链表、变参等,都是嵌入式Linux开发中重要的技能,而在一般的C语言书中并无过多介绍。
最后,本书并不是一本零基础系统学习C语言的书,而是一本定位为技能提升型的专著。如果你已经学过或者正在使用C语言,但苦于无法精进,或者在学习嵌入式Linux软件开发中遇到困难,那么试试这本书吧,一定会为你带来收获。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
目 录
第1章 C语言与内存
1.1 引言
1.2 计算机程序运行的目的
1.3 位、字节、半字、字的概念和内存位宽
1.4 内存编址和寻址、内存对齐
1.5 C语言如何操作内存
1.6 内存管理之结构体
1.7 内存管理之栈(stack)
1.8 内存管理之堆
第2章 C语言位操作
2.1 引言
2.2 常用位操作符
2.3 位操作与寄存器
2.4 位运算构建特定二进制数
2.5 位运算实战演练1
2.6 位运算实战演练2
2.7 技术升级:用宏定义来完成位运算
第3章 指针才是C语言的精髓
第4章 C语言复杂表达式与指针高级应用
第5章 数组&字符串&结构体&共用体&枚举
第6章 C语言的预处理、函数和函数库
第7章 存储类&作用域&生命周期&链接属性
第8章 C语言关键细节讨论
第9章 链表&状态机&多线程
第10章 程序员和编译器的暧昧
附录 答案