嵌入式Linux系统设计及应用--基于国产龙芯SoC
详情
龙芯系列微处理器是中国拥有自主知识产权的中央处理器,中国科学院计算技术研究所从2001 年开始研制龙芯系列处理器,于2010 年正式成立龙芯中科技术有限公司(以下简称龙芯中科),主要产品包括龙芯1 号CPU、龙芯2 号CPU 及龙芯3 号CPU。本书是基于龙芯俱乐部与龙芯中科合作开发的南京龙众创芯电子科技有限公司承制的智龙开发板,围绕龙芯1 号芯片LS1C 进行嵌入式系统开发讲解,也包含龙芯中科的2K 龙芯派、南京龙众创芯电子科技有限公司 的龙芯3A3000 开发者计算机的内容。 本书内容共分3 篇。基础篇包含实验平台和开发环境的搭建。中级篇为Linux 基础应用编程,包含线程、信号、网络等基本操作。高级篇包含开发板硬件编程、驱动程序编写等高级操作。附录主要为嵌入式系统开发常用资料和智龙开发板的电路原理图。本书结合实践案例及应用场景,按照嵌入式系统的开发流程组织内容,使读者能熟练掌握从开发环境搭建到编写完整工程的流程。同时提供内核源码及实例代码,并给出测试结果,方便读者参考。 本书具有广泛的适用性,不仅可用于MIPS 架构的龙芯1 号芯片的嵌入式系统开发,还可用于基于Linux 操作系统的嵌入式系统学习。其中在内核原理、应用程序编写,如虚拟机编译、程序下载、调试、应用开发、内核裁减等方面与同类ARM 架构芯片相比,开发过程是通用的。本书可作为应用型本科、高职高专院校嵌入式系统方面的课程教材,也可作为相关开发人员的自学教材和参考手册。 |
|
孙冬梅(1975.1-):博士后,副教授,2004年获南京理工大学测试计量技术及仪器专业博士学位;2011.1~2015.12进入南京工业大学“动力工程及工程热物理”博士后流动站,从事研究工作。现任江苏省仪器仪表学会理事,江苏省射频识别技术标准化技术委员会委员。 2012年主持了江苏省博士后基金“大型风电回转支承多源振动信号故障诊断的数据融合方法研究”;2009年主持江苏省高校自然科学基金项目“基于热导式微流量智能传感器的分析仪器开发研究”。参与了多项国家自然科学基金开发研究,完成了多项科研项目,有丰富的理论及实践经验;近几年来,在国内外核心期刊上发表学术论文50多篇。
|
|
随着国产芯片的崛起,需要更多的开发者熟悉基于国产处理器的Linux平台。龙芯是一款具有自主知识产权的国产处理器,中国科学院计算技术研究所从2001年开始研制龙芯系列处理器。本书从龙芯SoC架构开始,较为系统全面地介绍了嵌入式Linux的构成、开发、编译和调优等各个环节的知识,内容详实,示例丰富。本书可作为应用型本科、高职高专院校嵌入式系统方面的课程教材,也可作为相关开发人员的自学教材和参考手册。 |
|
|||||||||||||
第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 OpenVPN 使用 132 781 OpenVPN 简介 132 782 OpenVPN 在智龙上的移植 133 783 生成私钥 133 784 服务器端启动VPN 服务 135 785 客户端连接VPN 服务器 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
|