登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書

『簡體書』嵌入式Linux系统设计及应用——基于国产龙芯SoC

書城自編碼: 3608346
分類:簡體書→大陸圖書→計算機/網絡操作系統/系統開發
作者: 孙冬梅,石南
國際書號(ISBN): 9787302522164
出版社: 清华大学出版社
出版日期: 2021-02-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 111.3

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
和离:完结篇
《 和离:完结篇 》

售價:HK$ 63.4
知宋·宋代之军事
《 知宋·宋代之军事 》

售價:HK$ 94.8
我能帮上什么忙?——一位资深精神科医生的现场医疗记录(万镜·现象)
《 我能帮上什么忙?——一位资深精神科医生的现场医疗记录(万镜·现象) 》

售價:HK$ 81.6
智慧宫丛书026·增长:从细菌到帝国
《 智慧宫丛书026·增长:从细菌到帝国 》

售價:HK$ 180.0
从自察到自救:别让情绪偷走你的人生
《 从自察到自救:别让情绪偷走你的人生 》

售價:HK$ 90.0
晚明的崩溃:人心亡了,一切就都亡了!
《 晚明的崩溃:人心亡了,一切就都亡了! 》

售價:HK$ 71.8
俄国女皇:叶卡捷琳娜二世传(精装插图版)
《 俄国女皇:叶卡捷琳娜二世传(精装插图版) 》

售價:HK$ 81.6
真想让我爱的人读读这本书
《 真想让我爱的人读读这本书 》

售價:HK$ 57.6

 

編輯推薦:
随着国产芯片的崛起,需要更多的开发者熟悉基于国产处理器的Linux平台。龙芯是一款具有自主知识产权的国产处理器,中国科学院计算技术研究所从2001年开始研制龙芯系列处理器。本书从龙芯SoC架构开始,较为系统全面地介绍了嵌入式Linux的构成、开发、编译和调优等各个环节的知识,内容详实,示例丰富。
本书可作为应用型本科、高职高专院校嵌入式系统方面的课程教材,也可作为相关开发人员的自学教材和参考手册。
內容簡介:
龙芯系列微处理器是中国拥有自主知识产权的中央处理器,中国科学院计算技术研究所从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多篇。
目錄
第1 章 实验平台及背景知识 .......................... 2
1.1 本书使用的开发板及操作系统 ................ 2
1.1.1 龙芯系列芯片 .................................................. 3
1.1.2 龙芯1 号微处理器 .......................................... 4
1.1.3 智龙开发板资源 .............................................. 5
1.1.4 智龙开发板使用的操作系统 .......................... 5
1.1.5 龙芯派一代开发板资源 .................................. 8
1.1.6 龙芯派一代与智龙开发板的差异 ................ 10
1.1.7 龙芯派一代开发板操作与启动盘制作 ........ 11
1.1.8 龙芯派二代开发板操作 ................................ 20
1.2 全龙芯的交叉编译平台 .......................... 24
1.2.1 在龙芯3A3000 主机Loongnix 系统中
搭建龙芯1C 开发环境 ................................. 24
1.2.2 中标麒麟操作系统 ........................................ 27
1.2.3 深度操作系统 ................................................ 28
1.2.4 普华操作系统 ................................................ 29
1.3 安装UbuntuFedora 及其他程序 ............ 31
1.4 虚拟机常用目录 ...................................... 31
1.5 Windows 下需要安装的其他软件 .......... 32
1.6 一点常识 .................................................. 34
1.7 本书使用的网络资源 .............................. 35
第2 章 虚拟机安装Linux 操作系统 ............. 37
2.1 下载VMware Player 并安装 ................... 37
2.2 下载Ubuntu 桌面系统 ............................ 37
2.3 安装Ubuntu ............................................. 37
2.4 进入终端的方法 ...................................... 39
2.5 建立root 用户并自动登录 ...................... 39
2.6 安装VMware Tools ................................. 40
2.7 安装必要的软件 ...................................... 42
2.8 查看相关版本和信息 .............................. 43
2.9 虚拟机Linux 系统中TFTP 服务搭建.... 44
第3 章 安装工具链、编译内核、
制作文件系统 ................................... 47
3.1 安装交叉编译工具gcc-4.3-ls232 ........... 47
3.2 编译和烧写 PMON ................................. 48
3.3 编译和烧写内核 ...................................... 49
3.4 制作根文件系统 ...................................... 51
3.4.1 配置和编译BusyBox .................................... 51
3.4.2 创建文件系统目录 ........................................ 53
3.4.3 创建系统配置文件 ........................................ 53
3.4.4 复制库文件 .................................................... 56
3.5 制作根文件系统镜像 .............................. 58
3.5.1 安装镜像文件制作工具 ................................ 58
3.5.2 制作根文件系统镜像文件 ............................ 60
3.5.3 烧写根文件系统 ............................................ 61
第4 章 使用buildroot 构建根文件系统 ......... 62
4.1 获取buildroot........................................... 62
4.2 系统构建 .................................................. 62
4.3 烧写根文件系统镜像 .............................. 63
4.4 根文件系统软件包的定制 ...................... 63
4.5 buildroot 构建交叉编译工具链 ............... 67
第5 章 简单应用编程Hello World ............... 69
5.1 智龙开发板上运行程序 .......................... 69
5.2 友善之臂开发板mini2440 上
运行程序 .................................................. 70
5.3 ARM 架构应用程序的移植 .................... 71
第6 章 简单驱动程序编写 ............................ 74
6.1 驱动的原理及编写流程 .......................... 74
6.2 驱动模块的加载与卸载 .......................... 75
6.3 最简单的Linux 驱动 ............................... 75
6.4 驱动的编译和执行 .................................. 76
6.5 内核配置驱动 .......................................... 80
6.6 LED 子系统剖析 ..................................... 82
6.7 led_trigger 接口分析 ................................ 89
中级篇应用
第7 章 Linux 应用编程 ................................ 93
7.1 Linux 应用编程的基础知识 .................... 93
7.2 文件IO 编程 ........................................... 93
7.3 进程和线程 .............................................. 96
7.4 多进程操作 .............................................. 97
7.5 进程间的通信 .......................................... 99
7.5.1 管道 ............................................................... 99
7.5.2 消息队列 .......................................................105
7.5.3 共享内存 .......................................................107
7.6 多线程操作 ............................................ 109
7.6.1 线程控制 .......................................................109
7.6.2 线程属性 .......................................................111
7.6.3 互斥锁...........................................................113
7.6.4 信号量...........................................................117
7.7 网络编程 ................................................ 119
7.7.1 网络编程基础概念 .......................................119
7.7.2 网络编程实例 ...............................................122
7.7.3 网络编程小结 ...............................................132
7.8 OpenVPN 使用 ....................................... 132
7.8.1 OpenVPN 简介 .............................................132
7.8.2 OpenVPN 在智龙上的移植 ........................133
7.8.3 生成证书和私钥 ...........................................133
7.8.4 服务器端启动VPN 服务 .............................135
7.8.5 客户端连接VPN 服务器 .............................136
7.8.6 在虚拟机中测试连接 ...................................137
7.8.7 在普华桌面操作系统中测试连接 .............. 138
7.9 应用编程总结 ........................................ 140
第8 章 开发板硬件接口编程 ...................... 141
8.1 点亮一个LED 灯 .................................. 141
8.1.1 LED 的操作接口 ......................................... 141
8.1.2 LED 控制 .................................................... 142
8.1.3 在程序中操作LED 灯 ................................ 142
8.2 GPIO 硬件编程 ...................................... 143
8.2.1 GPIO 和sysfs 操作接口 .............................. 144
8.2.2 GPIO 基本操作 ............................................ 145
8.2.3 在C 程序中操作GPIO ............................... 146
8.3 按键应用层编程 .................................... 148
8.3.1 按键操作接口 .............................................. 148
8.3.2 在程序中操作按键 ...................................... 151
8.4 U 盘和SD 卡 ......................................... 152
8.4.1 U 盘 .............................................................. 152
8.4.2 SD 卡 ............................................................ 153
8.5 RTC 时钟 ............................................... 154
8.6 串口读写 ................................................ 155
8.6.1 串口硬件说明 .............................................. 155
8.6.2 用minicom 操作串口 .................................. 156
8.6.3 用接口操作串口 .......................................... 157
8.6.4 在程序中操作串口 ...................................... 158
高级篇驱动
第9 章 NFS 文件系统搭建 ........................ 163
9.1 在虚拟机端安装NFS ............................ 163
9.2 配置虚拟机NFS .................................... 164
9.3 配置开发板NFS .................................... 165
9.4 使用NFS ................................................ 166
9.4.1 在开发板上挂载NFS 服务 ......................... 166
9.4.2 建立网络文件系统 .......................................166
第10 章 配置Eclipse 编程 ........................ 168
10.1 用Eclipse 开发应用程序 .................... 168
10.2 用Eclipse 开发内核模块 .................... 170
第11 章 一个简单的字符设备驱动 ............. 175
11.1 主设备号和次设备号 .......................... 175
11.1.1 设备编号的表达 .........................................176
11.1.2 分配和释放设备编号 .................................176
11.2 重要的数据结构 .................................. 178
11.3 字符设备的注册 .................................. 181
11.4 具体实例 .............................................. 182
11.4.1 file_operations 结构体设计 ........................185
11.4.2 模块初始化、模块卸载函数实现 .............186
11.4.3 读写函数的实现 .........................................187
11.4.4 驱动程序编译 .............................................187
11.4.5 驱动程序编译和加载 .................................188
11.4.6 驱动程序测试 .............................................188
11.5 一些有用的资料 .................................. 189
11.6 修改为模块注销自动删除设备节点 .. 190
第12 章 misc 杂项设备驱动 ...................... 191
12.1 misc 使用的结构体和函数 .................. 191
12.2 misc 设备的优点 .................................. 193
12.3 内核源码 .............................................. 193
12.4 具体实例 .............................................. 195
第13 章 PWM控制输出 ............................ 199
13.1 利用 LED_PWM ................................. 199
13.2 自己编写驱动文件 .............................. 205
第14 章 I2C 总线和设备驱动 .................... 214
14.1 I2C 总线概述 ....................................... 214
14.2 Linux I2C 设备驱动 ............................. 214
14.2.1 I2C adapter ..................................................215
14.2.2 I2C 子系统驱动模块的API .......................220
14.2.3 I2C client 的注册 ........................................220
14.2.4 I2C driver ....................................................224
14.2.5 I2C adapter 的注册 .....................................225
14.2.6 I2C tools 的使用 .........................................228
14.2.7 内核模块分析 ............................................ 231
14.3 实例分析at24cxx ................................. 232
14.4 实例分析DS3231 ................................ 234
第15 章 SPI 总线和设备驱动 ..................... 236
15.1 SPI 总线概述 ....................................... 236
15.1.1 硬件结构 .................................................... 236
15.1.2 工作时序 .................................................... 237
15.2 Linux SPI 设备驱动软件架构 ............. 238
15.3 SPI 通用接口层 ................................... 238
15.3.1 SPI 总线和类 ............................................. 238
15.3.2 spi_master 结构 .......................................... 239
15.3.3 spi_device 结构 .......................................... 240
15.3.4 spi_driver 结构 ........................................... 241
15.3.5 spi_message 和spi_transfer 结构 .............. 242
15.4 SPI 控制器驱动 ................................... 244
15.4.1 定义控制器设备 ........................................ 244
15.4.2 注册SPI 控制器的platform_driver .......... 246
15.4.3 注册spi_master .......................................... 246
15.5 SPI 数据传输 ....................................... 249
15.6 实例分析:驱动编写之SPI
设备静态注册spidev.c ........................ 250
15.7 实例分析:驱动编写之SPI
设备动态注册spike.c .......................... 253
15.8 编写测试程序 ...................................... 260
第16 章 CAN 总线和设备驱动 ................... 266
16.1 智龙开发板硬件CAN 接口 ................ 266
16.2 Socket CAN .......................................... 268
16.3 测试工具 .............................................. 269
16.4 Socket CAN 在智龙上的测试:
使用工具iproute2 ................................. 269
16.5 Socket CAN 在智龙上的测试:
使用工具canutils .................................. 273
16.6 编写CAN 的socket 收发
测试程序canapp ................................... 277
16.6.1 程序设计说明 ............................................ 277
16.6.2 程序发送示例 ............................................ 280
16.6.3 程序接收示例 ............................................ 281
16.6.4 发送和接收测试 .........................................282
第17 章 嵌入式GUI 编程 .......................... 284
17.1 使用外部LCD 控制器的
LCD 编程 ............................................ 284
17.1.1 硬件接口 .....................................................284
17.1.2 GPIO 口操作函数 ......................................284
17.1.3 LCD 操作 ....................................................293
17.1.4 编写Makefile .............................................294
17.1.5 代码及运行结果 .........................................295
17.2 基于Qt 使用内部LCD 控制器的
GUI 编程 ............................................... 302
17.2.1 关于Qt ........................................................302
17.2.2 Qt 的移植过程 ............................................303
17.2.3 配置buildroot .............................................304
17.2.4 下载并运行例程 .........................................306
17.2.5 搭建Qt 环境及编写应用程序 ...................308
17.2.6 PMON 及内核源码的修改 ........................313
17.2.7 支持键盘输入和串口、LCD 同时输出 ....314
第18 章 ADC 驱动及应用 .......................... 315
18.1 配置ADC 驱动 .................................... 315
18.2 硬件管脚分配 ...................................... 316
18.3 应用测试 .............................................. 316
18.4 应用层编程 .......................................... 316
第19 章 内核访问外设IO 资源 ................. 319
19.1 MIPS 的内存映射 ................................ 319
19.2 动态映射方式 ...................................... 320
19.3 静态映射方式 ...................................... 326
19.4 mmap 内存映射 ................................... 328
19.4.1 mmap 系统调用 ..........................................328
19.4.2 系统调用mmap 用于共享内存的
两种方式 .....................................................329
19.4.3 mmap 进行内存映射的原理 ......................329
19.4.4 内存映射的步骤 .........................................333
19.5 mmap 编程示例 ................................... 333
第20 章 PMON 源码编译、烧写、
启动及裸机编程 ........................... 335
20.1 PMON 源码分析 .................................. 335
20.2 PMON 烧写 .......................................... 336
20.2.1 采用编程器更新PMON 到SPI Flash ....... 336
20.2.2 网络更新PMON 到SPI Flash .................. 336
20.2.3 网络更新PMON 到NAND Flash ............. 337
20.3 NAND Flash 存储器分区 .................... 337
20.4 内核启动过程 ...................................... 338
20.4.1 内核从NAND Flash 中加载 ..................... 338
20.4.2 内核从SD Card 中加载 ............................ 339
20.4.3 内核从tftp 中加载 ..................................... 340
20.4.4 设置PMON 的IP 地址 ............................. 340
20.5 PMON 的内置命令 .............................. 341
20.6 PMON 龙芯官方参考 .......................... 342
20.7 PMON 裸机编程 .................................. 342
第21 章 在Windows 环境下搭建龙芯1C
开发环境及龙芯1C 库 ................ 344
21.1 交叉编译工具链的下载和安装 .......... 344
21.2 MinGW 的下载和安装 ........................ 345
21.3 编译 ...................................................... 347
21.4 调试和运行 .......................................... 348
21.5 运行点灯程序 ...................................... 349
21.6 龙芯1C 库............................................ 350
第22 章 智龙开发板应用及其他龙芯开
发板 ............................................. 351
22.1 智龙开发板应用例程 .......................... 351
22.1.1 WiFi 小车应用 ........................................... 351
22.1.2 北斗导航应用 ............................................ 351
22.1.3 龙印3D 打印机 ......................................... 352
22.1.4 LCD 扩展板 ............................................... 353
22.1.5 其他应用开发例程 .................................... 353
22.2 龙芯机器人控制器 .............................. 354
22.2.1 硬件结构 .................................................... 354
22.2.2 烧录内核与根文件系统 ............................ 354
22.2.3 机器人控制器的PWM 输出操作 ............. 356
22.2.4 机器人控制器的应用 ................................ 357
22.3 智龙开发板在高校和社区中的
推广应用 .............................................. 357
22.3.1 高校应用 .................................................... 357
22.3.2 龙芯CPU 高校开源计划 ........................... 358
22.3.3 龙芯杯全国大学生计算机系统
能力培养大赛 ...........................................359
22.3.4 龙芯俱乐部开源社区 .................................359
22.3.5 基于龙芯平台的嵌入式系统设计竞赛等
高校比赛活动 .............................................360
第23 章 Linux 内核的配置和编译 .............. 362
23.1 安装图形化配置工具Ncurses ............. 362
23.2 运行图形化配置界面 .......................... 362
23.3 编译、烧写Linux 内核 ....................... 363
23.4 开发板各模块驱动源码 ...................... 363
23.5 配置内核各模块驱动 .......................... 364
23.5.1 配置网卡驱动 .............................................364
23.5.2 配置NFS 支持 ...........................................367
23.5.3 配置串口驱动 .............................................369
23.5.4 配置LCD 驱动 ...........................................370
23.5.5 配置按键驱动 .............................................372
23.5.6 配置SD 卡驱动 ..........................................374
23.5.7 配置U 盘驱动 ............................................375
23.5.8 配置USB 鼠标和键盘驱动 .......................377
23.5.9 配置USB OTG 驱动 ..................................380
23.5.10 配置音频驱动 ...........................................381
23.5.11 配置RTC 驱动 .........................................382
23.5.12 配置PWM 驱动 .......................................384
23.5.13 配置LED 驱动 .........................................386
23.5.14 配置红外驱动 ...........................................387
23.5.15 配置CAN 总线驱动 ................................388
23.5.16 配置SPI 控制器驱动 ...............................390
23.5.17 配置I2C 控制器驱动 ...............................391
23.5.18 配置ADC 驱动 ........................................392
23.5.19 配置GPIO 驱动 .......................................393
23.5.20 配置看门狗驱动 ...................................... 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
內容試閱
前 言 一
记得以前我出差到北京,参观了仰慕已久的中国国家博物馆。在国家博物馆底层的古代中国陈列馆,领略了伟大中国上下几千年历史的博大精深。
我对中国历史最感兴趣的是我国在很早以前就建立了繁荣的文明社会,绵延几千年而不中断,并且社会经济、文化、科技都长期居于世界领先水平。成就这一奇迹的原因是什么?
在国家博物馆里我看到了大量的古代文物,认识到中国文明的源头,其基础就是先进的信息技术。首先有规范的文字汉字,早在几千年前我们就发明了独立的文字体系,并且不断演化和推广,从甲骨文到金文、篆书、隶书、楷书、行书等。汉字的发明和不断进步使得社会的知识可以不断地积累,演化出四大发明等先进技术。然后是文字的书写工具和载体毛笔、竹简和纸张,使得文明得以广泛传播。还有就是先进的计算工具算盘,算盘有一千多年的悠久历史,中国算盘在古代就是当时最先进的计算机。在宋代的《清明上河图》里就有算盘的身影,算盘是中国古代在信息技术领域的一项重大发明,也是古代中国能持续繁荣的重要基础。
当年笔者在龙芯计算机试用的文章里写道:总结这几个月龙芯计算机的使用,我亲身体验了龙芯产业的成果。龙芯已经成为实实在在的产品。但是任何产品都有从无到有、从小到大的过程,龙芯也不例外。如果说和经历了几十年风雨历程的英特尔这棵参天大树相比,只有几年发展史的龙芯就像是还在茁壮成长的小树苗。
多年以后,龙芯这棵小树苗长高了,经历了风霜雨雪的磨炼,发出了新的枝杈。现在龙芯已经开发出大、中、小CPU 3 个系列多个型号产品,在信息安全、国防、航天领域取得了可喜的成果。现在国家日益重视信息产业的安全可控,国产CPU 市场需求也越来越大。随着2015 年龙芯3A2000的发布,新一代龙芯GS464E 微结构实现了单核性能的大幅度提高,龙芯在用户体验上越来越好。同时,龙芯对软件生态的支持也越来越完善,中标、深度、普华、金山、达梦、金蝶等多家知名软件公司加入了龙芯软件生态圈。
经过18 年的努力和积累,龙芯成长为国内能够自主设计微架构CPU 的公司中,坚持时间最久、产品线覆盖最全的国产CPU 平台。尽管目前和国际对手还有不小的差距,但我们只要掌握CPU 自主微架构的开发能力,经过长久坚持努力,不断缩小差距,逐步建立起自己的生态体系,就总有赶超的机会。历史证明,只要能坚持星星之火,就可以最终取得燎原之势。
龙芯CPU 首席科学家胡伟武在CCF2016第二届自主安全产业生态创新发展论坛上讲到:建立自主IT 体系是实现中国梦的必要条件,我国要建立独立于Wintel 和Android 体系外的独立IT 技术体系,做到三分天下有其一,这是成为科技强国的基本特征。
笔者有幸作为第一批龙芯计算机的用户,自发参与了龙芯和开源社区的推广,创立了龙芯俱乐部社区。我深深地感觉到龙芯建立自主IT 生态的重要性和艰难,同时也看到,正是龙芯这样长期坚持不懈努力,才会打下了一个比较好的生态基础。为了拓展龙芯的开源技术生态和创新应用,2015 年笔者也基于龙芯1C 开发了首个龙芯开源创客智龙主板,以高性价比和开源的策略,吸引更多龙芯开发者,促进龙芯作品的开发。该主板即为本书所讲解的主板。
笔者在给第一批龙芯开源创客主板用户的致辞中写道:龙芯是中国首个自主CPU 内核的处理器,是中国人的骄傲,代表着千百年来中国计算技术的伟大复兴。回望历史,古代中国的信息技术以珠算为代表引领时代,创造了无限的繁荣。百年的落后对于历史长河只是一个瞬间,中国历史的辉煌是我们立志自主CPU 核心技术的原动力,这个梦想并不遥远,这是一个圆梦的时代!我们有理由相信,只要我们努力和坚持,中国CPU 内核技术的落后局面,在龙芯等国产芯片的搏击下,终将成为历史。而在这个大潮激荡的时代,有一群来自五湖四海的龙芯爱好者默默地耕耘着社区,以另一种方式支
持龙芯。
在龙芯中科技术有限公司的支持和社区开发者的合作下,首批龙芯智龙创客主板在笔者租用的住所客厅里诞生了。龙芯智龙创客主板前后发出了近千块,甚至销售到英国、美国、韩国、俄罗斯等国外地区。
目前,龙芯俱乐部在龙芯中科技术有限公司的支持下成立了运营实体南京龙众创芯电子科技有限公司,专门进行龙芯开源技术生态和创新应用的拓展。在龙芯不断进取的过程中,让我们重装出发,继续追逐中国梦。
下图为龙芯中科总设计师胡伟武与笔者合影。

龙芯俱乐部创始人石南与龙芯总设计师胡伟武


石南
2020 年12 月
于南京龙众创芯电子科技有限公司


前 言 二
信息化技术的发展,给人类的生存环境和生产环境都带来了重大变革。现在,物联网引领信息产业革命的浪潮,使地球变得更加智慧,使人类生活变得无限美好。以物联网为龙头,智能穿戴、航空航天等重大IT 相关应用领域,都广泛涉及嵌入式操作系统的应用,特别是嵌入式操作系统Linux 的应用。掌握并熟练应用嵌入式操作系统Linux,是计算机、自动控制和电子信息等相关专业人才培养的重要方向。
近期,发生了轰动的中兴被禁事件。现在中兴事件终于结束,但代价很大。如果说以往的采购方便让中国发展本国芯片三心二意,那么从现在起,靠美国芯片活得很好的幻想应该破灭了。中国有组织科技攻关的能力,也有推动国产芯片逐渐替代外来芯片所需要的动力。目前中国已经有设计和生产芯片的能力,但是芯片使用的生态还不完善。为了更好地推进国产芯片的使用,扩大国产芯片的生态圈,就有了将龙芯1C 开发过程编撰成书的必要了。
本书不仅用于MIPS 架构的龙芯1 号芯片的嵌入式系统开发,还可用于基于Linux 操作系统的嵌入式系统学习,具有广泛的适用性。其中,在内核原理、应用程序编写方面,与市场常见ARM 架构芯片相比,其开发过程是通用的,包括虚拟机编译、程序下载、调试、应用开发、内核裁减等。
从智龙开发板开箱上电、安装软件、编写代码、调试,到本书整理完工,经历了近一年半的时间。在撰写过程中,经历了各种困难。其中最大的困难在于恒心和毅力。因为本人不是企业的员工,没有将龙芯应用于产品的开发经历,没有现成的实例和成品的代码,更没有开发产品的压力,好在拥有最重要的一点对于嵌入式系统浓厚的兴趣。虽然对于操作系统内核有一定基础,能熟练操作全部的外设接口操作,但以前用的是其他系统和芯片平台,面对一个新的系统、新的芯片,还是花了心思去掌握。我想,正是经历了这无数问题,并且不放弃,孜孜不倦地寻找答案,才能积累到现在一眼就发现问题的能力。所以,通过本书来学习操作系统,不仅是要进行相关验证性实验,更是要进行创造性开发,才能巩固提高。因为实现一个功能的测试,在代码正确的情况下,验证过程很快,可是设计开发者实现这个功能,可能写了很久。所以不要羡慕资深开发者的火眼金睛和开发速度,那是用时间和精力换来的。
本书中的代码,部分来自网络,部分自己撰写,但都全部调试并在智龙V3.0 上运行通过。其中,
部分应用程序与其他ARM 架构的系统是通用的。本书由3 部分组成:基础篇入门、中级篇应用、高
级篇驱动。入门基础篇包含从一个初学者过渡到系统程序员的基础内容;中级编程篇不仅包含操作系
统的基本操作,如文件、进程、线程、管道、消息、内存、锁、信号、网络,还包含基本的硬件接口
操作,如GPIO、按键、RTC、UART。高级驱动篇则包含驱动程序的编写和高级硬件接口操作,如字
符设备、I2C 总线设备、SPI 总线设备、CAN 总线设备、ADC 设备、LCD 设备。附录为嵌入式系统开
发经常用的资料和智龙开发板的电路原理图等。
本书具体内容如下:
第1 章为本书所采用的智龙开发板的详细介绍、硬件结构,为读者设计电路和进行软件开发提供参考。
第2~6 章介绍了建立开发环境,进行系统开发的准备工作,包括Linux 操作系统基本操作、建立交叉编译环境、制作文件系统,以及编写简单的入门程序和驱动程序。
第7 章为基础Linux 应用编程。
第8 章在第7 章的基础上,编写实例程序操作智龙开发板的硬件接口、外设资源,将开发板实实在在地利用起来。
第9~10 章为高级嵌入式系统开发打下基础,详细介绍了NFS 文件系统的搭建方法和使用Eclipse开发环境进行应用和驱动的编写。
第11~12 章是基础的驱动程序编写,介绍了字符类、杂项类驱动程序的编写方法,并编写了测试程序进行验证。
第13~19 章则基于智龙开发板进行了详细的驱动程序设计开发并编写详细的测试程序。
第20 章介绍了龙芯1C 所使用的PMON 结构,并说明了PMON 编译、烧写和启动方法,还介绍了相关祼机编程的方法。
第21 章介绍了在其他操作系统上搭建智龙开发板开发环境的方法。
第22 章介绍了智龙开发板的综合应用例程,还介绍了基于龙芯1C 的机器人控制器硬件结构、软件开发方法。
第23 章详细列出了智龙开发板所使用内核的配置。
附录为本书实验过程中经常用到的资料及智龙开发板的电路原理图等,方便读者进行二次开发。
本书内容由浅入深,方便自行阅读,也可以跟着配套视频自行学习。本书中所有的代码均开源在GitHub 和百度网盘上。GitHub 网址为https:github.comsundm75Loongson-Smartloong-V2.0。
本书由石南负责规划,孙冬梅负责内容编排、定稿与修改。参与本书编写的相关工作人员还有徐钊、孟凡伟、王晓荣等,其中徐钊设计了智龙开发板的硬件,孟凡伟设计了智龙开发板的后期版本和龙芯机器人控制器,王晓荣对部分软件代码进行了测试。
由于笔者的水平有限,书中内容难免有疏忽、不恰当甚至错误的地方,恳请各位读者及同行指正。


南工电控学院测控系孙冬梅、龙芯总设计师胡伟武与王晓荣



孙冬梅
2020 年12 月
于南京工业大学电控学院测控技术与仪器系

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.