书籍详情
微型计算机系统原理及应用:国产龙芯处理器的软件和硬件集成(实训篇)
作者:何宾 等
出版社:电子工业出版社
出版时间:2022-08-01
ISBN:9787121441028
定价:¥99.00
购买这本书可以去
内容简介
本书作为《微型计算机系统原理及应用:国产龙芯处理器的软件和硬件集成(基础篇)》的配套实训教材,主要是为电子信息类专业和计算机类专业的计算机实训类课程提供完备的教学资源。本书以国产龙芯1B处理器为核心,将国产软件集成开发环境和国产操作系统引入计算机类课程的实训教学中,使学生能真正系统地掌握计算机的软件和硬件知识,培养学生具有独立分析和解决计算机系统问题的能力。 本书从计算机软件算法、外设工作原理和操作系统3个不同角度,对计算机系统原理、计算机接口技术、数据结构、编译原理、计算机网络、操作系统、汇编语言程序设计和C语言程序设计等课程的主要知识点进行深入解析,使读者能够从“全系统”的角度来看待计算机系统的软件和硬件。 全书共10章,主要内容包括:排序算法的原理和实现、树的算法原理和实现、图的算法原理和实现、串口重定位原理和实现、数字电子钟的设计和实现、人机交互游戏的设计和实现、USB设备的操作原理和访问实现、RT-Thread操作系统原理和应用、网络传输的原理和实现,以及Linux操作系统的移植和应用程序的开发。 全书共分为10章,主要内容包括:排序算法的原理和实现、树的算法原理和实现、图的算法原理和实现、串口重定位原理和实现、电子钟的设计和实现、人机交互游戏的设计和实现、USB设备的操作原理和访问实现、RT-Thread操作系统原理和应用、网络传输的原理和实现,以及Linux操作系统的移植和应用程序的开发。
作者简介
何宾,知名的嵌入式和EDA技术专家,长期从事电子设计自动化方面的教学和科研工作,与全球多家知名的半导体厂商和EDA工具厂商密切合作。已经出版电子信息方面的著作共40余部,内容涵盖电路仿真、电路设计、FPGA、数字信号处理、单片机、嵌入式系统等。典型的代表作有《模拟电子系统设计指南(基础篇):从半导体、分立元件到TI集成电路的分析与实现》、《模拟电子系统设计指南(实践篇):从半导体、分立元件到TI集成电路的分析与实现》、《Xilinx Zynq-7000嵌入式系统设计与实现-基于ARM Cortex-A9双核处理器和Vivado的设计方法》、《Altium Designer17一体化设计标准教程-从仿真原理和PCB设计到单片机系统》、《STC8系列单片机开发指南:面向处理器、程序设计和操作系统的分析与应用》等。
目录
目录
第1章排序算法的原理和实现
1.1 选择排序的原理和实现
1.1.1 选择排序的原理
1.1.2 C语言程序设计
1.1.3 C语言编译和调试
1.1.4 汇编语言程序设计
1.1.5 汇编语言编译和调试
1.2 快速排序的原理和实现
1.2.1 快速排序的原理
1.2.2 C语言程序设计
1.2.3 C语言编译和调试
1.2.4 汇编语言程序设计
1.2.5 汇编语言编译和调试
1.3 插入排序的原理和实现
1.3.1 插入排序的原理
1.3.2C语言程序设计
1.3.3 C语言编译和调试
1.3.4 汇编语言程序设计
1.3.5 汇编语言编译和调试
1.4 基数排序的原理和实现
1.4.1 基数排序的原理
1.4.2 C语言程序设计
1.4.3 C语言编译和调试
1.4.4 汇编语言程序设计
1.4.5 汇编语言编译和调试
1.5 希尔排序的原理和实现
1.5.1 希尔排序的原理
1.5.2 C语言程序设计
1.5.3 C语言编译和调试
1.5.4 汇编语言程序设计
1.5.5 汇编语言编译和调试
1.6 归并排序的原理和实现
1.6.1 归并排序的原理
1.6.2 C语言程序设计-递归实现
1.6.3 C语言编译和调试-递归实现
1.6.4 C语言程序设计-非递归实现
1.6.5 C语言编译和调试-非递归实现
1.6.6 汇编语言程序设计
1.6.7 汇编语言编译和调试
1.7 堆排序的原理和实现
1.7.1 堆排序的原理
1.7.2 C语言程序设计
1.7.3 C语言编译和调试
1.7.4汇编语言程序设计
1.7.5汇编语言编译和调试
第2章树的算法原理和实现
2.1二叉树遍历原理和实现
2.1.1二叉树遍历的原理
2.1.2 C语言程序设计-遍历的递归实现
2.1.3 C语言编译及调试-遍历的递归实现
2.1.4 C语言程序设计-遍历的非递归实现
2.1.5 C语言编译及调试-遍历的非递归实现
2.1.6汇编语言程序设计
2.1.7汇编语言编译和调试
2.2哈夫曼编码原理和实现
2.2.1哈夫曼编码的原理
2.2.2 C语言程序设计
2.2.3 C语言编译及调试
2.2.4汇编语言程序设计
2.2.5汇编语言编译和调试
第3章图的算法原理和实现
3.1弗洛伊德算法原理和实现
3.1.1弗洛伊德算法的原理
3.1.2 C语言程序设计
3.1.3 C语言编译和调试
3.1.4汇编语言程序设计
3.1.5汇编语言编译并调试
3.2图的邻接表表示和实现
3.2.1图的邻接表表示方法
3.2.2基于链表的邻接表设计思路
3.2.3 C语言程序设计-邻接表的链表实现
3.2.4 C语言编译和调试-邻接表的链表实现
3.2.5基于数组的邻接表设计思路
3.2.6 C语言程序设计-邻接表的数组实现
3.2.7 C语言编译和调试-邻接表的数组实现
3.2.8汇编语言程序设计
3.2.9汇编语言编译并调试
3.3深度和广度优先搜索算法原理和实现
3.3.1深度和广度优先搜索算法原理
3.3.2 C语言程序设计-基于链表和非递归的实现
3.3.3 C语言编译和调试-基于链表和非递归的实现
3.3.4 C语言程序设计-基于数组和非递归的实现
3.3.5 C语言编译和调试-基于数组和非递归的实现
3.3.6汇编语言程序设计
3.3.7汇编语言编译和调试
第4章串口重定位的原理和实现
4.1 printf()函数的重定位实现
4.1.1分析标准库函数printf()的执行过程
4.1.2创建新的头文件(uart3.h)
4.1.3创建新的源文件(uart3.c)
4.1.4创建新的putcharr.c文件
4.1.5修改print.h与printf.c文件
4.2 scanf()函数的重定位实现
4.2.1分析标准库函数scanf()的执行过程
4.2.2修改源文件uart3.c
4.2.3创建新的头文件(scanf.h)
4.2.4创建新的源文件(scanf.c)
4.3主函数下添加设计代码
4.4输入和输出函数重定位的测试
4.4.1配置PuTTY工具和串口调试助手
4.4.2scanf()函数的只读模式测试
4.4.3数据流与控制流匹配测试
4.4.4返回已读取字符数测试
4.4.5输入十进制整数测试
4.4.6输入八进制整数测试
4.4.7输入十六进制整数测试
4.4.8输入浮点数测试
4.4.9输入字符测试
4.4.10输入字符串测试
4.4.11输入指针测试
4.4.12扫描模式输入字符串测试
4.4.13数据流的缓存测试
第5章数字电子钟的设计和实现
5.1实时时钟模块的原理
5.1.1实时时钟内部结构
5.1.2实时时钟寄存器集
5.2 I2C总线及模块的原理
5.2.1 I2C总线规范
5.2.2 I2C模块的原理
5.3 OLED显示模块原理
5.3.1 OLED的性能和参数
5.3.2 OLED模块的电路
5.3.3 I2C总线写数据
5.3.4 I2C的写模式
5.3.5 I2C的数据位传输
5.3.6图形显示数据RAM
5.3.7存储器寻址模式
5.4数字电子钟软件的设计
5.4.1创建oled_driver.h文件
5.4.2创建oled_driver.c文件
5.4.3创建chars.h文件
5.4.4创建picture.h文件
5.4.5修改bsp.h文件
5.4.6修改main.c文件
5.5编译和下载设计文件
5.5.1硬件平台的准备
5.5.2设计下载
第6章人机交互游戏的设计和实现
6.1显示控制器模块原理
6.1.1 DC模块的特性
6.1.2 DC模块寄存器集
6.1.3 LCD的位模式
6.2 LCD屏的性能与操作
6.2.1 LCD屏的性能参数
6.2.2 LCD屏的引脚
6.2.3 LCD屏的时序
6.3系统硬件设计
6.3.1 LCD屏与开发板的连接
6.3.2按键模块与开发板的连接
6.4 GPIO和LCD驱动API
6.4.1 GPIO API函数
6.4.2 LCD API函数
6.5系统软件设计
6.5.1屏幕设计问题分析
6.5.2编写软件代码
6.6系统调试和验证
第7章USB设备的操作原理和访问实现
7.1USB的初始化
7.1.1USB初始化框架
7.1.2USB底层初始化
7.1.3 USB分配新设备
7.1.4 USB新建新设备
7.1.5提交命令到最底层
7.2 USB存储设备的初始化
7.2.1扫描USB设备
7.2.2配置USB存储设备
7.2.3读取和写入操作
7.2.4复位与传输操作
7.2.5获取存储设备
7.3 USB存储设备的访问
7.3.1测试存储器程序框架
7.3.2获取并打印存储器分区信息
7.3.3判别块存储设备
7.3.4搜索目标文件
7.3.5读取目标文件
7.4 USB HID的初始化和访问
7.4.1USB HID原理
7.4.2键盘设备初始化
7.4.3键盘中断服务程序
7.4.4检测按键输入
7.4.5获取输入字符
7.5USB设备的停止
7.6USB存储设备和USB键盘的测试
7.6.1存储设备的测试
7.6.2键盘设备的测试
第8章RT-Thread操作系统原理和应用
8.1操作系统的背景和需求
8.1.1裸机环境下的应用场景
8.1.2操作系统的基本概念
8.1.3嵌入式RTOS基础
8.2 RT-Thread操作系统简介
8.2.1 RT-Thread操作系统的发展历史
8.2.2 RT-Thread操作系统的架构
8.3线程原理及实现方法
8.3.1线程的概念
8.3.2线程控制块
8.3.3线程属性
8.3.4系统线程
8.3.5线程管理API
8.3.6调度器与调度规则
8.4定时器原理及实现方法
8.4.1定时器的概念
8.4.2定时器工作原理
8.4.3定时器控制块
8.4.4定时器API
8.5内存管理及实现方法
8.5.1静态内存分配
8.5.2动态内存分配
8.5.3 RT-Thread操作系统中的内存分配
8.5.4内存管理API
8.6信号量原理及实现方法
8.6.1信号量的概念
8.6.2信号量工作原理
8.6.3信号量控制块
8.6.4信号量API
8.7互斥量原理及实现方法
8.7.1互斥量的概念
8.7.2互斥量的工作原理
8.7.3互斥量控制块
8.7.4互斥量API
8.8事件集原理及实现方法
8.8.1事件集概念
8.8.2事件集工作原理
8.8.3事件控制块
8.8.4事件集API
8.9消息队列原理及实现方法
8.9.1消息队列的概念
8.9.2消息队列工作原理
8.9.3消息队列控制块
8.9.4消息队列API
8.10操作系统应用实例一:理发师问题
8.10.1理发师问题的背景
8.10.2理发师问题的同步处理
8.10.3理发师问题的解决
8.10.4设计编译和调试
8.11操作系统应用实例二:哲学家进餐问题
8.11.1哲学家进餐问题的背景
8.11.2哲学家进餐问题的同步处理
8.11.3哲学家进餐问题的解决
8.11.4设计编译和调试
8.12操作系统应用实例三:吸烟者问题
8.12.1吸烟者问题的背景
8.12.2吸烟者问题的同步处理
8.12.3吸烟者问题的解决
8.12.4设计编译和调试
第9章网络传输的原理和实现
9.1内建GMAC模块功能
9.1.1 DMA寄存器描述
9.1.2 GMAC寄存器描述
9.2 LwIP协议栈基础:原始API
9.2.1回调
9.2.2 TCP连接设置
9.2.3发送 TCP 数据
9.2.4接收TCP数据
9.2.5应用轮询
9.2.6关闭和终止连接
9.2.7底层TCP接口
9.2.8 UDP接口
9.2.9系统初始化
9.2.10优化提示
9.2.11零复制MAC
9.3 TCP与UDP的原理和实现方法
9.3.1 TCP的三次握手和四次挥手
9.3.2 TCP与UDP的区别
9.3.3采用套接字的TCP实现方法
9.3.4采用套接字的UDP实现方法
9.4网络传输的实现
9.4.1创建新的设计工程
9.4.2修改main.c文件
9.4.3添加lwip_test.h文件
9.4.4添加lwip_test.c文件
9.4.5添加tcp_server.c文件
9.4.6添加tcp_client.c文件
9.4.7添加udp_server.c文件
9.4.8添加udp_client.c文件
9.4.9修改文件(可选)
9.5网络通信的测试与验证
9.5.1测试前的准备工作
9.5.2设置计算机的IP地址
9.5.3 TCP服务器测试
9.5.4TCP客户端测试
9.5.5 UDP服务器测试
9.5.6 UDP客户端测试
第10章Linux操作系统的移植和应用程序的开发
10.1 Tftpd32工具的下载和安装
10.2 VMware虚拟机的下载和安装
10.3 Ubuntu操作系统的下载和安装
10.3.1下载Ubuntu操作系统镜像
10.3.2安装Ubuntu操作系统
第1章排序算法的原理和实现
1.1 选择排序的原理和实现
1.1.1 选择排序的原理
1.1.2 C语言程序设计
1.1.3 C语言编译和调试
1.1.4 汇编语言程序设计
1.1.5 汇编语言编译和调试
1.2 快速排序的原理和实现
1.2.1 快速排序的原理
1.2.2 C语言程序设计
1.2.3 C语言编译和调试
1.2.4 汇编语言程序设计
1.2.5 汇编语言编译和调试
1.3 插入排序的原理和实现
1.3.1 插入排序的原理
1.3.2C语言程序设计
1.3.3 C语言编译和调试
1.3.4 汇编语言程序设计
1.3.5 汇编语言编译和调试
1.4 基数排序的原理和实现
1.4.1 基数排序的原理
1.4.2 C语言程序设计
1.4.3 C语言编译和调试
1.4.4 汇编语言程序设计
1.4.5 汇编语言编译和调试
1.5 希尔排序的原理和实现
1.5.1 希尔排序的原理
1.5.2 C语言程序设计
1.5.3 C语言编译和调试
1.5.4 汇编语言程序设计
1.5.5 汇编语言编译和调试
1.6 归并排序的原理和实现
1.6.1 归并排序的原理
1.6.2 C语言程序设计-递归实现
1.6.3 C语言编译和调试-递归实现
1.6.4 C语言程序设计-非递归实现
1.6.5 C语言编译和调试-非递归实现
1.6.6 汇编语言程序设计
1.6.7 汇编语言编译和调试
1.7 堆排序的原理和实现
1.7.1 堆排序的原理
1.7.2 C语言程序设计
1.7.3 C语言编译和调试
1.7.4汇编语言程序设计
1.7.5汇编语言编译和调试
第2章树的算法原理和实现
2.1二叉树遍历原理和实现
2.1.1二叉树遍历的原理
2.1.2 C语言程序设计-遍历的递归实现
2.1.3 C语言编译及调试-遍历的递归实现
2.1.4 C语言程序设计-遍历的非递归实现
2.1.5 C语言编译及调试-遍历的非递归实现
2.1.6汇编语言程序设计
2.1.7汇编语言编译和调试
2.2哈夫曼编码原理和实现
2.2.1哈夫曼编码的原理
2.2.2 C语言程序设计
2.2.3 C语言编译及调试
2.2.4汇编语言程序设计
2.2.5汇编语言编译和调试
第3章图的算法原理和实现
3.1弗洛伊德算法原理和实现
3.1.1弗洛伊德算法的原理
3.1.2 C语言程序设计
3.1.3 C语言编译和调试
3.1.4汇编语言程序设计
3.1.5汇编语言编译并调试
3.2图的邻接表表示和实现
3.2.1图的邻接表表示方法
3.2.2基于链表的邻接表设计思路
3.2.3 C语言程序设计-邻接表的链表实现
3.2.4 C语言编译和调试-邻接表的链表实现
3.2.5基于数组的邻接表设计思路
3.2.6 C语言程序设计-邻接表的数组实现
3.2.7 C语言编译和调试-邻接表的数组实现
3.2.8汇编语言程序设计
3.2.9汇编语言编译并调试
3.3深度和广度优先搜索算法原理和实现
3.3.1深度和广度优先搜索算法原理
3.3.2 C语言程序设计-基于链表和非递归的实现
3.3.3 C语言编译和调试-基于链表和非递归的实现
3.3.4 C语言程序设计-基于数组和非递归的实现
3.3.5 C语言编译和调试-基于数组和非递归的实现
3.3.6汇编语言程序设计
3.3.7汇编语言编译和调试
第4章串口重定位的原理和实现
4.1 printf()函数的重定位实现
4.1.1分析标准库函数printf()的执行过程
4.1.2创建新的头文件(uart3.h)
4.1.3创建新的源文件(uart3.c)
4.1.4创建新的putcharr.c文件
4.1.5修改print.h与printf.c文件
4.2 scanf()函数的重定位实现
4.2.1分析标准库函数scanf()的执行过程
4.2.2修改源文件uart3.c
4.2.3创建新的头文件(scanf.h)
4.2.4创建新的源文件(scanf.c)
4.3主函数下添加设计代码
4.4输入和输出函数重定位的测试
4.4.1配置PuTTY工具和串口调试助手
4.4.2scanf()函数的只读模式测试
4.4.3数据流与控制流匹配测试
4.4.4返回已读取字符数测试
4.4.5输入十进制整数测试
4.4.6输入八进制整数测试
4.4.7输入十六进制整数测试
4.4.8输入浮点数测试
4.4.9输入字符测试
4.4.10输入字符串测试
4.4.11输入指针测试
4.4.12扫描模式输入字符串测试
4.4.13数据流的缓存测试
第5章数字电子钟的设计和实现
5.1实时时钟模块的原理
5.1.1实时时钟内部结构
5.1.2实时时钟寄存器集
5.2 I2C总线及模块的原理
5.2.1 I2C总线规范
5.2.2 I2C模块的原理
5.3 OLED显示模块原理
5.3.1 OLED的性能和参数
5.3.2 OLED模块的电路
5.3.3 I2C总线写数据
5.3.4 I2C的写模式
5.3.5 I2C的数据位传输
5.3.6图形显示数据RAM
5.3.7存储器寻址模式
5.4数字电子钟软件的设计
5.4.1创建oled_driver.h文件
5.4.2创建oled_driver.c文件
5.4.3创建chars.h文件
5.4.4创建picture.h文件
5.4.5修改bsp.h文件
5.4.6修改main.c文件
5.5编译和下载设计文件
5.5.1硬件平台的准备
5.5.2设计下载
第6章人机交互游戏的设计和实现
6.1显示控制器模块原理
6.1.1 DC模块的特性
6.1.2 DC模块寄存器集
6.1.3 LCD的位模式
6.2 LCD屏的性能与操作
6.2.1 LCD屏的性能参数
6.2.2 LCD屏的引脚
6.2.3 LCD屏的时序
6.3系统硬件设计
6.3.1 LCD屏与开发板的连接
6.3.2按键模块与开发板的连接
6.4 GPIO和LCD驱动API
6.4.1 GPIO API函数
6.4.2 LCD API函数
6.5系统软件设计
6.5.1屏幕设计问题分析
6.5.2编写软件代码
6.6系统调试和验证
第7章USB设备的操作原理和访问实现
7.1USB的初始化
7.1.1USB初始化框架
7.1.2USB底层初始化
7.1.3 USB分配新设备
7.1.4 USB新建新设备
7.1.5提交命令到最底层
7.2 USB存储设备的初始化
7.2.1扫描USB设备
7.2.2配置USB存储设备
7.2.3读取和写入操作
7.2.4复位与传输操作
7.2.5获取存储设备
7.3 USB存储设备的访问
7.3.1测试存储器程序框架
7.3.2获取并打印存储器分区信息
7.3.3判别块存储设备
7.3.4搜索目标文件
7.3.5读取目标文件
7.4 USB HID的初始化和访问
7.4.1USB HID原理
7.4.2键盘设备初始化
7.4.3键盘中断服务程序
7.4.4检测按键输入
7.4.5获取输入字符
7.5USB设备的停止
7.6USB存储设备和USB键盘的测试
7.6.1存储设备的测试
7.6.2键盘设备的测试
第8章RT-Thread操作系统原理和应用
8.1操作系统的背景和需求
8.1.1裸机环境下的应用场景
8.1.2操作系统的基本概念
8.1.3嵌入式RTOS基础
8.2 RT-Thread操作系统简介
8.2.1 RT-Thread操作系统的发展历史
8.2.2 RT-Thread操作系统的架构
8.3线程原理及实现方法
8.3.1线程的概念
8.3.2线程控制块
8.3.3线程属性
8.3.4系统线程
8.3.5线程管理API
8.3.6调度器与调度规则
8.4定时器原理及实现方法
8.4.1定时器的概念
8.4.2定时器工作原理
8.4.3定时器控制块
8.4.4定时器API
8.5内存管理及实现方法
8.5.1静态内存分配
8.5.2动态内存分配
8.5.3 RT-Thread操作系统中的内存分配
8.5.4内存管理API
8.6信号量原理及实现方法
8.6.1信号量的概念
8.6.2信号量工作原理
8.6.3信号量控制块
8.6.4信号量API
8.7互斥量原理及实现方法
8.7.1互斥量的概念
8.7.2互斥量的工作原理
8.7.3互斥量控制块
8.7.4互斥量API
8.8事件集原理及实现方法
8.8.1事件集概念
8.8.2事件集工作原理
8.8.3事件控制块
8.8.4事件集API
8.9消息队列原理及实现方法
8.9.1消息队列的概念
8.9.2消息队列工作原理
8.9.3消息队列控制块
8.9.4消息队列API
8.10操作系统应用实例一:理发师问题
8.10.1理发师问题的背景
8.10.2理发师问题的同步处理
8.10.3理发师问题的解决
8.10.4设计编译和调试
8.11操作系统应用实例二:哲学家进餐问题
8.11.1哲学家进餐问题的背景
8.11.2哲学家进餐问题的同步处理
8.11.3哲学家进餐问题的解决
8.11.4设计编译和调试
8.12操作系统应用实例三:吸烟者问题
8.12.1吸烟者问题的背景
8.12.2吸烟者问题的同步处理
8.12.3吸烟者问题的解决
8.12.4设计编译和调试
第9章网络传输的原理和实现
9.1内建GMAC模块功能
9.1.1 DMA寄存器描述
9.1.2 GMAC寄存器描述
9.2 LwIP协议栈基础:原始API
9.2.1回调
9.2.2 TCP连接设置
9.2.3发送 TCP 数据
9.2.4接收TCP数据
9.2.5应用轮询
9.2.6关闭和终止连接
9.2.7底层TCP接口
9.2.8 UDP接口
9.2.9系统初始化
9.2.10优化提示
9.2.11零复制MAC
9.3 TCP与UDP的原理和实现方法
9.3.1 TCP的三次握手和四次挥手
9.3.2 TCP与UDP的区别
9.3.3采用套接字的TCP实现方法
9.3.4采用套接字的UDP实现方法
9.4网络传输的实现
9.4.1创建新的设计工程
9.4.2修改main.c文件
9.4.3添加lwip_test.h文件
9.4.4添加lwip_test.c文件
9.4.5添加tcp_server.c文件
9.4.6添加tcp_client.c文件
9.4.7添加udp_server.c文件
9.4.8添加udp_client.c文件
9.4.9修改文件(可选)
9.5网络通信的测试与验证
9.5.1测试前的准备工作
9.5.2设置计算机的IP地址
9.5.3 TCP服务器测试
9.5.4TCP客户端测试
9.5.5 UDP服务器测试
9.5.6 UDP客户端测试
第10章Linux操作系统的移植和应用程序的开发
10.1 Tftpd32工具的下载和安装
10.2 VMware虚拟机的下载和安装
10.3 Ubuntu操作系统的下载和安装
10.3.1下载Ubuntu操作系统镜像
10.3.2安装Ubuntu操作系统
猜您喜欢