作品简介

这是一本专门为嵌入式读者打造的C语言进阶学习图书。本书的学习重点不再是C语言的基本语法,而是和嵌入式、C语言相关的一系列知识。作者以C语言为切入点,分别探讨了嵌入式开发所需要的诸多核心理论和技能,力图帮助读者从零搭建嵌入式开发所需要的完整知识体系和技能树。

本书从底层CPU的制造流程和工作原理开始讲起,到计算机体系结构,C程序的反汇编分析,程序的编译、运行和重定位,程序运行时的堆栈内存动态变化,GNU C编译器的扩展语法,指针的灵活使用,C语言的面向对象编程思想,C语言的模块化编程思想,C语言的多任务编程思想,进程、线程和协程的概念,从底层到上层,从芯片、硬件到软件、框架,几乎涵盖了嵌入式开发的所有知识点。

本书适合嵌入式学习者、开发者阅读学习,同样适合从事Linux下C语言开发工作的人员作为参考。阅读本书需要读者有一定的C语言基础,无论你是在校学生,还是需要充电学习的工程师,掌握了C语言的基本语法和编程技能后再阅读本书,学习效果会更佳。

王利涛,嵌入式工程师,培训讲师,多年嵌入式开发经验,包括芯片测试、BSP、驱动开发、USB子系统等,目前在开发“嵌入式工程师自我修养”系列在线视频教程,以及在个人博客“宅学部落”分享更多的嵌入式、Linux、AIoT技术。

作品目录

  • 内容简介
  • 前言
  • 第1章 工欲善其事,必先利其器
  • 1.1 代码编辑工具:Vim
  • 1.2 程序编译工具:make
  • 1.3 代码管理工具:Git
  • 第2章 计算机体系结构与CPU工作原理
  • 2.1 一颗芯片是怎样诞生的
  • 2.2 一颗CPU是怎么设计出来的
  • 2.3 计算机体系结构
  • 2.4 CPU性能提升:Cache机制
  • 2.5 CPU性能提升:流水线
  • 2.6 多核CPU
  • 2.7 后摩尔时代:异构计算的崛起
  • 2.8 总线与地址
  • 2.9 指令集与微架构
  • 第3章 ARM体系结构与汇编语言
  • 3.1 ARM体系结构
  • 3.2 ARM汇编指令
  • 3.3 ARM寻址方式
  • 3.4 ARM伪指令
  • 3.5 ARM汇编程序设计
  • 3.6 C语言和汇编语言混合编程
  • 3.7 GNU ARM汇编语言
  • 第4章 程序的编译、链接、安装和运行
  • 4.1 从源程序到二进制文件
  • 4.2 预处理过程
  • 4.3 程序的编译
  • 4.4 链接过程
  • 4.5 程序的安装
  • 4.6 程序的运行
  • 4.7 链接静态库
  • 4.8 动态链接
  • 4.9 插件的工作原理
  • 4.10 Linux内核模块运行机制
  • 4.11 Linux内核编译和启动分析
  • 4.12 U-boot重定位分析
  • 4.13 常用的binutils工具集
  • 第5章 内存堆栈管理
  • 5.1 程序运行的“马甲”:进程
  • 5.2 Linux环境下的内存管理
  • 5.3 栈的管理
  • 5.4 堆内存管理
  • 5.5 mmap映射区域探秘
  • 5.6 内存泄漏与防范
  • 5.7 常见的内存错误及检测
  • 第6章 GNU C编译器扩展语法精讲
  • 6.1 C语言标准和编译器
  • 6.2 指定初始化
  • 6.3 宏构造“利器”:语句表达式
  • 6.4 typeof与container_of宏
  • 6.5 零长度数组
  • 6.6 属性声明:section
  • 6.7 属性声明:aligned
  • 6.8 属性声明:format
  • 6.9 属性声明:weak
  • 6.10 内联函数
  • 6.11 内建函数
  • 6.12 可变参数宏
  • 第7章 数据存储与指针
  • 7.1 数据类型与存储
  • 7.2 数据对齐
  • 7.3 数据的可移植性
  • 7.4 Linux内核中的size_t类型
  • 7.5 为什么很多人编程时喜欢用typedef
  • 7.6 枚举类型
  • 7.7 常量和变量
  • 7.8 从变量到指针
  • 7.9 指针与数组的“暧昧”关系
  • 7.10 指针与结构体
  • 7.11 二级指针
  • 7.12 函数指针
  • 7.13 重新认识void
  • 第8章 C语言的面向对象编程思想
  • 8.1 代码复用与分层思想
  • 8.2 面向对象编程基础
  • 8.3 Linux内核中的OOP思想:封装
  • 8.4 Linux内核中的OOP思想:继承
  • 8.5 Linux内核中的OOP思想:多态
  • 第9章 C语言的模块化编程思想
  • 9.1 模块的编译和链接
  • 9.2 系统模块划分
  • 9.3 一个模块的封装
  • 9.4 头文件深度剖析
  • 9.5 模块设计原则
  • 9.6 被误解的关键字:goto
  • 9.7 模块间通信
  • 9.8 模块设计进阶
  • 9.9 AIoT时代的模块化编程
  • 第10章 C语言的多任务编程思想和操作系统入门
  • 10.1 多任务的裸机实现
  • 10.2 操作系统基本原理
  • 10.3 中断
  • 10.4 系统调用
  • 10.5 揭开文件系统的神秘面纱
  • 10.6 存储器接口与映射
  • 10.7 内存与外部设备
  • 10.8 寄存器操作
  • 10.9 内存管理单元MMU
  • 10.10 进程、线程和协程
  • 参考文献
展开全部