嵌入式Linux开发教程

嵌入式Linux开发教程
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: ,
2017-07
版次: 01
ISBN: 9787115447012
定价: 59.80
装帧: 平装
开本: 16开
页数: 330页
正文语种: 简体中文
8人买过
  • 第1篇为嵌入式基础,介绍了嵌入式系统入门、嵌入式软硬件系统、嵌入式Linux、软件开发环境建立和嵌入式开发的C语言基础;第2篇是嵌入式系统基础,介绍了ARM的内部资源、ARM处理器、ADS集成开发环境等;第3篇是嵌入式设备驱动与移植,介绍了Linux设备驱动、各类驱动设计和引导程序、内核移植等相关知识点;最后一篇通过一个真正的嵌入式B超程序案例详解嵌入式开发的完整过程,以此提高读者的实战水平。 作者技术涉猎广泛,熟悉Intel IXA架构网络处理器、ARM体系结构、MIPS体系结构和TCP/IP网络协议栈等。目前担任嵌入式软件研发工程师和软件研发工程师,从事某公司骨干网P2P流量管理设备的研发。 第1篇  嵌入式开发基础

    第1章 嵌入式系统基础 1
    1.1 嵌入式处理器简介 1
    1.1.1 嵌入式微处理器 2
    1.1.2 嵌入式微控制器 2
    1.1.3 嵌入式数字信号处理器 2
    1.1.4 嵌入式片上系统 3
    1.2 ARM微处理器简介 3
    1.3 嵌入式操作系统概述 4
    1.4 搭建嵌入式开发环境 5
    1.4.1 Ubuntu16.04的安装 5
    1.4.2 Minicom的安装配置 8
    1.4.3 Tftp服务的安装配置 9
    1.4.4 NFS的安装配置 10
    1.4.5 建立交叉工具链 12
    1.5 启动目标板系统 16
    1.5.1 Boot Loader和Kernel 16
    1.5.2 根文件系统 18
    1.6 小结 19
    1.7 习题 19
    第2章 嵌入式C语言开发流程 20
    2.1 命令行下的开发流程 20
    2.1.1 编写代码 20
    2.1.2 编译程序 21
    2.1.3 运行程序 22
    2.1.4 交叉编译 22
    2.1.5 编写Makefile 23
    2.2 基于Eclipse的开发流程 24
    2.2.1 下载和安装Eclipse 24
    2.2.2 新建工程 25
    2.2.3 编写代码 26
    2.2.4 编译工程 26
    2.2.5 运行程序 28
    2.3 小结 28
    2.4 习题 28
    第3章 Linux操作基础 29
    3.1 Linux的基本概念 29
    3.1.1 文件 29
    3.1.2 目录 29
    3.1.3 分区 31
    3.1.4 挂载 31
    3.1.5 用户系统 31
    3.1.6 用户权限 32
    3.1.7 shell 32
    3.1.8 环境变量 33
    3.2 Linux的命令行 33
    3.2.1 执行命令 34
    3.2.2 参数 34
    3.2.3 重定向符号 34
    3.2.4 获取帮助 35
    3.3 Linux的常用命令 36
    3.3.1 文件管理 36
    3.3.2 内容管理 39
    3.3.3 权限管理 40
    3.3.4 备份压缩 41
    3.3.5 系统设置 43
    3.3.6 进程控制 45
    3.3.7 网络设置 47
    3.4 小结 48
    3.5 习题 49
    第4章 嵌入式C编程基础 50
    4.1 C语言概述 50
    4.1.1 C语言程序的结构 50
    4.1.2 C语言的语句 51
    4.1.3 C语言的关键字 51
    4.1.4 C语言程序设计步骤 51
    4.2 数据类型 52
    4.2.1 常量与变量 52
    4.2.2 整型数据、实型数据 52
    4.2.3 字符型数据 53
    4.3 运算符和表达式 53
    4.3.1 算术运算符 53
    4.3.2 关系和逻辑运算符 53
    4.3.3 位操作符 54
    4.3.4 ?操作符 55
    4.3.5 表达式的优先级 55
    4.4 流程控制 55
    4.4.1 顺序程序设计 55
    4.4.2 选择结构设计 56
    4.4.3 循环结构设计 57
    4.5 函数 58
    4.5.1 函数定义的一般形式 58
    4.5.2 函数的参数和函数的值 59
    4.5.3 函数的调用 59
    4.5.4 局部变量和全局变量 60
    4.6 数组、指针 61
    4.6.1 数组 61
    4.6.2 指针的基本概念 62
    4.6.3 指针与数组 64
    4.6.4 指针与字符串 66
    4.6.5 指针与函数 67
    4.6.6 指针其他用法 68
    4.6.7 动态内存管理 68
    4.7 小结 69
    4.8 习题 69

    第2篇 嵌入式系统基础

    第5章 S3C2440的内部资源 70
    5.1 S3C2440微处理器 70
    5.1.1 主要结构 70
    5.1.2 片内资源 70
    5.1.3 体系结构 71
    5.2 S3C2440存储器映射 71
    5.2.1 bank0总线宽度 72
    5.2.2 nWAIT引脚的作用 73
    5.2.3 nXBREQ/nXBACK引脚操作 73
    5.3 S3C2440内部资源详解 73
    5.3.1 Cache高速缓存 74
    5.3.2 时钟和电源管理 74
    5.3.3 中断控制器 75
    5.3.4 脉冲带宽调制(PWM)定时器 76
    5.3.5 实时时钟(RTC) 77
    5.3.6 通用I/O端口 77
    5.3.7 LCD控制器 77
    5.3.8 UART控制器 78
    5.3.9 A/D转换和触摸屏接口 79
    5.3.10 看门狗定时器 79
    5.3.11 IIC总线接口 79
    5.3.12 AC97音频解码器接口 80
    5.3.13 USB设备控制器 80
    5.3.14 SD接口 81
    5.3.15 SPI接口 81
    5.3.16 相机接口 82
    5.3.17 工作电压 82
    5.4 小结 82
    5.5 习题 82
    第6章 ARM微处理器 84
    6.1 ARM微处理器的结构 84
    6.1.1 体系结构 84
    6.1.2 寄存器结构 85
    6.1.3 指令结构 85
    6.2 ARM微处理器的选择 85
    6.2.1 内核的选择 85
    6.2.2 工作频率的选择 85
    6.2.3 芯片内存储器的选择 86
    6.2.4 片内外围电路的选择 86
    6.3 ARM微处理器的指令集 86
    6.3.1 ARM微处理器的指令分类和
    格式 86
    6.3.2 指令的条件域 87
    6.3.3 跳转指令 88
    6.3.4 数据处理指令 88
    6.3.5 乘法指令与乘加指令 92
    6.3.6 程序状态寄存器访问指令 94
    6.3.7 加载/存储指令 95
    6.3.8 批量数据加载/存储指令 97
    6.3.9 数据交换指令 97
    6.3.10 移位指令 98
    6.3.11 协处理器指令 99
    6.3.12 异常产生指令 100
    6.4 ARM微处理器指令的寻址方式 101
    6.4.1 立即寻址 101
    6.4.2 寄存器寻址 101
    6.4.3 寄存器间接寻址 101
    6.4.4 基址变址寻址 102
    6.4.5 多寄存器寻址 102
    6.4.6 相对寻址 102
    6.4.7 堆栈寻址 102
    6.5 小结 103
    6.6 习题 103
    第7章 ADS集成开发环境 104
    7.1 命令行开发工具 104
    7.1.1 使用armcc 104
    7.1.2 使用armlink 106
    7.1.3 ARM运行时库 106
    7.1.4 CodeWarrior集成开发环境 107
    7.1.5 ADS调试器 109
    7.2 使用ADS创建工程 109
    7.2.1 创建新工程 109
    7.2.2 编译和链接工程 112
    7.2.3 ARM fromELF工具 114
    7.2.4 在命令行下编译工程 115
    7.3 使用AXD调试代码 116
    7.3.1 打开调试文件 116
    7.3.2 查看存储器内容 117
    7.3.3 设置断点 118
    7.3.4 查看变量值 118
    7.4 小结 119
    7.5 习题 119
    第8章 S3C2440的外部电路 120
    8.1 核心板电路 120
    8.1.1 晶振电路 120
    8.1.2 复位电路 120
    8.1.3 启动配置电路 120
    8.1.4 FLASH存储器(内存) 121
    8.1.5 SDRAM存储器(闪存) 123
    8.2 底板电路 124
    8.2.1 电源电路 125
    8.2.2 串口电路 125
    8.2.3 USB接口 126
    8.2.4 以太网接口 127
    8.2.5 JTAG调试接口 127
    8.2.6 音频接口 128
    8.2.7 LCD接口 129
    8.2.8 SD卡接口 129
    8.3 小结 130
    8.4 习题 130
    第9章 嵌入式Linux文件系统 131
    9.1 嵌入式文件系统基础 131
    9.1.1 NOR FLASH存储器 131
    9.1.2 NAND FLASH存储器 132
    9.1.3 MTD简介 132
    9.1.4 日志型文件系统 133
    9.1.5 BusyBox 134
    9.2 CramFS文件系统 136
    9.2.1 CramFS文件系统的特性 136
    9.2.2 CramFS文件系统映像文件的
    结构 137
    9.2.3 CramFS文件系统的工作原理 137
    9.2.4 CramFS文件系统的初始化
    过程 138
    9.2.5 CramFS文件系统的制作 139
    9.2.6 CramFS文件系统的挂载流程 141
    9.3 基于RAM的文件系统 142
    9.3.1 Ramdisk文件系统 142
    9.3.2 RamFS/TmpFS文件系统 143
    9.4 嵌入式文件系统的设计 145
    9.4.1 文件系统格式选择的基本策略 145
    9.4.2 混合型文件系统格式设计方法 145
    9.5 小结 146
    9.6 习题 146
    第10章 内存和信号量 148
    10.1 共享内存 148
    10.1.1 共享内存的定义 148
    10.1.2 涉及的系统调用 148
    10.1.3 共享内存举例 150
    10.2 System V共享内存 152
    10.2.1 System V共享内存的定义 152
    10.2.2 System V涉及的系统调用 152
    10.2.3 System V共享内存举例 153
    10.3 消息队列 154
    10.3.1 消息队列的定义 154
    10.3.2 消息队列涉及的系统调用 154
    10.3.3 消息队列举例 156
    10.4 System V信号量 158
    10.4.1 System V信号量的定义 158
    10.4.2 System V信号量涉及的系统
    调用 159
    10.4.3 System V信号量举例 160
    10.5 POSIX信号量 163
    10.5.1 POSIX信号量的定义 163
    10.5.2 POSIX信号量涉及的系统
    调用 163
    10.5.3 POSIX信号量举例 164
    10.6 小结 165
    10.7 习题 166
    第3篇 嵌入式设备驱动与移植

    第11章 设备驱动开发基础 167
    11.1 Linux设备管理和驱动概述 167
    11.1.1 Linux设备的分类 167
    11.1.2 设备驱动程序的作用 167
    11.1.3 访问设备的实现 168
    11.1.4 Linux设备控制方式 168
    11.2 Linux设备驱动开发流程 169
    11.2.1 构造和运行模块 170
    11.2.2 字符设备驱动编写 171
    11.2.3 字符设备驱动示例 172
    11.2.4 并发控制 174
    11.2.5 阻塞与非阻塞 180
    11.2.6 select和poll 183
    11.2.7 中断处理 185
    11.2.8 内存与I/O操作 187
    11.3 块设备驱动编写 191
    11.3.1 块设备的I/O操作特点 191
    11.3.2 block_device_operations
    结构体 191
    11.3.3 gendisk结构体 192
    11.3.4 request结构体 193
    11.3.5 request操作函数 196
    11.3.6 bio结构体 197
    11.3.7 注册与注销 199
    11.3.8 加载与卸载 199
    11.3.9 打开与释放 201
    11.3.10 ioctl函数 202
    11.3.11 I/O请求处理 202
    11.4 小结 206
    11.5 习题 206
    第12章 MiniGUI图形界面设计 207
    12.1 MiniGUI概述 207
    12.1.1 MiniGUI的特点 207
    12.1.2 MiniGUI运行模式 208
    12.2 MiniGUI的安装和使用 208
    12.2.1 安装MiniGUI库 208
    12.2.2 安装MiniGUI的资源 209
    12.2.3 配置MiniGUI 210
    12.2.4 编译应用程序例子 210
    12.2.5 交叉编译MiniGUI库 210
    12.2.6 交叉编译例程 211
    12.2.7 QVFB图形引擎 211
    12.2.8 FrameBuffer图形引擎 212
    12.3 利用Eclipse编写MiniGUI程序 213
    12.3.1 建立vacs工程 213
    12.3.2 配置编译选项 214
    12.3.3 配置外部工具QVFB 214
    12.3.4 运行vacs 215
    12.3.5 调试vacs 215
    12.4 MiniGUI的编程基础 215
    12.4.1 头文件 217
    12.4.2 程序入口 217
    12.4.3 创建和显示主窗口 217
    12.4.4 进入消息循环 218
    12.4.5 窗口过程函数 219
    12.4.6 屏幕输出 219
    12.4.7 程序的退出 219
    12.5 消息循环和窗口过程 220
    12.5.1 消息处理函数 220
    12.5.2 重要的消息 221
    12.5.3 窗口及窗口过程 221
    12.6 对话框和控件编程 223
    12.6.1 控件的概念 223
    12.6.2 预定义控件 223
    12.6.3 自定义控件 225
    12.6.4 控件子类化 226
    12.6.5 对话框和对话框模板 227
    12.6.6 模态和非模态对话框 230
    12.7 图形设备接口 230
    12.7.1 图形设备上下文 230
    12.7.2 矩形操作和区域操作 231
    12.7.3 像素值和调色板 233
    12.7.4 位图操作函数 233
    12.7.5 字体和文本输出 234
    12.7.6 绘制图形 236
    12.8 实例——MiniQQ界面设计 238
    12.8.1 登录窗口 239
    12.8.2 好友列表窗口 242
    12.8.3 聊天窗口 246
    12.8.4 其他 248
    12.9 小结 248
    12.10 习题 249
    第13章 各类驱动设计和
    引导程序 250
    13.1 CAN总线和SJA1000介绍 250
    13.1.1 SJA1000寄存器介绍 250
    13.1.2 SJA1000与S3C2440连接 254
    13.1.3 SJA1000的驱动程序 256
    13.2 SD卡驱动 266
    13.2.1 块设备驱动设计 266
    13.2.2 SD卡驱动程序分析 266
    13.2.3 SD卡驱动程序设计 266
    13.3 网络驱动 269
    13.3.1 DM9000芯片介绍 269
    13.3.2 重要数据结构 269
    13.3.3 网络设备初始化 271
    13.3.4 激活和关闭网络设备 274
    13.3.5 中断控制的实现 274
    13.3.6 发送过程的实现 276
    13.3.7 接收过程的实现 278
    13.4 引导程序 280
    13.4.1 Boot Loader 281
    13.4.2 vivi简介 281
    13.4.3 U-Boot简介 290
    13.5 小结 295
    13.6 习题 295
    第14章 内核移植 296
    14.1 Linux内核结构 296
    14.2 Linux源码结构 298
    14.2.1 arch目录 298
    14.2.2 drivers目录 298
    14.2.3 fs目录 299
    14.2.4 其他目录 300
    14.3 内核编译 302
    14.3.1 编译准备 302
    14.3.2 设置Flash分区 302
    14.3.3 配置内核 305
    14.4 内核配置选项 307
    14.4.1 常规设置 307
    14.4.2 模块和块设备层 309
    14.5 下载内核 309
    14.6 内核调试 310
    14.6.1 内核调试步骤 310
    14.6.2 常见内核问题 311
    14.7 小结 312
    14.8 习题 312
    第4篇 嵌入式开发实战

    第15章 综合案例—
    嵌入式B超 313
    15.1 系统终端的结构设计 313
    15.1.1 总体结构 313
    15.1.2 显示控制芯片选型 314
    15.2 系统终端的软件设计 314
    15.2.1 U-Boot 314
    15.2.2 嵌入式Linux移植 315
    15.2.3 MiniGUI移植 315
    15.3 FPGA与ARM接口设计 318
    15.3.1 硬件连接 318
    15.3.2 FPGA驱动程序设计 318
    15.4 显示芯片的连接与控制 319
    15.4.1 选择SM501的原因 320
    15.4.2 SM501驱动程序设计 320
    15.5 超声动态图像的实时显示 321
    15.5.1 图像动态显示 322
    15.5.2 坐标转换和灰度插值 322
    15.6 图形界面的结构 323
    15.6.1 需求分析 323
    15.6.2 总体结构 324
    15.6.3 网络通信 324
    15.6.4 多线程编程 325
    15.7 操作界面设计 326
    15.7.1 区域分配 326
    15.7.2 键盘响应 326
    15.7.3 控件设计 327
    15.8 测量模块设计 328
    15.8.1 椭圆的画法 328
    15.8.2 椭圆测量周长和面积 329
    15.8.3 轨迹法测量面积 329
    15.9 小结 330
    15.10 习题 330
  • 内容简介:
    第1篇为嵌入式基础,介绍了嵌入式系统入门、嵌入式软硬件系统、嵌入式Linux、软件开发环境建立和嵌入式开发的C语言基础;第2篇是嵌入式系统基础,介绍了ARM的内部资源、ARM处理器、ADS集成开发环境等;第3篇是嵌入式设备驱动与移植,介绍了Linux设备驱动、各类驱动设计和引导程序、内核移植等相关知识点;最后一篇通过一个真正的嵌入式B超程序案例详解嵌入式开发的完整过程,以此提高读者的实战水平。
  • 作者简介:
    作者技术涉猎广泛,熟悉Intel IXA架构网络处理器、ARM体系结构、MIPS体系结构和TCP/IP网络协议栈等。目前担任嵌入式软件研发工程师和软件研发工程师,从事某公司骨干网P2P流量管理设备的研发。
  • 目录:
    第1篇  嵌入式开发基础

    第1章 嵌入式系统基础 1
    1.1 嵌入式处理器简介 1
    1.1.1 嵌入式微处理器 2
    1.1.2 嵌入式微控制器 2
    1.1.3 嵌入式数字信号处理器 2
    1.1.4 嵌入式片上系统 3
    1.2 ARM微处理器简介 3
    1.3 嵌入式操作系统概述 4
    1.4 搭建嵌入式开发环境 5
    1.4.1 Ubuntu16.04的安装 5
    1.4.2 Minicom的安装配置 8
    1.4.3 Tftp服务的安装配置 9
    1.4.4 NFS的安装配置 10
    1.4.5 建立交叉工具链 12
    1.5 启动目标板系统 16
    1.5.1 Boot Loader和Kernel 16
    1.5.2 根文件系统 18
    1.6 小结 19
    1.7 习题 19
    第2章 嵌入式C语言开发流程 20
    2.1 命令行下的开发流程 20
    2.1.1 编写代码 20
    2.1.2 编译程序 21
    2.1.3 运行程序 22
    2.1.4 交叉编译 22
    2.1.5 编写Makefile 23
    2.2 基于Eclipse的开发流程 24
    2.2.1 下载和安装Eclipse 24
    2.2.2 新建工程 25
    2.2.3 编写代码 26
    2.2.4 编译工程 26
    2.2.5 运行程序 28
    2.3 小结 28
    2.4 习题 28
    第3章 Linux操作基础 29
    3.1 Linux的基本概念 29
    3.1.1 文件 29
    3.1.2 目录 29
    3.1.3 分区 31
    3.1.4 挂载 31
    3.1.5 用户系统 31
    3.1.6 用户权限 32
    3.1.7 shell 32
    3.1.8 环境变量 33
    3.2 Linux的命令行 33
    3.2.1 执行命令 34
    3.2.2 参数 34
    3.2.3 重定向符号 34
    3.2.4 获取帮助 35
    3.3 Linux的常用命令 36
    3.3.1 文件管理 36
    3.3.2 内容管理 39
    3.3.3 权限管理 40
    3.3.4 备份压缩 41
    3.3.5 系统设置 43
    3.3.6 进程控制 45
    3.3.7 网络设置 47
    3.4 小结 48
    3.5 习题 49
    第4章 嵌入式C编程基础 50
    4.1 C语言概述 50
    4.1.1 C语言程序的结构 50
    4.1.2 C语言的语句 51
    4.1.3 C语言的关键字 51
    4.1.4 C语言程序设计步骤 51
    4.2 数据类型 52
    4.2.1 常量与变量 52
    4.2.2 整型数据、实型数据 52
    4.2.3 字符型数据 53
    4.3 运算符和表达式 53
    4.3.1 算术运算符 53
    4.3.2 关系和逻辑运算符 53
    4.3.3 位操作符 54
    4.3.4 ?操作符 55
    4.3.5 表达式的优先级 55
    4.4 流程控制 55
    4.4.1 顺序程序设计 55
    4.4.2 选择结构设计 56
    4.4.3 循环结构设计 57
    4.5 函数 58
    4.5.1 函数定义的一般形式 58
    4.5.2 函数的参数和函数的值 59
    4.5.3 函数的调用 59
    4.5.4 局部变量和全局变量 60
    4.6 数组、指针 61
    4.6.1 数组 61
    4.6.2 指针的基本概念 62
    4.6.3 指针与数组 64
    4.6.4 指针与字符串 66
    4.6.5 指针与函数 67
    4.6.6 指针其他用法 68
    4.6.7 动态内存管理 68
    4.7 小结 69
    4.8 习题 69

    第2篇 嵌入式系统基础

    第5章 S3C2440的内部资源 70
    5.1 S3C2440微处理器 70
    5.1.1 主要结构 70
    5.1.2 片内资源 70
    5.1.3 体系结构 71
    5.2 S3C2440存储器映射 71
    5.2.1 bank0总线宽度 72
    5.2.2 nWAIT引脚的作用 73
    5.2.3 nXBREQ/nXBACK引脚操作 73
    5.3 S3C2440内部资源详解 73
    5.3.1 Cache高速缓存 74
    5.3.2 时钟和电源管理 74
    5.3.3 中断控制器 75
    5.3.4 脉冲带宽调制(PWM)定时器 76
    5.3.5 实时时钟(RTC) 77
    5.3.6 通用I/O端口 77
    5.3.7 LCD控制器 77
    5.3.8 UART控制器 78
    5.3.9 A/D转换和触摸屏接口 79
    5.3.10 看门狗定时器 79
    5.3.11 IIC总线接口 79
    5.3.12 AC97音频解码器接口 80
    5.3.13 USB设备控制器 80
    5.3.14 SD接口 81
    5.3.15 SPI接口 81
    5.3.16 相机接口 82
    5.3.17 工作电压 82
    5.4 小结 82
    5.5 习题 82
    第6章 ARM微处理器 84
    6.1 ARM微处理器的结构 84
    6.1.1 体系结构 84
    6.1.2 寄存器结构 85
    6.1.3 指令结构 85
    6.2 ARM微处理器的选择 85
    6.2.1 内核的选择 85
    6.2.2 工作频率的选择 85
    6.2.3 芯片内存储器的选择 86
    6.2.4 片内外围电路的选择 86
    6.3 ARM微处理器的指令集 86
    6.3.1 ARM微处理器的指令分类和
    格式 86
    6.3.2 指令的条件域 87
    6.3.3 跳转指令 88
    6.3.4 数据处理指令 88
    6.3.5 乘法指令与乘加指令 92
    6.3.6 程序状态寄存器访问指令 94
    6.3.7 加载/存储指令 95
    6.3.8 批量数据加载/存储指令 97
    6.3.9 数据交换指令 97
    6.3.10 移位指令 98
    6.3.11 协处理器指令 99
    6.3.12 异常产生指令 100
    6.4 ARM微处理器指令的寻址方式 101
    6.4.1 立即寻址 101
    6.4.2 寄存器寻址 101
    6.4.3 寄存器间接寻址 101
    6.4.4 基址变址寻址 102
    6.4.5 多寄存器寻址 102
    6.4.6 相对寻址 102
    6.4.7 堆栈寻址 102
    6.5 小结 103
    6.6 习题 103
    第7章 ADS集成开发环境 104
    7.1 命令行开发工具 104
    7.1.1 使用armcc 104
    7.1.2 使用armlink 106
    7.1.3 ARM运行时库 106
    7.1.4 CodeWarrior集成开发环境 107
    7.1.5 ADS调试器 109
    7.2 使用ADS创建工程 109
    7.2.1 创建新工程 109
    7.2.2 编译和链接工程 112
    7.2.3 ARM fromELF工具 114
    7.2.4 在命令行下编译工程 115
    7.3 使用AXD调试代码 116
    7.3.1 打开调试文件 116
    7.3.2 查看存储器内容 117
    7.3.3 设置断点 118
    7.3.4 查看变量值 118
    7.4 小结 119
    7.5 习题 119
    第8章 S3C2440的外部电路 120
    8.1 核心板电路 120
    8.1.1 晶振电路 120
    8.1.2 复位电路 120
    8.1.3 启动配置电路 120
    8.1.4 FLASH存储器(内存) 121
    8.1.5 SDRAM存储器(闪存) 123
    8.2 底板电路 124
    8.2.1 电源电路 125
    8.2.2 串口电路 125
    8.2.3 USB接口 126
    8.2.4 以太网接口 127
    8.2.5 JTAG调试接口 127
    8.2.6 音频接口 128
    8.2.7 LCD接口 129
    8.2.8 SD卡接口 129
    8.3 小结 130
    8.4 习题 130
    第9章 嵌入式Linux文件系统 131
    9.1 嵌入式文件系统基础 131
    9.1.1 NOR FLASH存储器 131
    9.1.2 NAND FLASH存储器 132
    9.1.3 MTD简介 132
    9.1.4 日志型文件系统 133
    9.1.5 BusyBox 134
    9.2 CramFS文件系统 136
    9.2.1 CramFS文件系统的特性 136
    9.2.2 CramFS文件系统映像文件的
    结构 137
    9.2.3 CramFS文件系统的工作原理 137
    9.2.4 CramFS文件系统的初始化
    过程 138
    9.2.5 CramFS文件系统的制作 139
    9.2.6 CramFS文件系统的挂载流程 141
    9.3 基于RAM的文件系统 142
    9.3.1 Ramdisk文件系统 142
    9.3.2 RamFS/TmpFS文件系统 143
    9.4 嵌入式文件系统的设计 145
    9.4.1 文件系统格式选择的基本策略 145
    9.4.2 混合型文件系统格式设计方法 145
    9.5 小结 146
    9.6 习题 146
    第10章 内存和信号量 148
    10.1 共享内存 148
    10.1.1 共享内存的定义 148
    10.1.2 涉及的系统调用 148
    10.1.3 共享内存举例 150
    10.2 System V共享内存 152
    10.2.1 System V共享内存的定义 152
    10.2.2 System V涉及的系统调用 152
    10.2.3 System V共享内存举例 153
    10.3 消息队列 154
    10.3.1 消息队列的定义 154
    10.3.2 消息队列涉及的系统调用 154
    10.3.3 消息队列举例 156
    10.4 System V信号量 158
    10.4.1 System V信号量的定义 158
    10.4.2 System V信号量涉及的系统
    调用 159
    10.4.3 System V信号量举例 160
    10.5 POSIX信号量 163
    10.5.1 POSIX信号量的定义 163
    10.5.2 POSIX信号量涉及的系统
    调用 163
    10.5.3 POSIX信号量举例 164
    10.6 小结 165
    10.7 习题 166
    第3篇 嵌入式设备驱动与移植

    第11章 设备驱动开发基础 167
    11.1 Linux设备管理和驱动概述 167
    11.1.1 Linux设备的分类 167
    11.1.2 设备驱动程序的作用 167
    11.1.3 访问设备的实现 168
    11.1.4 Linux设备控制方式 168
    11.2 Linux设备驱动开发流程 169
    11.2.1 构造和运行模块 170
    11.2.2 字符设备驱动编写 171
    11.2.3 字符设备驱动示例 172
    11.2.4 并发控制 174
    11.2.5 阻塞与非阻塞 180
    11.2.6 select和poll 183
    11.2.7 中断处理 185
    11.2.8 内存与I/O操作 187
    11.3 块设备驱动编写 191
    11.3.1 块设备的I/O操作特点 191
    11.3.2 block_device_operations
    结构体 191
    11.3.3 gendisk结构体 192
    11.3.4 request结构体 193
    11.3.5 request操作函数 196
    11.3.6 bio结构体 197
    11.3.7 注册与注销 199
    11.3.8 加载与卸载 199
    11.3.9 打开与释放 201
    11.3.10 ioctl函数 202
    11.3.11 I/O请求处理 202
    11.4 小结 206
    11.5 习题 206
    第12章 MiniGUI图形界面设计 207
    12.1 MiniGUI概述 207
    12.1.1 MiniGUI的特点 207
    12.1.2 MiniGUI运行模式 208
    12.2 MiniGUI的安装和使用 208
    12.2.1 安装MiniGUI库 208
    12.2.2 安装MiniGUI的资源 209
    12.2.3 配置MiniGUI 210
    12.2.4 编译应用程序例子 210
    12.2.5 交叉编译MiniGUI库 210
    12.2.6 交叉编译例程 211
    12.2.7 QVFB图形引擎 211
    12.2.8 FrameBuffer图形引擎 212
    12.3 利用Eclipse编写MiniGUI程序 213
    12.3.1 建立vacs工程 213
    12.3.2 配置编译选项 214
    12.3.3 配置外部工具QVFB 214
    12.3.4 运行vacs 215
    12.3.5 调试vacs 215
    12.4 MiniGUI的编程基础 215
    12.4.1 头文件 217
    12.4.2 程序入口 217
    12.4.3 创建和显示主窗口 217
    12.4.4 进入消息循环 218
    12.4.5 窗口过程函数 219
    12.4.6 屏幕输出 219
    12.4.7 程序的退出 219
    12.5 消息循环和窗口过程 220
    12.5.1 消息处理函数 220
    12.5.2 重要的消息 221
    12.5.3 窗口及窗口过程 221
    12.6 对话框和控件编程 223
    12.6.1 控件的概念 223
    12.6.2 预定义控件 223
    12.6.3 自定义控件 225
    12.6.4 控件子类化 226
    12.6.5 对话框和对话框模板 227
    12.6.6 模态和非模态对话框 230
    12.7 图形设备接口 230
    12.7.1 图形设备上下文 230
    12.7.2 矩形操作和区域操作 231
    12.7.3 像素值和调色板 233
    12.7.4 位图操作函数 233
    12.7.5 字体和文本输出 234
    12.7.6 绘制图形 236
    12.8 实例——MiniQQ界面设计 238
    12.8.1 登录窗口 239
    12.8.2 好友列表窗口 242
    12.8.3 聊天窗口 246
    12.8.4 其他 248
    12.9 小结 248
    12.10 习题 249
    第13章 各类驱动设计和
    引导程序 250
    13.1 CAN总线和SJA1000介绍 250
    13.1.1 SJA1000寄存器介绍 250
    13.1.2 SJA1000与S3C2440连接 254
    13.1.3 SJA1000的驱动程序 256
    13.2 SD卡驱动 266
    13.2.1 块设备驱动设计 266
    13.2.2 SD卡驱动程序分析 266
    13.2.3 SD卡驱动程序设计 266
    13.3 网络驱动 269
    13.3.1 DM9000芯片介绍 269
    13.3.2 重要数据结构 269
    13.3.3 网络设备初始化 271
    13.3.4 激活和关闭网络设备 274
    13.3.5 中断控制的实现 274
    13.3.6 发送过程的实现 276
    13.3.7 接收过程的实现 278
    13.4 引导程序 280
    13.4.1 Boot Loader 281
    13.4.2 vivi简介 281
    13.4.3 U-Boot简介 290
    13.5 小结 295
    13.6 习题 295
    第14章 内核移植 296
    14.1 Linux内核结构 296
    14.2 Linux源码结构 298
    14.2.1 arch目录 298
    14.2.2 drivers目录 298
    14.2.3 fs目录 299
    14.2.4 其他目录 300
    14.3 内核编译 302
    14.3.1 编译准备 302
    14.3.2 设置Flash分区 302
    14.3.3 配置内核 305
    14.4 内核配置选项 307
    14.4.1 常规设置 307
    14.4.2 模块和块设备层 309
    14.5 下载内核 309
    14.6 内核调试 310
    14.6.1 内核调试步骤 310
    14.6.2 常见内核问题 311
    14.7 小结 312
    14.8 习题 312
    第4篇 嵌入式开发实战

    第15章 综合案例—
    嵌入式B超 313
    15.1 系统终端的结构设计 313
    15.1.1 总体结构 313
    15.1.2 显示控制芯片选型 314
    15.2 系统终端的软件设计 314
    15.2.1 U-Boot 314
    15.2.2 嵌入式Linux移植 315
    15.2.3 MiniGUI移植 315
    15.3 FPGA与ARM接口设计 318
    15.3.1 硬件连接 318
    15.3.2 FPGA驱动程序设计 318
    15.4 显示芯片的连接与控制 319
    15.4.1 选择SM501的原因 320
    15.4.2 SM501驱动程序设计 320
    15.5 超声动态图像的实时显示 321
    15.5.1 图像动态显示 322
    15.5.2 坐标转换和灰度插值 322
    15.6 图形界面的结构 323
    15.6.1 需求分析 323
    15.6.2 总体结构 324
    15.6.3 网络通信 324
    15.6.4 多线程编程 325
    15.7 操作界面设计 326
    15.7.1 区域分配 326
    15.7.2 键盘响应 326
    15.7.3 控件设计 327
    15.8 测量模块设计 328
    15.8.1 椭圆的画法 328
    15.8.2 椭圆测量周长和面积 329
    15.8.3 轨迹法测量面积 329
    15.9 小结 330
    15.10 习题 330
查看详情
系列丛书 / 更多
嵌入式Linux开发教程
Linux操作系统(第3版)
何绍华、臧玮、孟学奇 著
嵌入式Linux开发教程
Linux实用教程(第3版)
於岳 著
嵌入式Linux开发教程
Ubuntu Linux操作系统实用教程
杜焱、廉哲、李耸 著
相关图书 / 更多
嵌入式Linux开发教程
嵌入式金融:金融技术应用新革命
[美]斯嘉丽·西贝尔(Scarlett Sieber);[英]苏菲·吉博(Sophie Guibaud)
嵌入式Linux开发教程
嵌入式系统及应用
付少华主编
嵌入式Linux开发教程
嵌入式系统应用开发——基于NI LabVIEW&myRIO的设计与实现
杨帆;张彩丽;刘晋东;李宁
嵌入式Linux开发教程
嵌入式单片机技术实战教程
郭海如;熊曾刚;李志敏;赵恒;谈怀江;刘江华;万青;万兴
嵌入式Linux开发教程
嵌入式人工智能
杨峰
嵌入式Linux开发教程
嵌入城市:农民工永久迁移意愿及其影响因素研究
陆文荣
嵌入式Linux开发教程
嵌入式Linux系统开发 ——基于ARM处理器通用平台(第2版)
冯新宇;蒋洪波;程坤
嵌入式Linux开发教程
嵌入式系统集成开发
代红英;李奇兵;董旭斌;陆鹏;陶翠微
嵌入式Linux开发教程
嵌入式系统原理及应用——基于STM32和RT-Thread
胡永涛
嵌入式Linux开发教程
嵌入式技术及应用(STM32CubeMX版)
李文华
嵌入式Linux开发教程
嵌入式Linux系统原理与应用(微课视频版)
王剑;孙庆生
嵌入式Linux开发教程
嵌入式Linux驱动开发实践
朱文伟 李建英
您可能感兴趣 / 更多
嵌入式Linux开发教程
3dsMax工业产品设计实例精讲教程
宋娟、宋超、张文皓 著
嵌入式Linux开发教程
基于BIM技术的绿色建筑施工新方法研究
宋娟、贺龙喜、杨期柱、李斌 著
嵌入式Linux开发教程
地震学基础
宋娟、黄建平 著
嵌入式Linux开发教程
建设用地节约集约利用研究丛书:建设用地节约集约利用机理研究
宋娟、江曼琦、张伟 著;刘子利、蔡云鹏、路红 编
嵌入式Linux开发教程
劳动人事争议案例/高等教育自学考试人力资源和社会保障专业本科教材
宋娟、人力资源和社会保障部调解仲裁管理司 编
嵌入式Linux开发教程
零基础学会计
宋娟、董富贵 著