当前位置: 首页 > 新闻资讯 > 嵌入式linux与物联网软件开发 c语言内核深度解析(异步图书出品)

嵌入式linux与物联网软件开发 c语言内核深度解析(异步图书出品)

发布时间:2024-04-02 10:35:10

  1. 请教嵌入式linux应用层开发主要做什么
  2. 嵌入式linux应用开发需要了解什么
  3. 嵌入式Linux设备驱动开发详解的目录

一、请教嵌入式linux应用层开发主要做什么

一:c语言 嵌入式linux工程师的学习需要具备一定的c语言基础,c语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解c语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。

二:linux基础 linux操作系统的概念、安装方法,详细了解linux下的目录结构、基本命令、编辑器vi ,编译器gcc,调试器gdb和 make 项目管理工具, shell makefile脚本编写等知识,嵌入式开发环境的搭建。

三:linux系统编程 重点学习标准i/o库,linux多任务编程中的多进程和多线程,以及进程间通信(pipe、fifo、消息队列、共享内存、signal、信号量等),同步与互斥对共享资源访问控制等重要知识,主要提升对linux应用开发的理解和代码调试的能力。

四:linux网络编程 计算机网络在嵌入式linux系统应用开发过程中使用非常广泛,通过linux网络发展、tcp/ip协议、socket编程、tcp网络编程、udp网络编程、web编程开发等方面入手,全面了解linux网络应用程序开发。重点学习网络编程相关api,熟练掌握tcp协议服务器的编程方法和并发服务器的实现,了解http协议及其实现方法,熟悉udp广播、多播的原理及编程方法,掌握混合c/s架构网络通信系统的设计,熟悉html,javascript等web编程技术及实现方法。

五:数据结构与算法 数据结构及算法在嵌入式底层驱动、通信协议、及各种引擎开发中会得到大量应用,对其掌握的好坏直接影响程序的效率、简洁及健壮性。此阶段的学习要重点理解数据结构与算法的基础内容,包括顺序表、链表、队列、栈、树、图、哈希表、各种查找排序算法等应用及其c语言实现过程。

六:c++ 、qt c++是linux应用开发主要语言之一,本阶段重点掌握面向对象编程的基本思想以及c++的重要内容。图形界面编程是嵌入式开发中非常重要的一个环节。由于qt具有跨平台、面向对象、丰富api、支持2d/3d渲染、支持xml、多国语等强大功能,在嵌入式领域的gui开发中得到了广范的应用,在本阶段通过基于qt图形库的学习使学员可以熟练编写gui程序,并移植qt应用程序到cortex-a8平台。包括ide使用、qt部件及布局管理器、信息与槽机制的应用、鼠标、键盘及绘图事件处理及文件处理的应用。

七:cortex a8 、linux 平台开发 通过基于arm cortex-a8处理s5pv210了解芯片手册的基本阅读技巧,掌握s5pv210系统资源、时钟控制器、电源管理、异常中断控制器、nand flash控制器等模块,为底层平台搭建做好准备。linux平台包括内核裁减、内核移植、交叉编译、gnu工具使用、内核调试、bootloader介绍、制作与原理分析、根文件系统制作以及向内核中添加自己的模块,并在s5pv210实验平台上运行自己制作的linux系统,集成部署linux系统整个流程。同时了解android操作系统开发流程。android系统是基于linux平台的开源操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件,目前它的应用不再局限于移动终端,还包括数据电视、机顶盒、pda等消费类电子产品。

八:驱动开发 驱动程序设计是嵌入式linux开发工作中重要的一部分,也是比较困难的一部分。本阶段的学习要熟悉linux的内核机制、驱动程序与用户级应用程序的接口,掌握系统对设备的并发操作。熟悉所开发硬件的工作原理,具备arm硬件接口的基础知识,熟悉arm cortex-a8处理器s5pv210各资源、掌握linux设备驱动原理框架,熟悉工程中常见linux高级字符设备、块设备、网络设备、usb设备等驱动开发,在工作中能独立胜任底层驱动开发。

以上就是列出的关于一名合格嵌入式linux开发工程师所必学的理论知识,其实,作为一个嵌入式开发人员,专业知识和项目经验同样重要,所以在我们的理论学习中也要有一定的项目实践,锻炼自己的项目开发能力。

二、嵌入式linux应用开发需要了解什么

一般情况下,如果想搞嵌入式应用开发,常用的语言主要是c语言,对硬件的掌握,也要懂的怎么看电路原理图,怎么设置寄存器,以及其他硬件接口。这对你搞驱动开发,应用开发非常重要。对于你最后的问题,你想搞linux嵌入式开发,当然要在linxu系统开发环境下了。

三、嵌入式Linux设备驱动开发详解的目录

第1章 嵌入式系统与驱动程序 1

本章目标 1

1.1 嵌入式系统概述 1

1.1.1 嵌入式系统的概念 1

1.1.2 嵌入式系统的特点 2

1.1.3 嵌入式系统的体系结构 2

1.2 嵌入式处理器介绍 4

1.2.1 嵌入式处理器分类 4

1.2.2 arm概述 5

1.2.3 arm系列芯片简介 5

1.3 嵌入式操作系统介绍 7

1.3.1 主流嵌入式操作系统 7

1.3.2 嵌入式系统的发展状况 8

1.3.3 嵌入式linux介绍 8

1.3.4 嵌入式系统开发环境的建立 9

1.3.5 嵌入式软件开发 10

1.4 嵌入式linux驱动程序 12

1.4.1 嵌入式linux的内核空间和用户空间 12

1.4.2 嵌入式linux的文件系统 12

1.4.3 嵌入式linux的设备管理 14

1.4.4 嵌入式linux的驱动程序 16

1.5 知识索引 20

1.6 思考与练习 21

第2章 简单的字符设备驱动程序 23

本章目标 23

2.1 嵌入式linux字符设备的驱动程序结构 23

2.1.1 嵌入式linux驱动程序常用的头文件 24

2.1.2 file_operations结构体 24

2.1.3 字符设备驱动程序的入口 25

2.1.4 驱动程序的设备注册 26

2.2 设备驱动程序中的具体问题 27

2.2.1 i/o端口 28

2.2.2 内存操作 29

2.2.3 中断处理 29

2.3 led的驱动程序实例及测试 30

2.3.1 led i/o端口设置 30

2.3.2 led硬件电路设计 32

2.3.3 led驱动程序设计 33

2.3.4 led测试程序设计 36

2.4 嵌入式linux中断处理驱动程序及测试 37

2.4.1 中断处理过程 37

2.4.2 中断向量表 39

2.4.3 中断的处理模式 39

2.4.4 中断的优先级 40

2.4.5 中断的嵌套 40

2.4.6 中断源的扩展 40

2.4.7 中断控制寄存器的设置 41

2.5 按键中断的驱动程序实例 45

2.5.1 按键中断的电路设计 45

2.5.2 按键中断的驱动程序设计 45

2.6 知识索引 48

2.7 思考与练习 49

第3章 数字显示驱动程序 50

本章目标 50

3.1 数字显示器 50

3.1.1 数码管简介 50

3.1.2 数码管的分类 51

3.1.3 数码管显示原理 51

3.2 数码管显示电路的硬件设计 52

3.2.1 译码器的使用 52

3.2.2 数码管的驱动方式 53

3.2.3 串/并变换的译码设计 55

3.3 数码管驱动程序实例 56

3.3.1 驱动程序的初始化和卸载模块 56

3.3.2 文件操作结构模块 57

3.3.3 数码管的打开模块 57

3.3.4 数码管的读写模块 58

3.3.5 数码管的i/o控制模块 58

3.3.6 数码管的退出模块 58

3.3.7 驱动程序的模块加载和卸载 59

3.4 数码管显示电路测试程序设计 60

3.4.1 数码管测试设计 60

3.4.2 数码管测试程序 60

3.4.3 数码管测试效果 61

3.5 知识索引 61

3.6 思考与练习 62

第4章 键盘驱动程序 63

本章目标 63

4.1 键盘接口概述 63

4.1.1 键盘的分类 63

4.1.2 键盘的防抖 65

4.1.3 键盘的扫描 65

4.1.4 键盘的缓冲算法 67

4.2 键盘的驱动设计实例 67

4.2.1 锁存器和缓冲器扩展键盘 67

4.2.2 锁存器和缓冲器的接口 68

4.2.3 锁存器和缓冲器扩展键盘驱动程序设计 69

4.2.4 锁存器和缓冲器扩展键盘测试程序设计 71

4.3 智能控制芯片hd7279扩展键盘 72

4.3.1 hd7279的电路设计 72

4.3.2 hd7279的指令介绍 73

4.3.3 hd7279的串行接口 74

4.3.4 hd7279的驱动程序设计 75

4.3.5 hd7279的测试程序设计 84

4.4 知识索引 85

4.5 思考与练习 85

第5章 a/d驱动程序 86

本章目标 86

5.1 a/d转换的过程 86

5.1.1 采样和保持 86

5.1.2 量化和编码 88

5.1.3 adc的分类 89

5.2 a/d转换器的基本原理 89

5.2.1 逐次逼近型a/d转换器 89

5.2.2 双积分型a/d转换器 90

5.2.3 v/f和f/v型转换器 93

5.2.4 其他a/d转换器 95

5.3 a/d转换器接口技术 97

5.3.1 adc的主要参数及意义 97

5.3.2 adc的电路选择方法 98

5.3.3 adc实际应用中的问题 99

5.4 s3c2410 a/d转换驱动设计实例 99

5.4.1 s3c2410的a/d转换电路 99

5.4.2 s3c2410x的a/d转换控制寄存器 100

5.4.3 s3c2410x的a/d转换数据寄存器 101

5.4.4 s3c2410x中a/d转换驱动程序的设计 102

5.4.5 s3c2410x中a/d转换测试程序的设计 105

5.5 知识索引 106

5.6 思考与练习 107

第6章 d/a驱动程序 108

本章目标 108

6.1 d/a的原理介绍 108

6.1.1 d/a转换的概念及基本原理 108

6.1.2 电子模拟开关 109

6.1.3 d/a转换器的基本结构 110

6.1.4 d/a转换的静态参数 114

6.1.5 d/a转换的动态参数 115

6.2 d/a转换的硬件电路设计 116

6.2.1 d/a转换的接口技术 116

6.2.2 d/a转换芯片介绍 117

6.2.3 d/a转换的电路设计 118

6.3 d/a转换器的驱动程序实例 118

6.3.1 d/a驱动程序中的宏定义 118

6.3.2 d/a的模块加载 118

6.3.3 d/a转换器的文件操作模块 119

6.3.4 d/a转换器的读写控制模块 120

6.3.5 d/a转换器的打开、退出模块 120

6.4 测试程序的设计 120

6.4.1 d/a测试程序中的宏定义 121

6.4.2 d/a测试程序的主函数 121

6.4.3 d/a测试程序中的功能函数 122

6.4.4 d/a测试程序中的功能打印函数 123

6.4.5 d/a测试程序中的波形生成函数 123

6.4.6 d/a测试程序的效果 124

6.5 知识索引 125

6.6 思考与练习 125

第7章 lcd驱动程序 126

本章目标 126

7.1 lcd显示器概述 126

7.1.1 液晶 126

7.1.2 lcd显示屏的背光 127

7.1.3 lcd显示器的分类 127

7.1.4 lcd的显示原理 127

7.1.5 lcd的驱动方式 130

7.1.6 lcd的常用指标 131

7.2 lcd的显示接口 131

7.2.1 灰度stn的时序 132

7.2.2 彩色stn的时序 133

7.2.3 tft的时序 134

7.3 嵌入式处理器的lcd控制器 136

7.3.1 lcd控制器 136

7.3.2 lcd控制器的设置 137

7.3.3 lcd的字符显示缓存 139

7.4 lcd的驱动程序设计 140

7.4.1 lcd驱动程序相关的宏定义 140

7.4.2 lcd驱动程序的底层操作函数 142

7.4.3 lcd驱动程序提供的api 145

7.4.4 lcd驱动程序的模块化加载 151

7.4.5 lcd的测试程序 152

7.5 基于framebuffer的lcd驱动程序实例 155

7.5.1 framebuffer概述 155

7.5.2 lcd的电路连接 155

7.5.3 framebuffer设备驱动程序的结构 156

7.5.4 framebuffer设备驱动程序的设计 159

7.5.5 framebuffer设备测试程序的设计 164

7.5.6 嵌入式linux常用的gui 166

7.6 知识索引 166

7.7 思考与练习 167

第8章 触摸屏驱动程序 168

本章目标 168

8.1 触摸屏概述 168

8.2 触摸屏的分类 168

8.2.1 电阻技术触摸屏 168

8.2.2 表面声波技术触摸屏 169

8.2.3 电容电感技术触摸屏 170

8.2.4 红外线技术触摸屏 170

8.3 触摸屏的特性 171

8.3.1 透明度和色彩失真 171

8.3.2 反光性 171

8.3.3 清晰度 171

8.3.4 漂移 172

8.3.5 检测和定位 172

8.4 触摸屏的硬件电路设计 172

8.4.1 电阻式触摸屏的电路原理 172

8.4.2 电阻式触摸屏原点的定位 173

8.4.3 电阻式触摸屏的电路连接 174

8.5 触摸屏的驱动程序实例 176

8.5.1 触摸屏接口的模式 176

8.5.2 a/d转换和触摸屏寄存器的设置 177

8.5.3 触摸屏的坐标 179

8.5.4 触摸屏的电路连接 180

8.5.5 触摸屏的驱动程序接口 181

8.6 测试程序的设计 182

8.6.1 触摸屏的数据定义 183

8.6.2 触摸屏的数据处理 183

8.6.3 触摸屏的运行测试 185

8.7 知识索引 186

8.8 思考与练习 187

第9章 can总线驱动程序 188

本章目标 188

9.1 can总线接口设计 188

9.1.1 can总线概述 188

9.1.2 can的工作特点及主要优点 189

9.1.3 can总线的电气特征和mac帧结构 189

9.2 嵌入式处理器上can总线接口的扩展 190

9.2.1 sja1000简介 190

9.2.2 sja1000扩展 191

9.3 sja1000扩展can总线接口的设计 192

9.3.1 can 控制器sja1000的操作模式 192

9.3.2 can控制器sja1000的特征功能 193

9.3.3 can 控制器sja1000的basic can模式设置 194

9.4 sja1000扩展can总线接口的通信 196

9.4.1 通过can总线建立通信的步骤 196

9.4.2 sja1000的初始化 196

9.4.3 驱动程序的结构设计 198

9.4.4 驱动程序init、exit、open、close函数的实现 200

9.4.5 驱动程序read、write函数的实现 201

9.4.6 驱动程序interrupt、ioctl函数实现 202

9.4.7 测试程序的编写 202

9.5 驱动程序的加载 204

9.6 知识索引 204

9.7 思考与练习 205

第10章 iic总线驱动程序 206

本章目标 206

10.1 iic总线概述 206

10.1.1 iic总线介绍 206

10.1.2 iic总线引入的原因 206

10.1.3 iic总线的特点 206

10.1.4 iic总线的基本结构 207

10.1.5 iic总线的术语 207

10.1.6 iic总线的工作 208

10.1.7 iic总线的竞争仲裁 209

10.1.8 iic总线的工作流程 210

10.2 嵌入式处理器的iic接口 211

10.2.1 iic总线控制寄存器 212

10.2.2 iic总线控制/状态寄存器 213

10.2.3 iic总线地址寄存器 214

10.2.4 iic总线移位数据寄存器 214

10.2.5 s3c2410中与iic对应的i/o端口 215

10.3 基于iic的键盘芯片应用 216

10.3.1 zlg7290的功能 217

10.3.2 zlg7290的控制方式 218

10.3.3 zlg7290的寄存器 218

10.3.4 zlg7290的通信接口 219

10.3.5 zlg7290的指令介绍 219

10.4 iic总线驱动程序实例 221

10.4.1 zlg7290的电路连接 221

10.4.2 zlg7290的通信流程 223

10.4.3 zlg7290驱动中变量的定义 225

10.4.4 zlg7290驱动中实时时钟的改变 226

10.4.5 zlg7290和iic寄存器的初始化 227

10.4.6 zlg7290驱动程序的模块化 228

10.4.7 zlg7290的文件操作结构 228

10.5 iic总线的测试程序 230

10.6 知识索引 231

10.7 思考与练习 231

第11章 音频总线驱动程序 232

本章目标 232

11.1 音频总线接口概述 232

11.1.1 音频的采样精度 233

11.1.2 音频编码 233

11.2 iis音频总线接口 233

11.2.1 iis总线的物理连接 233

11.2.2 iis的总线协议 234

11.2.3 iis总线的硬件设计 235

11.2.4 iis总线的寄存器 236

11.3 ac97音频总线接口 239

11.4 iis总线的驱动程序设计 240

11.4.1 音频设备基础知识 240

11.4.2 音频设备文件 241

11.4.3 wav声音文件 243

11.4.4 音频设备和驱动程序的通信 243

11.4.5 设备的初始化和加载 244

11.4.6 dma的操作和宏定义 246

11.4.7 audio设备文件的操作 248

11.4.8 mixer设备文件的操作 260

11.5 音频驱动程序的测试 262

11.6 知识索引 262

11.7 思考与练习 263

第12章 ide接口驱动程序 264

本章目标 264

12.1 ide接口概述 264

12.1.1 硬盘知识介绍 264

12.1.2 ide接口标准 267

12.1.3 ide接口的传输模式 269

12.1.4 ide接口寄存器 269

12.2 ide接口驱动程序的移植 271

12.2.1 嵌入式linux下ide驱动程序接口 271

12.2.2 嵌入式linux下ide驱动程序 272

12.2.3 ide硬盘的读/写操作 274

12.3 ide驱动程序测试 282

12.3.1 磁盘文件系统简介 283

12.3.2 ide分区测试 283

12.4 知识索引 285

12.5 思考与练习 285

第13章 闪存芯片的驱动程序 286

本章目标 286

13.1 闪存芯片概述 286

13.1.1 闪存芯片的物理特性 286

13.1.2 嵌入式文件系统概述 289

13.1.3 mtd体系介绍 289

13.1.4 flash专有名词 291

13.2 nand flash 291

13.2.1 nand flash的结构 291

13.2.2 nand flash的操作 292

13.2.3 nand flash控制器 294

13.2.4 nand flash的时序 296

13.2.5 nand flash的驱动程序实例 297

13.3 nor flash 301

13.3.1 nor flash的结构 301

13.3.2 nor flash的操作 302

13.3.3 nor flash的驱动程序实例 303

13.4 基于闪存的文件系统 307

13.5 知识索引 309

13.6 思考与练习 310

第14章 usb 设备驱动程序 311

本章目标 311

14.1 usb接口概述 311

14.1.1 usb系统 311

14.1.2 usb的电气特性 312

14.1.3 usb总线的拓扑结构 313

14.1.4 usb的通信协议 313

14.2 嵌入式系统中usb的使用 315

14.2.1 ohci概述 315

14.2.2 host接口硬件设计 316

14.3 嵌入式系统中usb设备的驱动程序设计 316

14.3.1

Top