当前位置:首页 > 工业技术
ARM嵌入式Linux系统构建与驱动开发范例
ARM嵌入式Linux系统构建与驱动开发范例

ARM嵌入式Linux系统构建与驱动开发范例PDF电子书下载

工业技术

  • 电子书积分:13 积分如何计算积分?
  • 作 者:周立功,陈明计,陈渝著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2006
  • ISBN:7810777491
  • 页数:385 页
图书介绍:本书介绍μCLinux内核编程的一个方面——使用内核模块编写驱动程序。介绍了如何建立基于ARM7的交叉开发环境,以及如何向ARM7芯片上移植μCLinux等。
《ARM嵌入式Linux系统构建与驱动开发范例》目录

1.1 μClinux简介 1

第1章 μClinux内核简介 1

1.2 μClinux内核与传统Linux内核的比较 2

1.3 μClinux运行条件 5

1.4 μClinux的目录结构 5

1.5 μClinux的开发流程 6

1.5.1 编译μClinux内核 6

1.5.2 创建文件系统 8

本章小结 10

2.1 GNU Tools简介 11

第2章 使用GNU Tools建立μClinux开发环境 11

2.2 GCC编译器 13

2.2.1 GCC使用示例 14

2.2.2 编译内核时使用的编译选项 20

2.3 binutils二进制工具集 21

2.3.1 ar软件 22

2.3.2 nm软件 24

2.3.3 objcopy软件 27

2.3.4 objdump软件 29

2.3.5 readelf软件 32

2.4 ld链接器 33

2.4.1 ld选项 34

2.4.2 链接描述文件介绍 35

2.4.3 链接描述文件的语法 36

2.4.4 链接描述文件例子 39

2.5 make介绍 42

2.5.1 GNU make简介 42

2.5.2 Makefile及其语法 43

2.5.3 μClinux-dist2.4中的Makefile分析 52

2.6.1 GDB简介 58

2.6 GDB调试器 58

2.6.2 GDB调试程序示例 59

2.6.3 gdbserver介绍 62

2.7 GNU Tools的制作和安装 63

2.7.1 从源码制作交叉编译环境 63

2.7.2 安装二进制的交叉工具链arm-elf工具 63

2.8 使用GNU Tools编译μClinux内核和应用程序 64

2.8.1 使用GNU Tools编译μClinux内核 64

2.8.2 使用GNU Tools在μClinux中编译应用程序 68

本章小结 70

3.2 移植内核 71

3.1 选择开发环境 71

第3章 移植μClinux到LPC2200实例 71

3.2.1 增加体系架构和机型相关的代码 72

3.2.2 添加中断系统 74

3.2.3 增加其他代码 83

3.2.4 修改Makefile和配置菜单 95

3.3 移植驱动程序 98

3.3.1 时钟驱动程序的移植 98

3.3.2 串口驱动程序的移植 100

本章小结 101

4.1.1 驱动程序分类 102

第4章 μClinux设备驱动程序概述 102

4.1 设备驱动程序基础知识 102

4.1.2 加载和删除驱动程序 103

4.2 最简单的内核模块 104

4.2.1 内核模块的概念 104

4.2.2 编写内核模块 104

4.2.3 关于内核模块初始化(加载)函数 106

4.2.4 关于内核模块清除(卸载)函数 106

4.2.5 关于printk()函数 106

4.3.1 Makefile文件整体介绍 107

4.3 编写Makefile文件 107

4.3.2 Makefile文件中的变量 108

4.3.3 Makefile文件中的规则 109

本章小结 111

第5章 字符设备驱动程序初步 112

5.1 几个概念 112

5.1.1 关于主设备号和从设备号 112

5.1.2 关于设备节点、节点文件和设备文件 112

5.2 最简单的字符设备驱动程序 113

5.2.1 驱动程序代码 113

5.2.3 驱动程序的清除函数 116

5.2.2 驱动程序的初始化函数 116

5.2.4 保存设备信息的结构体 117

5.2.5 关于file结构 122

5.2.6 内核空间与用户空间交换数据 125

5.2.7 内核空间与I/O空间交换数据 126

5.2.8 ioctl()方法的编写 127

5.2.9 一些宏定义 130

5.2.10 关于头文件 130

5.3.3 接口函数 131

5.3.2 加载驱动程序 131

5.3 使用字符设备驱动程序 131

5.3.1 建立设备文件 131

5.2.11 其他说明 131

5.3.4 示例代码 137

5.3.5 编写Makefile文件 138

本章小结 139

第6章 GPIO(字符设备)驱动程序编写范例 140

6.1 在应用程序中使用GPIO驱动程序 140

6.1.1 建立设备文件 140

6.1.2 可使用的函数 140

6.1.3 提供给应用程序的头文件 141

6.1.4 设置GPIO口数据传输方向 142

6.1.5 让GPIO口输出指定电平 144

6.1.6 读GPIO口输出电平 146

6.1.7 读GPIO口引脚上的电平 147

6.2 编译 148

6.3 源码分析 149

6.3.1 初始化函数 149

6.3.2 清除函数 150

6.3.3 open()方法 150

6.3.5 ioctl()方法 151

6.3.4 release()方法 151

6.3.6 其他说明 158

本章小结 159

第7章 PWM(字符设备)驱动程序编写范例 160

7.1 在应用程序中使用PWM驱动程序 160

7.1.1 建立设备文件 160

7.1.2 可使用的函数 161

7.1.3 提供给应用程序的头文件 161

7.1.4 PWM总体控制 163

7.1.6 禁止某路PWM输出 164

7.1.5 允许某路PWM输出 164

7.1.7 设置某路PWM高电平宽度 165

7.2 编译 166

7.3 源码分析 167

7.3.1 为驱动程序增加中断服务程序 167

7.3.2 关于临界区 169

7.3.3 初始化函数 170

7.3.4 清除函数 170

7.3.5 open()方法及中断处理 171

7.3.6 release()方法 172

7.3.7 ioctl()方法 173

7.3.8 其他说明 179

本章小结 179

第8章 A/D(字符设备)驱动程序编写范例 180

8.1 在应用程序中使用A/D驱动程序 180

8.1.1 建立设备文件 180

8.1.2 可使用的函数 181

8.1.3 提供给应用程序的头文件 181

8.1.4 设置A/D工作频率 182

8.1.5 设置A/D转换精度 182

8.2 编译 183

8.1.6 读取A/D转换结果 183

8.3 源码分析 184

8.3.1 初始化函数 184

8.3.2 清除函数 185

8.3.3 open()方法 186

8.3.4 release()方法 187

8.3.5 ioctl()方法 188

8.3.6 read()方法 189

8.3.7 其他说明 191

本章小结 191

9.1.1 建立设备文件 192

第9章 SPI(字符设备)驱动程序编写范例 192

9.1 在应用程序中使用SPI驱动程序 192

9.1.2 使用SPI的特殊注意点 193

9.1.3 可使用的函数 193

9.1.4 提供给应用程序的头文件 194

9.1.5 设置SPI分频值 195

9.1.6 SPI时钟相位控制 195

9.1.7 SPI时钟极性控制 196

9.1.8 SPI数据传输顺序控制 197

9.1.10 发送同时接收一字节数据 198

9.1.9 开始和结束SPI操作 198

9.1.11 写数据到SPI从器件 199

9.1.12 从SPI从器件读数据 199

9.2 编译 200

9.3 源码分析 201

9.3.1 初始化函数 201

9.3.2 清除函数 201

9.3.3 open()方法 202

9.3.4 release()方法 204

9.3.5 ioctl()方法 205

9.3.6 write()方法 209

9.3.7 read()方法 211

9.3.8 其他说明 212

本章小结 212

第10章 I2C(字符设备)驱动程序编写范例 213

10.1 在应用程序中使用I2C总线驱动程序 213

10.1.1 建立设备文件 213

10.1.2 可使用的函数 214

10.1.3 提供给应用程序的头文件 214

10.1.5 写数据到I2C从器件 215

10.1.4 设置I2C总线频率 215

10.1.6 从I2C从器件读数据 216

10.2 编译 216

10.3 源码分析 217

10.3.1 初始化函数 217

10.3.2 清除函数 218

10.3.3 open()方法 218

10.3.4 release()方法 220

10.3.5 I2C中断处理 220

10.3.6 ioctl()方法 223

10.3.7 write()方法 225

10.3.8 read()方法 226

本章小结 227

10.3.9 其他说明 227

第11章 块设备驱动程序初步 228

11.1 几个概念 228

11.1.1 关于主设备号和从设备号 228

11.1.2 关于设备节点、节点文件和设备文件 228

11.2 最简单的块设备驱动程序 229

11.2.1 驱动程序代码 229

11.2.2 注册初始化函数和清除函数 231

11.2.4 驱动程序的清除函数 232

11.2.3 驱动程序的初始化函数 232

11.2.5 保存设备信息的结构体 233

11.2.6 一些宏定义 238

11.2.7 关于头文件 238

11.2.8 其他说明 239

11.3 使用块设备 239

11.3.1 建立设备文件 239

11.3.2 加载驱动程序 239

本章小结 240

11.3.5 卸载驱动程序 240

11.3.4 取消目录映射 240

11.3.3 把块设备(的某个分区)映射到指定的目录 240

第12章 简单的块设备编写范例 241

12.1 使用范例 241

12.1.1 范例简介 241

12.1.2 编译驱动程序 241

12.1.3 使用驱动程序 242

12.2 范例程序源码分析 244

12.2.1 关于主设备号 244

12.2.3 驱动程序的初始化函数 246

12.2.2 几个数据结构 246

12.2.4 驱动程序的清除函数 247

12.2.5 open()方法 248

12.2.6 release()方法 250

12.2.7 ioctl()方法 251

12.2.8 check_media_change()方法 253

12.2.9 revalidate()方法 253

12.2.10 关于数据传输 254

12.2.11 其他说明 260

本章小结 260

13.1.2 ZLG/FS简介 261

13.1.1 驱动程序简介 261

第13章 基于ZLG/FS驱动程序的通用块设备驱动程序 261

13.1 背景知识 261

13.2 ZLG/FS V1.10驱动程序使用指南 263

13.2.1 接口函数 263

13.2.2 参数 263

13.3 使用范例 266

13.3.1 编译驱动程序 266

13.3.2 使用驱动程序 267

13.4 范例程序源码分析 269

13.4.1 块设备信息结构体 270

13.4.2 注册ZLG/FS V1.10驱动程序 271

13.4.3 注销ZLG/FS V1.10驱动程序 271

13.4.4 关于分区设备 272

13.4.5 检测分区 273

13.4.6 驱动程序的初始化函数 276

13.4.7 驱动程序的清除函数 277

13.4.8 open()方法 278

13.4.9 release()方法 280

13.4.10 ioctl()方法 282

13.4.11 check_media change()方法 284

13.4.12 revalidate()方法 285

13.4.13 数据传输 286

13.4.14 其他说明 290

本章小结 290

第14章 转换ZLG/FS V1.10驱动为μClinux驱动 291

14.1 转换步骤 291

14.2 转换实例之CF卡驱动 295

14.3 转换实例之SD卡驱动 297

14.4 转换实例之ZLG/FFS驱动 299

14.5.1 驱动程序的初始化函数 302

14.5 模板源码分析 302

14.5.2 驱动程序的清除函数 303

14.5.3 open()方法 303

14.5.4 release()方法 304

14.5.5 get_info()方法 304

14.5.6 其他说明 306

本章小结 306

第15章 网络设备驱动程序初步 307

15.1 最简单的网络设备驱动程序 307

15.1.1 驱动程序代码 307

15.1.2 驱动程序的初始化函数 310

15.1.3 驱动程序的清除函数 311

15.1.4 保存设备信息的结构体 311

15.1.5 数据接收与中断服务程序 319

15.1.6 关于头文件 321

15.1.7 其他说明 321

15.2 使用网络设备驱动程序 321

本章小结 322

第16章 RTL8019驱动程序编写范例 323

16.1 硬件原理 323

16.2 使用源代码 325

16.3 源码分析 326

16.3.1 初始化函数 326

16.3.2 清除函数 327

16.3.3 init()方法 327

16.3.4 open()方法 329

16.3.5 stop()方法 332

16.3.6 set_config()方法 333

16.3.7 hard_start_xmit()方法 333

16.3.8 set_mac_address()方法 335

16.3.9 中断服务程序 336

本章小结 340

第17章 DM9000驱动程序编写范例 341

17.1 硬件原理 341

17.2 使用源代码 341

17.3 源码分析 344

17.3.1 头文件DM9000.h 344

17.3.2 底层硬件操作函数 346

17.3.3 初始化函数 348

17.3.4 清除函数 349

17.3.5 init()方法 349

17.3.6 open()方法 351

17.3.7 stop()方法 354

17.3.8 set_config()方法 355

17.3.9 hard_start_xmit()方法 356

17.3.10 set_mac_address()方法 357

17.3.11 中断服务程序 358

本章小结 360

附录A 版权声明及许可协议 363

附录B SmartARM2200教学实验开发平台 363

B.1 产品概述 363

B.3 产品特点 364

B.2 产品目标 364

B.4 产品组成 368

B.5 硬件结构说明 369

B.6 应用环境 369

B.7 产品部件规格描述 369

附录C MagicARM2200教学实验开发平台 370

C.1 产品概述 370

C.2 产品目标 371

C.3 产品特点 371

C.4 产品组成 376

C.7 产品部件规格描述 377

C.5 硬件结构说明 377

C.6 应用环境 377

附录D MagicARM2200-S教学实验开发平台 378

D.1 产品概述 378

D.2 产品目标 379

D.3 产品特点 379

D.4 产品组成 382

D.5 硬件结构说明 384

D.6 应用环境 384

D.7 产品部件规格描述 384

返回顶部