联系热线
内购链接: https://3.cn/iL4da-I
内容简介:
《嵌入式系统原理与开发——基于RISC-V和Linux系统》以当前嵌入式系统领域里具有代表性的RISC-V技术和嵌入式Linux操作系统作为分析对象。本书首先介绍嵌入式系统的基础知识,RISC-V指令集和赛昉科技公司出品的VisionFive 2(中文名: 昉·星光 2)单板计算机; 在此基础上阐述嵌入式Linux相关知识,主要包括Linux内核、文件系统、移植方法、驱动程序等内容; 最后介绍采用Python语言在RISC-V单板计算机和嵌入式Linux系统上的开发设计案例。
《嵌入式系统原理与开发——基于RISC-V和Linux系统》可以作为高等学校计算机、电子、电信类专业的教材,也可以作为RISC-V相关嵌入式开发人员的参考用书。
目录:
第1章 嵌入式系统概述 1
1.1 嵌入式系统简介 1
1.1.1 嵌入式系统的产生 1
1.1.2 嵌入式系统的定义、特点和分类 2
1.1.3 嵌入式系统的典型组成 3
1.2 嵌入式微处理器 4
1.2.1 嵌入式微处理器简介 4
1.2.2 主流嵌入式微处理器 6
1.3 嵌入式操作系统 7
1.3.1 嵌入式 Linux 8
1.3.2 QNX 9
1.3.3 HuaweiLiteOS 9
1.3.4 Android 10
1.3.5 μC/OS-Ⅱ 10
1.3.6 VxWorks 10
1.3.7 RT-Thread 10
1.4 嵌入式系统的应用领域和发展趋势 11
1.4.1 嵌入式系统的应用领域 11
1.4.2 嵌入式系统的发展趋势 17
1.5 本章小结 18
第2章 RISC-V处理器架构 19
2.1 RISC-V 架构简介 19
2.1.1 RISC-V 架构的发展及推广 19
2.1.2 RISC-V 架构特点 20
2.1.3 RISC-V 架构处理器芯片 22
2.2 RISC-V 寄存器 23
Ⅵ
2.2.1 通用寄存器 23
2.2.2 控制与状态寄存器 24
2.2.3 程序指针寄存器 PC 24
2.3 RISC-V 权限模式 25
2.4 RISC-V 指令集 26
2.4.1 RISC-V 指令编码格式 26
2.4.2 RISC-V 指令长度编码 28
2.4.3 RISC-V 寻址方式 28
2.4.4 RV32I指令简介 29
2.5 RISC-V 异常与中断 33
2.5.1 同步异常和异步异常 33
2.5.2 RV32权限模式和异常 33
2.5.3 机器模式异常相关的 CSR 寄存器 33
2.5.4 异常与中断响应过程 36
2.6 本章小结 37
第3章 昉· 星光2(VisionFive2)RISC-V单板计算机 38
3.1 JH-7110(昉· 惊鸿-7110)处理器 38
3.1.1 JH-7110处理器简介 38
3.1.2 JH-7110处理器内部各模块介绍 39
3.1.3 JH-7110处理器地址映射 41
3.2 VisionFive2RISC-V 单板计算机简介 44
3.2.1 VisionFive2RISC-V 单板计算机组成 44
3.2.2 VisionFive2RISC-V 单板计算机外设 46
3.3 快速使用 VisionFive2RISC-V 单板计算机 47
3.3.1 将操作系统烧录到 Micro-SD 卡上并扩展分区 47
3.3.2 更新 SPL 和 U-Boot 49
3.4 本章小结 50
第4章 Linux基础 51
4.1 Linux和 Shell 51
4.2 常见 Linux发行版本 53
4.3 Linux文件管理 54
4.3.1 查看文件 55
4.3.2 元字符 56
4.3.3 隐藏文件 56
Ⅶ
4.3.4 查看文件内容 57
4.3.5 统计单词数目 57
4.3.6 复制文件 57
4.3.7 重命名文件 57
4.3.8 删除文件 58
4.4 Linux目录 58
4.4.1 主目录 58
4.4.2 绝对路径和相对路径 58
4.4.3 创建目录 59
4.4.4 删除目录 60
4.4.5 改变所在目录 60
4.4.6 重命名目录 60
4.5 Linux文件权限和访问模式 61
4.5.1 查看文件权限 61
4.5.2 文件访问模式 61
4.5.3 目录访问模式 61
4.5.4 改变权限 62
4.5.5 更改所有者和用户组 63
4.6 Linux环境变量 64
4.6.1 .profile文件 65
4.6.2 设置终端类型 65
4.6.3 设置 PATH 变量 65
4.6.4 设置命令提示符 65
4.6.5 常用环境变量 67
4.7 Linuxyum 和 Linuxapt软件包管理器 67
4.7.1 Linuxyum 软件包管理器 67
4.7.2 Linuxapt软件包管理器 68
4.8 Linux常用服务 69
4.8.1 Linux磁盘管理 69
4.8.2 SSH 服务 71
4.8.3 minicom 72
4.9 本章小结 73
第5章 Linux内核 74
5.1 Linux内核概述 74
5.1.1 GNU/Linux的基本体系结构 74
Ⅷ
5.1.2 Linux内核版本及特点 75
5.1.3 Linux内核的主要架构及功能 76
5.1.4 Linux内核源码目录结构 78
5.2 Linux进程管理 79
5.2.1 进程的表示和切换 80
5.2.2 进程、线程和内核线程 82
5.2.3 进程描述符task_struct的几个特殊字段 83
5.2.4 kernel_clone函数 83
5.2.5 进程的创建 85
5.2.6 线程和内核线程的创建 87
5.2.7 进程的执行———exec函数族 88
5.2.8 进程的终止 88
5.2.9 进程的调度 89
5.3 Linux内存管理 91
5.3.1 Linux内存管理概述 91
5.3.2 Linux虚拟存储空间及分布 93
5.3.3 进程空间描述 95
5.3.4 物理内存管理(页管理) 98
5.3.5 基于 Slab分配器的管理技术 100
5.3.6 内核非连续内存分配(vmalloc) 100
5.3.7 页面回收简述 101
5.4 Linux模块 102
5.4.1 LKM 的编写和编译 102
5.4.2 LKM 的内核表示 103
5.4.3 模块的加载与卸载 104
5.4.4 模块主要命令 106
5.5 Linux中断管理 107
5.5.1 Linux中断的一些基本概念 107
5.5.2 通用中断子系统 108
5.5.3 主要数据结构 109
5.6 本章小结 110
第6章 Linux文件系统 111
6.1 Linux文件系统概述 111
6.2 Ext2/Ext3/Ext4文件系统 114
6.3 嵌入式文件系统 116
Ⅸ
6.3.1 嵌入式文件系统概述 116
6.3.2 JFFS2嵌入式文件系统 118
6.4 ramfs和ramdisk文件系统 123
6.4.1 ramfs 123
6.4.2 ramdisk文件系统 124
6.5 根文件系统 125
6.5.1 根文件系统概述 125
6.5.2 根文件系统的制作工具———Busybox 127
6.5.3 制作根文件系统 128
6.6 本章小结 131
第7章 嵌入式Linux系统移植 132
7.1 BootLoader基础 132
7.1.1 BootLoader基本概念 132
7.1.2 BootLoader的操作模式 133
7.1.3 BootLoader的典型结构 133
7.1.4 常见的 BootLoader 134
7.1.5 U-Boot概述 135
7.1.6 RISC-V 架构的 U-Boot引导过程 136
7.1.7 U-Boot环境变量 137
7.1.8 U-Boot命令 138
7.1.9 U-Boot对设备树的支持 140
7.2 JH-7110的启动流程分析 142
7.2.1 启动模式设置 142
7.2.2 启动资源 142
7.2.3 BootROM 144
7.2.4 SPL 145
7.2.5 OpenSBI 145
7.2.6 U-Boot 145
7.3 JH-7110的 U-Boot编程基础知识 146
7.3.1 配置 146
7.3.2 接口描述 149
7.3.3 调试方法 152
7.4 交叉开发环境与交叉编译工具链 153
7.4.1 主机与目标机的连接方式和文件传输方式 154
7.4.2 交叉编译环境的建立 155
Ⅹ
7.4.3 交叉编译工具链概述 155
7.4.4 交叉编译工具链的主要工具 156
7.4.5 RISC-Vgcc工具链 161
7.4.6 Makefile基础 162
7.4.7 clang与 LLVM 164
7.5 嵌入式 RISC-V Linux系统移植过程 167
7.5.1 BootLoader移植 167
7.5.2 内核的配置、编译和移植 169
7.6 本章小结 178
第8章 设备驱动程序设计 179
8.1 设备驱动程序开发概述 179
8.1.1 Linux 设备驱动程序分类 180
8.1.2 驱动程序的处理过程 181
8.1.3 设备驱动程序框架 189
8.1.4 驱动程序的加载 192
8.2 内核设备模型 193
8.2.1 设备模型功能 193
8.2.2 sysfs概述 194
8.2.3 sysfs的实现机制 kobject 195
8.2.4 设备模型的组织———platform 总线 198
8.3 设备树 201
8.4 GPIO 设计案例 205
8.4.1 GPIO 概述 206
8.4.2 配置 207
8.4.3 接口描述 210
8.4.4 示例 212
8.5 I2C 总线设计案例 215
8.5.1 I2C 总线介绍 215
8.5.2 I2C 驱动程序框架 216
8.5.3 配置 219
8.5.4 接口描述 221
8.5.5 通用示例 222
8.6 SPI设计案例 224
8.6.1 配置 225
8.6.2 SPI驱动程序框架 228
Ⅺ
8.6.3 接口描述 229
8.6.4 示例 230
8.7 UART 设计案例 231
8.7.1 简介 232
8.7.2 配置 233
8.7.3 接口描述 235
8.7.4 UART 示例 235
8.8 本章小结 239
第9章 VisionFive2单板机开发案例 240
9.1 Python驱动蜂鸣器案例 240
9.1.1 连接硬件 240
9.1.2 执行演示代码 241
9.1.3 程序源码 241
9.2 Python开发温湿度监测系统案例 242
9.2.1 连接硬件 243
9.2.2 执行演示代码 243
9.2.3 程序源码 244
9.3 Python驱动 LCD 屏显案例 244
9.3.1 连接硬件 244
9.3.2 执行演示代码 244
9.3.3 程序源码 246
9.4 Python读取 GPS数据案例 246
9.4.1 连接硬件 246
9.4.2 执行演示代码 246
9.4.3 程序源码 247
9.5 本章小结 248
参考文献 249
前言/序言:
RISCV指令集是基于精简指令集计算机(Reduced Instruction Set Computer,RISC)计算原理建立的开放指令集架构(Instruction Set Architecture,ISA)。
RISCV是在指令集不断发展和成熟的基础上建立的全新指令。RISCV指令集完全开源、设计简单、易于移植UNIX系统、模块化设计、工具链完整,同时有丰富的开源实现和流片案例。
基于RISCV指令集架构可以设计服务器中央处理器(Central Processing Unit,CPU)、移动CPU、边缘CPU和家用电器CPU、工控CPU、传感器中的CPU等。
嵌入式计算机已广泛应用于通信设备、消费电子、数字家电、汽车电子、医疗电子、工业控制、金融电子、航空航天等领域。
嵌入式系统已经成为航空航天、汽车、医疗设备、通信和工业自动化行业的主要技术。技术的发展和生产力的提高离不开人才的培养。
目前业界对嵌入式技术人才的需求十分巨大,尤其在迅速发展的电子、通信、计算机等领域,这种需求更为显著。
另外,企业越来越重视嵌入式系统开发从业者的工程实践能力、经验要求,
因此目前国内外很多专业协会和高校都在致力于嵌入式相关课程体系的建设,结合嵌入式系统的特点,在课程内容设计、师资队伍建设、教学方法探索、
教学条件和实验体系建设等方面加大了投入。嵌入式Linux是嵌入式领域内较重要的操作系统,是RISCV技术系列上操作系统之一,
也是嵌入式系统领域和物联网领域占有份额较大的操作系统。
本书的特色包括以下几点。
(1) 本书是基于RISCV指令集的单板计算机和嵌入式Linux操作系统的深度结合的图书,本书得到了赛昉科技的大力支持。
(2) 本书在参考ACM&IEEE联合制定的新版计算机学科的课程体系(2020版)中Embedded System课程要求的基础上,
结合国内高校计算机学科课程大纲要求进行撰写,参考资料主要来自近3年国内外出版的嵌入式相关图书、Linux官网、RISCV社区和赛昉科技官网、知名嵌入式设备公司相关资料和实践活动,具有较好的时效性和实用性。
(3) 本书在技术上与时俱进,所阐述的先进单板计算机采用JH7110,操作系统采用Linux内核5.15版本,设计案例采用Python语言。
(4) 本书案例源码丰富。从编写小组从事的科研项目和实践活动出发,选择具有一定实用价值,包含交叉学科知识且反映RISCV技术、嵌入式Linux与物联网技术结合的项目实例。
本书共分9章,
第1章介绍了嵌入式系统的基本概念、特点、分类、应用领域和发展趋势等。
第2章介绍了RISCV指令集的相关知识。
第3章介绍了VisionFive 2单板计算机的相关知识。
第4章介绍了Linux的基础知识。
第5章介绍了Linux内核相关知识。
第6章介绍了Linux文件系统。
第7章介绍了基于VisionFive 2单板计算机的嵌入式Linux系统移植。
第8章介绍了在VisionFive 2单板计算机上开发嵌入式Linux驱动程序。
第9章介绍了基于Python语言的开发案例。
本书参考了国内外的许多最新的技术资料,书末有具体的参考文献,有兴趣的读者可以查阅相关信息。
限于作者水平,书中不妥之处在所难免,敬请广大读者批评指正和提出宝贵意见。