热搜关键词: 信号与系统无刷电机ADSTCP/IP

pdf

精通Linux内核:智能设备开发核心技术

  • 1星
  • 日期: 2022-01-09
  • 大小: 11.37MB
  • 所需积分:1分
  • 下载次数:2
  • favicon收藏
  • rep举报
  • free评论
标签: linux

linux

精通Linux内核:智能设备开发核心技术共五篇,以从易到难的顺序详细剖析了Linux内核开发的核心技术。“知识储备篇”介绍了Linux的数据结构、中断处理、内核同步和时间计算等内容,这些是理解后续章节的前提。之后通过“内存管理篇”“文件系统篇”“进程管理篇”详细介绍了Linux的三大核心模块。*后的“升华篇”则融合了前面诸多模块展示了Linux内核开发在操作系统、智能设备、驱动、通信、芯片以及人工智能等热点领域的应用。书中的重点、难点均配以图表、代码和实战案例进行展示,有助于提高读者的动手操作能力。

精通Linux内核:智能设备开发核心技术的读者需要熟悉C语言,对Linux内核有一定了解。  初学者按照本书的编排顺序阅读,而熟悉Linux内核的读者可以跳过第壹篇,直接从三大核心模块篇进行阅读。本书可作为Linux初中级读者系统学习Linux内核开发的指导手册,也可作为从事嵌入式、操作系统、Linux编程、驱动/内核开发,以及智能设备开发等工作工程师的案头指南和进阶工具书。

序一

序二

前言

知识储备篇

第1章  基于Linux内核的操作系统

1.1  处理器、平台和操作系统

1.2  以安卓为例剖析操作系统

1.2.1  安卓的整体架构

1.2.2  Linux内核的核心作用

1.3  内核整体架构

1.3.1  内核代码的目录结构

1.3.2  内核的核心模块及关联

1.4  实例分析

1.4.1  系统响应“点击智能手机

触摸屏”的过程

1.4.2  智能手机的传感器游戏

第2章  数据结构的使用

2.1  关系型数据结构

2.1.1  一对一关系

2.1.2  一对多关系

2.1.3  多对多关系

2.2  位操作数据结构

2.3  模块和内核参数传递

2.3.1  内嵌通用数据结构

2.3.2  通用结构的私有变量

2.4  实例分析

2.4.1  模块的封装

2.4.2  火眼金睛:看破数据结构

第3章  时间的衡量和计算

3.1  数据结构

3.2  时钟芯片

3.3  从内核的角度看时间

3.4  周期性和单触发的时钟中断

3.5  时间相关的系统调用

3.5.1  获取时间

3.5.2  给程序定个闹钟

3.6  实例分析

3.6.1  实现智能手机的长按操作

3.6.2  系统的时间并不如你所想

第4章  中断和中断处理

4.1  处理器识别中断

4.2  处理中断

4.2.1  中断处理程序

4.2.2  中断服务例程

4.2.3  中断处理

4.3  中断返回

4.4  系统调用

4.5  软中断

4.5.1  原理

4.5.2  小任务tasklet

4.5.3  定时器

4.6  实例分析

4.6.1  使用中断向无人驾驶系统报告

紧急事件

4.6.2  使用watchdog预防无人机坠落

第5章  内核同步

5.1  临界区的竞争

5.2  同步原语

5.2.1  每CPU变量

5.2.2  volatile关键字

5.2.3  屏障

5.2.4  atomic变量

5.2.5  禁中断

5.2.6  禁抢占

5.2.7  自旋锁

5.2.8  读写锁

5.2.9  顺序锁

5.2.10  信号量

5.2.11  互斥锁

5.2.12  读-拷贝-  新

5.3  实例分析

5.3.1  无人驾驶模式与人工驾驶模式的

切换

5.3.2  智能手机触摸屏的report和

suspend

第6章  事件的同步与异步

6.1  事件的异步

6.2  事件的同步

6.2.1  等待一段时间

6.2.2  等待事件完成

6.3  实例分析

6.3.1  使用工作队列轮询无人车环境

感知数据

6.3.2  使用等待队列等待芯片

“回复”

内存管理篇

第7章  内存寻址

7.1  处理器眼中的内存

7.2  内存分页

7.2.1  寻址:处理器的寻宝游戏

7.2.2  内存映射

7.3  实例分析

7.3.1  访问GPU的帧缓冲

7.3.2  MMIO的映射

第8章  物理内存的管理

8.1  物理内存的组织形式

8.2  启动程序

8.3  memblock分配器

8.4  伙伴系统

8.4.1  数据结构

8.4.2  页的申请和释放

8.5  实例分析

8.5.1  构造一个内存管理系统

8.5.2  安卓的ION

第9章  内存线性空间布局

9.1  线性空间划分

9.2  内核线性空间布局

9.2.1  直接映射区

9.2.2  动态映射区

9.2.3  映射区

9.2.4  固定映射区

9.3  mmap机制

9.3.1  函数原型

9.3.2  数据结构

9.3.3  mmap的实现

9.3.4  内存映射的总结

9.4  内存申请

9.4.1  得到物理内存

9.4.2  得到虚拟内存

9.5  实例分析

9.5.1  通过dev映射内存

9.5.2  几种不同的mmap映射方式

0章  内存管理进阶

10.1  处理器的缓存

10.1.1  TLB缓存

10.1.2  内存缓存

10.2  缺页异常

10.2.1  处理缺页异常

10.2.2  COW的精髓

10.3  实例分析

10.3.1  利用Cache的特性优化深度

学习开发

10.3.2  内核为molloc做了什么

文件系统篇

1章  文件系统

11.1  概念和数据结构

11.2  文件系统的挂载

11.3  查找文件

11.4  文件操作

11.4.1  创建和删除目录

11.4.2  打开和关闭文件

11.4.3  文件的链接

11.4.4  创建节点

11.4.5  删除文件

11.5  文件的IO

11.5.1  fcntl函数

11.5.2  文件的读写

11.5.3  ioctl函数

11.6  实例分析

11.6.1  包罗万象的proc文件系统

11.6.2  陌生又熟悉的devtmpfs

文件系统

2章  sysfs文件系统

12.1  基本框架

12.2  数据结构

12.3  创建文件

12.4  文件的IO

12.5  实例分析

12.5.1  利用sysfs协助驱动调试

12.5.2  智能家居:自动调整灯光的

亮度和色温

3章  ext4文件系统

13.1  概述

13.2  数据结构

13.2.1  ext4_super_block结构体

13.2.2  ext4_group_desc结构体

13.2.3  ext4_inode结构体

13.2.4  ext4_sb_info结构体

13.2.5  ext4_inode_info结构体

13.3  ext4的挂载

13.4  目录的结构

13.4.1  线性目录

13.4.2  哈希树目录

13.4.3  硬链接

13.5  文件的IO

13.5.1  映射

13.5.2  区段树

13.6  实例分析

13.6.1  恢复删除的文件并不神秘

13.6.2  文件系统的修复

进程管理篇

4章  进程

14.1  概述

14.1.1  数据结构

14.1.2  扩展讨论

14.2  进程的创建

14.2.1  dup_task_struct函数

14.2.2  复制creds

14.2.3  设置时间

14.2.4  sched_fork函数

14.2.5  复制资源

14.2.6  申请pid

14.2.7  重要的杂项

14.3  创建进程

14.3.1  fork/vfork系统调用

14.3.2  创建线程

14.3.3  创建内核线程

14.4  进程“三巨头”

14.5  进程退出

14.5.1  退出方式

14.5.2  退出过程

14.5.3  使用wait等待子进程

14.6  实例分析

14.6.1  创建service接收无人机手柄

控制信号

14.6.2  安卓的thread

5章  进程调度

15.1  数据结构

15.2  进程调度的过程

15.2.1  进程被创建

15.2.2  唤醒进程

15.2.3  时钟中断

15.2.4  进程切换

15.3  stop调度类

15.4  实时调度类

15.4.1  优先级和抢占

15.4.2  task_tick_rt函数

15.4.3  选择下一个进程

15.5  公平调度类

15.5.1  task_fork_fair函数

15.5.2  enqueue_task和

check_preempt

15.5.3  task_tick_fair函数

15.5.4  进程切换

15.6  后期限调度类

15.7  idle调度类

15.8  进程优先级

15.9  实例分析

15.9.1  创建实时进程服务于AI的

感知系统

15.9.2  似睡非睡的idle

6章  信号处理

16.1  数据结构

16.2  捕捉信号

16.3  发送信号

16.4  处理信号

16.4.1  何时、如何

16.4.2  调用handler

16.4.3  处理信号后如何返回

16.5  实例分析

16.5.1  使用kill命令发送信号

16.5.2  使用信号监控IO事件

7章  进程通信

17.1  经典的管道

17.1.1  创建pipe

17.1.2  pipe的操作

17.1.3  命名管道

17.2  POSIX通信

17.2.1  POSIX信号量

17.2.2  POSIX共享内存

17.2.3  POSIX消息队列

17.3  XSI通信

17.3.1  IPC对象的key和id

17.3.2  XSI信号量

17.3.3  XSI消息队列

17.3.4  XSI共享内存

17.4  实例分析

17.4.1  多线程设计加速深度学习

17.4.2  构建无人机的Service与

Client架构

8章  程序的执行

18.1  elf文件

18.1.1  概述

18.1.2  文件格式

18.2  exec函数族

18.2.1  数据结构

18.2.2  系统调用

18.3  实例分析

18.3.1  使程序高效且对系统友好

18.3.2  main函数的秘密

升  华  篇

9章  梳理操作系统:I/O

多路复用

19.1  select机制

19.2  poll机制

19.3  升级版:epoll

19.3.1  数据结构

19.3.2  epoll的使用

19.4  实例分析

19.4.1  事件驱动型程序架构

19.4.2  改良管道通信

第20章  智能设备的传感器开发

20.1  传感器在智能手机和人工智能

中的应用

20.2  input子系统

20.2.1  数据结构

20.2.2  device和handler的注册

20.2.3  事件的报告

20.2.4  的evdev

20.3  实例分析

20.3.1  智能手机硬件抽象层的实现

20.3.2  无人驾驶的传感器

第21章  智能设备的Camera

开发

21.1  Camera在人工智能中的

应用

21.2  V4L2架构

21.2.1  数据结构

21.2.2  ioctl操作

21.3  Camera的核心ioctl操作

21.4  实例分析

21.4.1  安卓的Camera架构

21.4.2  Camera的3A控制

第22章  设备驱动开发:设备驱动

模型

22.1  驱动、设备和总线

22.2  probe是如何被调用的

22.3  再论总线

22.4  实例分析

22.4.1  设计一个层次分明的驱动

22.4.2  提炼同质设备的驱动

第23章  安卓系统的核心:Binder

通信

23.1  Binder通信的原理和结构

23.2  Binder的流程

23.2.1  ServiceManager进程管理服务

23.2.2  注册和获取服务

23.2.3  服务的过程

23.3  Binder的驱动

23.4  实例分析

23.4.1  使用Binder让设计变清晰

23.4.2  通过Binder获得传感器列表

第24章  从内核的角度看芯片和

驱动

24.1  芯片的基本功能模块

24.1.1  复位

24.1.2  中断

24.1.3  接口

24.2  一个完整的芯片驱动

24.2.1  初始化

24.2.2  芯片的正常工作状态

24.2.3  suspend和resume

24.3  实例分析

24.3.1  加速度传感器芯片

24.3.2  智能手机的触摸屏芯片

第25章  Linux与人工智能

25.1  人工智能的现状

25.1.1  深度学习

25.1.2  神经网络

25.2  深度学习的软硬件生态

25.2.1  整体架构

25.2.2  硬件纷争

25.3  实例分析

25.3.1  无人驾驶汽车的模块分解

25.3.2  机器人操作系统ROS

附录

附录A  内嵌汇编语言

附录B  链接脚本

附录C  函数和宏所属文件表

推荐帖子 最新更新时间:2022-01-09 17:48

PFC的计算问题
本人对PFC的功率因数计算以及效率分不清楚,求解决 比如上图已知Us=24v交流电,输出uo=36v直流电,要求带动2a的负载; 题目要求交流输入测的功率因数达到0.98,AC--DC的变换效率达到95% 我想问的是在测试电路板时应该测哪些值和怎么计算确定功率因数以及变换效率; 我设计的是整流桥加BOOST变换电路; 我查看的许多资料说是有功功率除以视在功率,但我不知道这个有功功率是整流
吴圣中 LED专区
【技术干货】电源PCB设计技巧及案例分析
如今开关电源的体积越来越小,其工作频率和内部器件密集度则越来越高,这对电源PCB布局布线的抗干扰要求无疑是越来越严格。接下来,板儿妹和大家分享电源PCB设计在布局布线上的一些技巧和案例以便大家学习和参考。 电源PCB设计技巧 一、元器件布局 建立开关电源布局的最好方法与其电气设计相似,最佳设计流程如下: 1、放置变压器 2、设计电源开关电流回路 3、设计输出整流器电流回路 4、连接到
mwkjhl PCB设计
TWS真无线耳机充电仓专用开关充电芯片BQ25618/9详解
BQ25618/9是TI为TWS耳机充电仓专门开发的一款三合一(保护,充电及升压)的IIC控制开关充电芯片。 其中BQ25618跟BQ25619在规格上一致,区别在于BQ25618采用的是小型化的DSBGA封装,0.4mm的管脚间距,对生产工艺有较高的要求,而BQ25619采用的稍大一点的WQFN封装 方便方便线路布板,器件的封装尺寸见下图一。                     
qwqwqw2088 无线连接
嵌入式技术发展的一些思考
        20世纪70年代,微处理器的出现使得微型机可以嵌入到一个对象体系中,实现对对象体系的智能化控制。人们把实现对象体系智能化控制的计算机系统,称作嵌入式计算机系统。最初大家将嵌入式定义为:“以应用为中心,以计算机技术为基础,软件硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统”。随着微电子技术的飞速发展,计算机技术快速与各
华清远见创客学院 编程基础
TI官方提供的源代码---读BMP图像
可以从多核开发套件的图像处理demo文件夹C:\ti\mcsdk_2_01_02_06\demos\image_processing中导入工程,读BMP图像主要是两个文件mcip_bmp_utils.c和mcip_bmp_utils.h,我的代码也是“拿来主义”,大部分与TI源代码相同,只修改部分,以适用自己的需求,期间对代码进行了详细注释,大家可以参考下,理清思路。 分析程序首先
Jacktang 微控制器 MCU
大电流耐压27VDC-DC降压IC 兼容CX8505/FR9886系列
本帖最后由 lianyiwei11 于 2014-11-14 12:34 编辑 LY5523 3A、30V同步整流降压稳压器概述LY5523是一款单芯片的同步降压稳压器。在输入电压范围内可提供持续的3A负载电流,采用的电流控制模式有快的瞬态响应和不间断的过流检测,具有软启动、低压保护、过温保护、过流保护等功能,在待机模式下电流仅为0.3μA。特点最大工作电流达到3A输入电压范围4.5V~30V
lianyiwei11 电源技术

评论

登录/注册

意见反馈

求资源

回顶部

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
×