ARM嵌入式Linux系统开发技术详解(含光盘1张)
分類: 图书,计算机/网络,操作系统/系统开发,LINUX ,
作者: 杨水清等编著
出 版 社: 电子工业出版社
出版时间: 2008-11-1字数: 1095000版次: 1页数: 620印刷时间: 2008/11/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787121074691包装: 平装编辑推荐
继《Windows驱动开发技术详解》之后又一本心血力作!原创经典,嵌入式系统一线工程师倾力打造。深入Linux系统底层和内核,透析ARM嵌入式Linux系统开发的本质。通过嵌入式系统开发实例,归纳ARM嵌入式Linux系统开发的整个过程。
内容循序渐进,从硬件平台诜择、开发环境构建、Linux移植到软硬件协同调试等一气呵成,介绍了多种工具软件,如ADS、VIM、GCC、GDB、MAKE、Eclipse等,紧跟ARM嵌入式系统开发技术步伐,深入讲解嵌入式Linux的多任务编程、网络编程等,通过实例讲解CAN总线、SD卡、网络设备等驱动程序的具体开发过程,详细讲解开发嵌入式B超综合案例,总结实际项国开发过程。
内容简介
本书由浅入深、通俗易懂地讲解了嵌入式Linux的系统设计与开发。全书共25章,从嵌入式处理器ARM开始,讲解了ARM处理器的资源、ARM的指令集、ADS开发工具、嵌入式系统硬件环境的构建、Boot Loader、Linux内核移植、嵌入式文件系统、嵌入式Linux多任务程序开发、嵌入式Linux设备驱动开发、嵌入式Linux网络程序开发、MiniGUI图形界面开发、设备驱动开发案例、综合案例等内容。书中通过大量的例程来讲解知识要点,并提供了大量极有参考价值的开发案例,读者可以通过这些例程和开发案例对嵌入式Linux开发有一个系统的学习和提高。
本书共有四个方面的内容。在嵌入式系统的硬件结构中讲述了嵌入式处理器ARM的特点、嵌入式系统硬件环境的构建和ADS开发工具的使用。在嵌入式Linux系统移植中讲述了目标板软件环境的构建,主要包括Boot Loader、Linux内核、文件系统以及交叉开发环境的构建。在嵌入式Linux软件开发中讲述了嵌入式Linux C语言开发工具的使用、标准库的使用、多任务开发基础和设备驱动开发基础。在嵌入式应用系统实例分析中讲述了嵌入式Linux的网络程序开发、MiniGUI图形界面开发、CAN总线设备驱动设计、DM9000网络驱动设计、SD卡驱动设计和嵌入式B超系统设计。
本书语言通俗易懂,内容丰富,注重理解与实例,知识涵盖面广。非常适合从事嵌入式Linux系统开发的初级工程师、高校学生、Linux程序开发人员阅读和学习。
作者简介
杨水清,国防科技大学电子科学与工程学院ATR实验室工程师,主要从事ASIC、嵌入式系统硬件开发及红外目标自动识别等领域的研究工作,曾经参与多项重大科技项目攻关。
目录
第1章 嵌入式系统概述
1.1 嵌入式系统简介
1.1.1 嵌入式系统
1.1.2 嵌入式系统的特点
1.1.3 嵌入式系统的发展趋势
1.2 嵌入式系统中的处理器
1.2.1 微处理器
1.2.2 微控制器
1.2.3 数字信号处理器
1.2.4 嵌入式片上系统
1.3 嵌入式系统中的软件系统
1.3.1 嵌入式系统中的软件系统
1.3.2 嵌入式系统软件开发的一般过程
1.3.3 嵌入式应用程序的开发
1.4 本章小结
第2章 快速体验——目标板
2.1 目标板结构
2.2 ARM初体验
2.2.1 测试ARM处理器
2.2.2 安装ADS 1.2
2.2.3 安装Multi-ICE和配置AXD
2.2.4 ADS的简单使用
2.2.5 使用Telnet和ftp
2.3 本章小结
第3章 ARM的内部资源
3.1 S3C2440微处理器
3.1.1 主要结构
3.1.2 片内资源
3.1.3 体系结构
3.2 S3C2440存储器映射
3.2.1 bank0总线宽度
3.2.2 nWAIT引脚的作用
3.2.3 nXBREQ/nXBACK引脚操作
3.3 S3C2440内部资源详解
3.3.1 Cache高速缓存
3.3.2 时钟和电源管理
3.3.3 中断控制器
3.3.4 脉冲带宽调制定时器(PWM)
3.3.5 实时时钟(RTC)
3.3.6 通用I/O端口
3.3.7 LCD控制器
3.3.8 UART控制器
3.3.9 A/D转换和触摸屏接口
3.3.10 看门狗定时器
3.3.11 IIC总线接口
3.3.12 AC97音频解码器接口
3.3.13 USB设备控制器
3.3.14 SD接口
3.3.15 SPI接口
3.3.16 相机接口
3.3.17 工作电压
3.4 本章小结
第4章 熟悉ARM处理器
4.1 为什么用ARM
4.2 ARM公司简介
4.3 ARM微处理器系列
4.3.1 ARM7微处理器
4.3.2 ARM9微处理器
4.3.3 ARM10微处理器
4.3.4 ARM11微处理器
4.4 ARM微处理器的结构
4.4.1 体系结构
4.4.2 寄存器结构
4.4.3 指令结构
4.5 ARM微处理器的选择
4.5.1 内核的选择
4.5.2 工作频率的选择
4.5.3 芯片内存储器的选择
4.5.4 片内外围电路的选择
4.6 ARM的指令集概述
4.6.1 ARM微处理器的指令分类和格式
4.6.2 指令的条件域
4.7 ARM指令的寻址方式
4.7.1 立即寻址
4.7.2 寄存器寻址
4.7.3 寄存器间接寻址
4.7.4 基址变址寻址
4.7.5 多寄存器寻址
4.7.6 相对寻址
4.7.7 堆栈寻址
4.8 ARM指令集详解
4.8.1 跳转指令
4.8.2 数据处理指令
4.8.3 乘法指令与乘加指令
4.8.4 程序状态寄存器访问指令
4.8.5 加载/存储指令
4.8.6 批量数据加载/存储指令
4.8.7 数据交换指令
4.8.8 移位指令
4.8.9 协处理器指令
4.8.10 异常产生指令
4.9 本章小结
第5章 熟悉ADS集成开发环境
5.1 命令行开发工具
5.1.1 armcc介绍
5.1.2 armcc用法详解
5.1.3 armlink介绍
5.1.4 armlink用法详解
5.1.5 ARM运行时库
5.1.6 CodeWarrior集成开发环境
5.1.7 ADS调试器
5.1.8 实用程序
5.1.9 支持的软件
5.2 使用ADS创建工程
5.2.1 建立一个工程
5.2.2 编译和链接工程
5.2.3 target设置选项
5.2.4 Language Settings
5.2.5 Linker设置
5.2.6 ARM fromELF工具
5.2.7 命令行下编译工程
5.3 使用AXD调试代码
5.3.1 打开调试文件
5.3.2 查看存储器内容
5.3.3 设置断点
5.3.4 查看变量值
5.4 本章小结
第6章 ARM的外部电路
6.1 核心板电路
6.1.1 晶振电路
6.1.2 复位电路
6.1.3 启动配置电路
6.1.4 FLASH接口
6.1.5 SDRAM接口
6.2 底板电路
6.2.1 电源电路
6.2.2 串口电路
6.2.3 USB接口
6.2.4 以太网接口
6.2.5 JTAG调试接口
6.2.6 音频接口
6.2.7 LCD接口
6.2.8 SD卡接口
6.3 本章小结
第7章 嵌入式操作系统概述
7.1 操作系统的结构和功能
7.2 进程管理
7.2.1 进程的描述
7.2.2 进程的调度
7.3 存储管理
7.3.1 存储器的体系结构
7.3.2 内存管理的基本概念
7.3.3 连续分配存储管理方式
7.3.4 页式存储管理方式
7.4 文件管理
7.4.1 文件
7.4.2 目录
7.4.3 EXT2文件系统
7.5 设备管理
7.5.1 设备的分类
7.5.2 数据传输控制方式
7.5.3 中断处理
7.5.4 设备驱动程序
7.6 嵌入式操作系统的特点
7.6.1 嵌入式操作系统的发展
7.6.2 嵌入式操作系统的优势
7.6.3 嵌入式操作系统的分类
7.7 常见的嵌入式操作系统
7.7.1 VxWorks
7.7.2 pSOS
7.7.3 Palm OS
7.7.4 QNX
7.7.5 Windows CE
7.7.6 μC/OS-II
7.7.7 嵌入式Linux
7.8 本章小结
第8章 快速体验——构建开发环境
8.1 交叉开发环境介绍
8.2 主机与目标板的连接方式
8.2.1 串口通信接口
8.2.2 以太网接口
8.2.3 USB接口
8.2.4 JTAG接口
8.3 建立主机开发环境
8.3.1 Ubuntu .06的安装
8.3.2 Minicom的安装配置
8.3.3 Tftp服务的安装配置
8.3.4 NFS的安装配置
8.3.5 建立交叉工具链
8.4 启动目标板系统
8.4.1 Bootloader和Kernel
8.4.2 根文件系统
8.5 本章小结
第9章 Linux使用基础
9.1 Linux的基本概念
9.1.1 文件
9.1.2 目录
9.1.3 分区
9.1.4 挂载
9.1.5 用户系统
9.1.6 用户权限
9.1.7 shell
9.1.8 环境变量
9.2 Linux的命令行
9.2.1 执行命令
9.2.2 参数
9.2.3 重定向符号
9.2.4 获取帮助
9.3 Linux的常用命令
9.3.1 文件管理
9.3.2 内容管理
9.3.3 权限管理
9.3.4 备份压缩
9.3.5 系统设置
9.3.6 进程控制
9.3.7 网络设置
9.4 本章小结
第10章 Boot Loader
10.1 Boot Loader的概念
10.1.1 Boot Loader所支持的嵌入式体系
10.1.2 Boot Loader的安装位置
10.1.3 Boot Loader的启动过程
10.1.4 Boot Loader与主机的通信
10.1.5 Boot Loader的操作模式
10.2 Boot Loader的基本结构
10.2.1 Boot Loader的stage1
10.2.2 Boot Loader的stage2
10.3 vivi简介
10.3.1 vivi的体系架构
10.3.2 vivi启动的第一阶段
10.3.3 vivi启动的第二阶段
10.4 vivi的基本命令
10.4.1 mem命令
10.4.2 load命令
10.4.3 part命令
10.4.4 param命令
10.4.5 boot命令
10.4.6 go命令
10.4.7 bon命令
10.4.8 reset命令
10.4.9 help命令
10.5 U-Boot简介
10.5.1 U-Boot的特点
10.5.2 U-Boot的目录结构
10.5.3 U-Boot的启动过程
10.5.4 U-Boot的移植
10.6 U-Boot的基本命令
10.6.1 设置环境变量
10.6.2 数据通信
10.6.3 存储器操作
10.6.4 系统引导
10.6.5 其他
10.7 本章小结
第11章 Linux内核移植
第12章 嵌入式Linux文件系统
第13章 嵌入式Linux C语言开发工具
第14章 快速体验——嵌入式C语言开发流程
第15章 嵌入式Linux C语言基础
第16章 嵌入式Linux C语言标准库
第17章 嵌入式Linux的多任务编程
第18章 多任务间通信和同步
第19章 设备驱动开发基础
第20章 嵌入式Linux的网络编程
第21章 MiniGUI图形界面设计
第22章 CAN总线驱动设计
第23章 SD卡驱动设计
第24章 网络驱动设计
第25章 综合案例——嵌入式B超
书摘插图
嵌入式系统(Embeded System)是计算机技术、通信技术、半导体技术、微电子技术、语音图像数据传输技术,甚至传感器等先进技术和具体应用对象相结合后的更新换代产品。因此往往是技术密集、投资强度大、高度分散、不断创新的知识密集型系统,反映当代最新技术的先进水平。嵌入式系统不仅和一般的PC机上的应用系统不同,就是针对不同的具体应用而设计的嵌入式系统之间差别也很大。嵌入式系统一般功能单一、简单,且在兼容性方面要求不高,但是在大小、成本方面限制较多。嵌入式计算机基本上不能算是嵌入式系统,它仍然是计算机一类,只不过是工作条件有所不同而已,因为它还保留了计算机的基本。
1.1嵌入式系统简介
事实上,在很早以前,嵌入式这个概念就已经存在了。在通信方面,嵌入式系统在20世纪60年代就用于对电子机械电话交换的控制,当时被称为“存储式程序控制系统”(Stored Program Control)。
嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单地说就是系统的应用软件与系统的硬件一体化,类似于BIOS的工作方式。具有软件代码小、高度自动化、响应速度快等特点,特别适合于要求实时的和多任务的体系。
1.1.1嵌入式系统
嵌入式计算机的真正发展是在微处理器问世之后:1971年11月,Intel公司成功地把算术运算器和控制器电路集成在一起,推出了第一款微处理器lntel4004,其后各厂家陆续推出了许多8位、16位的微处理器,包括Intel 8080/8085、8086,Motorola的6800、68000,以及Zilog的Z80、Z8000等。以这些微处理器作为核心所构成的系统,广泛地应用于仪器仪表、医疗设备、机器人、家用电器等领域。微处理器的广泛应用形成了一个广阔的嵌入式应用市场,计算机厂家开始大量地以插件方式向用户提供OEM产品,再由用户根据自己的需要选择一套适合的CPU板、存储器板以及各式I/O插件板,从而构成专用的嵌入式计算机系统,并将其嵌入到自己的系统设备中。
……