●第1 章 实验平台及背景知识 2
11 本书使用的开发板及操作系统 2
111 龙芯系列芯片 3
112 龙芯1 号微处理器 4
113 智龙开发板资源 5
114 智龙开发板使用的操作系统 5
115 龙芯派一代开发板资源 8
116 龙芯派一代与智龙开发板的差异 10
117 龙芯派一代开发板操作与启动盘制作 11
118 龙芯派二代开发板操作 20
12 全龙芯的交叉编译平台 24
121 在龙芯3A3000 主机Loongnix 系统中
搭建龙芯1C 开发环境 24
122 中标麒麟操作系统 27
123 深度操作系统 28
124 普华操作系统 29
13 安装Ubuntu/Fedora 及其他程序 31
14 虚拟机常用目录 31
15 Windows 下需要安装的其他软件 32
16 一点常识 34
17 本书使用的网络资源 35
第2 章 虚拟机安装Linux 操作系统 37
21 下载VMware Player 并安装 37
22 下载Ubuntu 桌面系统 37
23 安装Ubuntu 37
24 进入终端的方法 39
25 建立root 用户并自动登录 39
26 安装VMware Tools 40
27 安装必要的软件 42
28 查看相关版本和信息 43
29 虚拟机Linux 系统中TFTP 服务搭建 44
第3 章 安装工具链、编译内核、
制作文件系统 47
31 安装交叉编译工具gcc-43-ls232 47
32 编译和烧写 PMON 48
33 编译和烧写内核 49
34 制作根文件系统 51
341 配置和编译BusyBox 51
342 创建文件系统目录 53
343 创建系统配置文件 53
344 复制库文件 56
35 制作根文件系统镜像 58
351 安装镜像文件制作工具 58
352 制作根文件系统镜像文件 60
353 烧写根文件系统 61
第4 章 使用buildroot 构建根文件系统 62
41 获取buildroot 62
42 系统构建 62
43 烧写根文件系统镜像 63
44 根文件系统软件包的定制 63
45 buildroot 构建交叉编译工具链 67
第5 章 简单应用编程Hello World 69
51 智龙开发板上运行程序 69
52 友善之臂开发板mini2440 上
运行程序 70
53 ARM 架构应用程序的移植 71
第6 章 简单驱动程序编写 74
61 驱动的原理及编写流程 74
62 驱动模块的加载与卸载 75
63 最简单的Linux 驱动 75
64 驱动的编译和执行 76
65 内核配置驱动 80
66 LED 子系统剖析 82
67 led_trigger 接口分析 89
中级篇应用
第7 章 Linux 应用编程 93
71 Linux 应用编程的基础知识 93
72 文件I/O 编程 93
73 进程和线程 96
74 多进程操作 97
75 进程间的通信 99
751 管道 99
752 消息队列 105
753 共享内存 107
76 多线程操作 109
761 线程控制 109
762 线程属性 111
763 互斥锁113
764 信号量117
77 网络编程 119
771 网络编程基础概念 119
772 网络编程实例 122
773 网络编程小结 132
78 Open 使用 132
781 Open 简介 132
782 Open 在智龙上的移植 133
783 生成证书和私钥 133
784 服务器端启动 服务 135
785 客户端连接 服务器 136
786 在虚拟机中测试连接 137
787 在普华桌面操作系统中测试连接 138
79 应用编程总结 140
第8 章 开发板硬件接口编程 141
81 点亮一个LED 灯 141
811 LED 的操作接口 141
812 LED 控制 142
813 在程序中操作LED 灯 142
82 GPIO 硬件编程 143
821 GPIO 和sysfs 操作接口 144
822 GPIO 基本操作 145
823 在C 程序中操作GPIO 146
83 按键应用层编程 148
831 按键操作接口 148
832 在程序中操作按键 151
84 U 盘和SD 卡 152
841 U 盘 152
842 SD 卡 153
85 RTC 时钟 154
86 串口读写 155
861 串口硬件说明 155
862 用minicom 操作串口 156
863 用接口操作串口 157
864 在程序中操作串口 158
高级篇驱动
第9 章 NFS 文件系统搭建 163
91 在虚拟机端安装NFS 163
92 配置虚拟机NFS 164
93 配置开发板NFS 165
94 使用NFS 166
941 在开发板上挂载NFS 服务 166
942 建立网络文件系统 166
第10 章 配置Eclipse 编程 168
101 用Eclipse 开发应用程序 168
102 用Eclipse 开发内核模块 170
第11 章 一个简单的字符设备驱动 175
111 主设备号和次设备号 175
1111 设备编号的表达 176
1112 分配和释放设备编号 176
112 重要的数据结构 178
113 字符设备的注册 181
114 具体实例 182
1141 file_operations 结构体设计 185
1142 模块初始化、模块卸载函数实现 186
1143 读写函数的实现 187
1144 驱动程序编译 187
1145 驱动程序编译和加载 188
1146 驱动程序测试 188
115 一些有用的资料 189
116 修改为模块注销自动删除设备节点 190
第12 章 misc 杂项设备驱动 191
121 misc 使用的结构体和函数 191
122 misc 设备的优点 193
123 内核源码 193
124 具体实例 195
第13 章 PWM控制输出 199
131 利用 LED_PWM 199
132 自己编写驱动文件 205
第14 章 I2C 总线和设备驱动 214
141 I2C 总线概述 214
142 Linux I2C 设备驱动 214
1421 I2C adapter 215
1422 I2C 子系统驱动模块的API 220
1423 I2C client 的注册 220
1424 I2C driver 224
1425 I2C adapter 的注册 225
1426 I2C tools 的使用 228
1427 内核模块分析 231
143 实例分析at24cxx 232
144 实例分析DS3231 234
第15 章 SPI 总线和设备驱动 236
151 SPI 总线概述 236
1511 硬件结构 236
1512 工作时序 237
152 Linux SPI 设备驱动软件架构 238
153 SPI 通用接口层 238
1531 SPI 总线和类 238
1532 spi_master 结构 239
1533 spi_device 结构 240
1534 spi_driver 结构 241
1535 spi_message 和spi_transfer 结构 242
154 SPI 控制器驱动 244
1541 定义控制器设备 244
1542 注册SPI 控制器的platform_driver 246
1543 注册spi_master 246
155 SPI 数据传输 249
156 实例分析:驱动编写之SPI
设备静态注册spidevc 250
157 实例分析:驱动编写之SPI
设备动态注册spikec 253
158 编写测试程序 260
第16 章 CAN 总线和设备驱动 266
161 智龙开发板硬件CAN 接口 266
162 Socket CAN 268
163 测试工具 269
164 Socket CAN 在智龙上的测试:
使用工具iproute2 269
165 Socket CAN 在智龙上的测试:
使用工具canutils 273
166 编写CAN 的socket 收发
测试程序canapp 277
1661 程序设计说明 277
1662 程序发送示例 280
1663 程序接收示例 281
1664 发送和接收测试 282
第17 章 嵌入式GUI 编程 284
171 使用外部LCD 控制器的
LCD 编程 284
1711 硬件接口 284
1712 GPIO 口操作函数 284
1713 LCD 操作 293
1714 编写Makefile 294
1715 代码及运行结果 295
172 基于Qt 使用内部LCD 控制器的
GUI 编程 302
1721 关于Qt 302
1722 Qt 的移植过程 303
1723 配置buildroot 304
1724 下载并运行例程 306
1725 搭建Qt 环境及编写应用程序 308
1726 PMON 及内核源码的修改 313
1727 支持键盘输入和串口、LCD 同时输出 314
第18 章 ADC 驱动及应用 315
181 配置ADC 驱动 315
182 硬件管脚分配 316
183 应用测试 316
184 应用层编程 316
第19 章 内核访问外设I/O 资源 319
191 MIPS 的内存映射 319
192 动态映射方式 320
193 静态映射方式 326
194 mmap 内存映射 328
1941 mmap 系统调用 328
1942 系统调用mmap 用于共享内存的
两种方式 329
1943 mmap 进行内存映射的原理 329
1944 内存映射的步骤 333
195 mmap 编程示例 333
第20 章 PMON 源码编译、烧写、
启动及裸机编程 335
201 PMON 源码分析 335
202 PMON 烧写 336
2021 采用编程器更新PMON 到SPI Flash 336
2022 网络更新PMON 到SPI Flash 336
2023 网络更新PMON 到NAND Flash 337
203 NAND Flash 存储器分区 337
204 内核启动过程 338
2041 内核从NAND Flash 中加载 338
2042 内核从SD Card 中加载 339
2043 内核从tftp 中加载 340
2044 设置PMON 的IP 地址 340
205 PMON 的内置命令 341
206 PMON 龙芯官方参考 342
207 PMON 裸机编程 342
第21 章 在Windows 环境下搭建龙芯1C
开发环境及龙芯1C 库 344
211 交叉编译工具链的下载和安装 344
212 MinGW 的下载和安装 345
213 编译 347
214 调试和运行 348
215 运行点灯程序 349
216 龙芯1C 库 350
第22 章 智龙开发板应用及其他龙芯开
发板 351
221 智龙开发板应用例程 351
2211 WiFi 小车应用 351
2212 北斗导航应用 351
2213 龙印3D 打印机 352
2214 LCD 扩展板 353
2215 其他应用开发例程 353
222 龙芯机器人控制器 354
2221 硬件结构 354
2222 烧录内核与根文件系统 354
2223 机器人控制器的PWM 输出操作 356
2224 机器人控制器的应用 357
223 智龙开发板在高校和社区中的
推广应用 357
2231 高校应用 357
2232 龙芯CPU 高校开源计划 358
2233 “龙芯杯”全国大学生计算机系统
能力培养大赛 359
2234 龙芯俱乐部开源社区 359
2235 基于龙芯平台的嵌入式系统设计竞赛等
高校比赛活动 360
第23 章 Linux 内核的配置和编译 362
231 安装图形化配置工具Ncurses 362
232 运行图形化配置界面 362
233 编译、烧写Linux 内核 363
234 开发板各模块驱动源码 363
235 配置内核各模块驱动 364
2351 配置网卡驱动 364
2352 配置NFS 支持 367
2353 配置串口驱动 369
2354 配置LCD 驱动 370
2355 配置按键驱动 372
2356 配置SD 卡驱动 374
2357 配置U 盘驱动 375
2358 配置USB 鼠标和键盘驱动 377
2359 配置USB OTG 驱动 380
23510 配置音频驱动 381
23511 配置RTC 驱动 382
23512 配置PWM 驱动 384
23513 配置LED 驱动 386
23514 配置红外驱动 387
23515 配置CAN 总线驱动 388
23516 配置SPI 控制器驱动 390
23517 配置I2C 控制器驱动 391
23518 配置ADC 驱动 392
23519 配置GPIO 驱动 393
23520 配置看门狗驱动 394
参考文献 396
附录1 常用Linux 命令 397
附录2 VIM 图例及常用操作 410
附录3 BusyBox 的下载及配置 411
附录4 PMON 常用命令 412
附录5 创建与驱动程序对应的设备节点 415
附录6 Linux 文件结构 416
附录7 git 命令 418
附录8 在PMON 中使用命令devcp 进行
坏块处理和支持yaffs2 烧写 420
附录9 智龙开发板V2 电路原理图 421
附录10 智龙开发板V3 电路原理图 422
附录11 LCD 扩展板(外部控制器)
原理图 423
附录12 LCD 扩展板(内部控制器)
原理图 424
附录13 机器人控制器电路原理图 425
附录14 第一届全国大学生嵌入式芯片设计
与应用竞赛龙芯平台获奖名单及
作品 426
龙芯系列微处理器是中国拥有自主知识产权的中央处理器,中国科学院计算技术研究所从2001 年开始研制龙芯系列处理器,于2010 年正式成立龙芯中科技术有限公司(以下简称龙芯中科),主要产品包括龙芯1 号CPU、龙芯2 号CPU 及龙芯3 号CPU。本书是基于龙芯俱乐部与龙芯中科合作开发的南京龙众创芯电子科技有限公司承制的智龙开发板,围绕龙芯1 号芯片LS1C 进行嵌入式系统开发讲解,也包含龙芯中科的2K 龙芯派、南京龙众创芯电子科技有限公司
的龙芯3A3000 开发者计算机的内容。
本书内容共分3 篇。基础篇包含实验平台和开发环境的搭建。中级篇为Linux 基础应用编程,包含线程、信号、网络等基本操作。高级篇包含开发板硬件编程、驱动程序编写等高级操作。附录主要为嵌入式系统开发常用资料和智龙开发板的电路原理图。本书结合实践案例及应用场景,按照嵌入式系统的开发流程组织内容,使读者能熟练掌握从等