引用作为一种16/32位的高性价比的RSIC处理器,ARM成为应用最广泛的嵌入式微处理器之一。目前最流行的当属ARM7和ARM9两个系列。随着对系统性能要求的提高和开发技术的成熟,ARM9有逐渐占领高中端市场的趋势。
本书以ARM9处理器和Linux操作系统为主线,全面介绍了嵌入式系统的开发过程,详细讲解了系统的软硬件设计、调试,以及嵌入式操作系统移植和嵌入式驱动程序开发,从部件编程到嵌入式应用程序设计,都给出了大量的实例。设计实例的源代码和开发过程所需的配置文件均可从网上下载。
本书内容深入浅出,可作为高等院校相关课程的本科生和研究生教材,也可作为嵌入式开发人员的参考用书。
前言
嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统已经渗透到各领域。现在,嵌入式技术无处不在,而ARM几乎成为嵌入式技术的代名词。.
ARM公司(Advanced RISC Machines Ltd.)自1990年11月正式成立以来,在32位RISC(Reduced Instruction Set Computer,精简指令集计算机)CPU开发领域中不断取得突破。ARM作为IP(Intelligence Property,知识产权)供应商,靠转让许可,由合作伙伴公司来生产各具特色的芯片。其设计的芯核具有功耗低、成本低等显著优点,获得众多的半导体厂家和整机厂商的大力支持。在全世界,ARM公司的合作伙伴已超过100家,在32位嵌入式应用领域获得了巨大的成功。鉴于ARM微处理器在国内的逐步推广应用,很多大学已开设了基于ARM的32位微处理器的相关课程。
目前,随着嵌入式技术的不断发展,ARM9处理器已成为嵌入式开发的主流。现在市面上嵌入式系统的书籍可谓不少,但是多数重理论、轻实用,并且多以讲解ARM7为主,而以ARM9为平台的可谓少之又少。本书以ARM920T微处理器为硬件平台,结合Linux操作系统,详细介绍了嵌入式应用系统的设计、调试方法,以及嵌入式驱动程序开发。
本书主要内容
第1章 简要介绍嵌入式系统的基本概念,以及嵌入式处理器和嵌入式操作系统的主要类型。通过本章,读者可对嵌入式技术有一个总体的认识。
第2章 介绍Linux操作系统的基本知识,包括Linux应用、内核结构,以及典型的嵌入式Linux操作系统。通过本章,读者可了解Linux结构的基本知识,为内核移植、驱动程序和应用程序的开发做准备。
第3章 介绍嵌入式系统的设计方法,着重介绍嵌入式开发的调试技术。借助ADS开发环境,通过实例对嵌入式系统的设计方法进行了详细的讲解。通过本章,读者能够掌握在ADS软件平台下开发简单的嵌入式系统应用程序的方法。
第4章 介绍基于S3C42410X的系统的设计全过程,包括存储器及外围芯片的选型,各单元电路的设计、调试等。通过本章,具有一定系统设计知识的读者可以掌握基于S3C2410X的系统设计;同时,由于ARM体系结构的一致性和系统外围电路的通用性,本章所描述的设计方法也同样适合于其他ARM芯片。..
第5章 介绍嵌入式Linux应用程序的开发全过程,包括交叉编译环境的建立,引导程序和内核的移植,以及GNU工具的使用。通过本章,读者可以建立自己的嵌入式开发环境,并掌握应用程序开发的全过程。
第6章 介绍了嵌入式Linux系统设备驱动程序开发的方法,并列举了两个实例来加深读者理解。通过本章,读者可以编写字符型设备驱动程序,并能够完成简单Linux应用程序的开发。
第7章 主要讲述网络驱动和应用程序的开发,包括嵌入式以太网接口设计、驱动程序接口和TCP/IP协议及其实现。通过本章,读者可掌握嵌入式Linux下的网络开发。
第8章 主要讲述音频设备编程,包括S3C2410X的IIS控制器的使用,Linux下音频设备的管理,以及音频应用程序的开发,同时给出了移植媒体播放器的实例。通过本章,读者能够掌握编写嵌入式音频应用程序的能力。
第9章 介绍图形用户界面编辑的内容。随着掌上设备的飞速发展,友好的人机界面也成为开发中的重点。本章介绍几种流行的GUI,重点介绍Qt的编程方法。通过本章,读者能够具有一定的Qt开发的能力。
本书的编写工作由于明组织完成,具体执笔如下:第1,2章由曾祥烨编写;第3,4章由苏彦莽编写;第5章由高军萍编写;第6章由于明编写:第7,8章由范书瑞编写:第9章由赵燕飞编写。最后由范书瑞统稿及定稿。
本书配有网上下载资源(www.broadviewreom.cn):
arm-linux-toolchains.tar是交叉编译器工具链,解压缩到指定目录,在环境变量PATN中引用即可。
Qt目录为Qt/Embeded环境下的实例程序和设置文件,Test目录下为ADS环境下的项目文件,buttons文件下为按键驱程和测试程序,leds文件下为LED驱程和测试程序。
在本书编写过程中,部分资料引用自友善之臂公司网站,并已得到该公司授权。对友善之臂公司的协助,在此谨向他们深表谢意。
由于编者的水平有限,书中的错误在所难免,恳请读者批评指正。
编 者
2006年3月
引用缺封面
目录:
第1章 嵌入式系统设计基础.
1.1 嵌入式系统简介
1.1.1 嵌入式系统的定义
1.1.2 嵌入式系统的组成
1.1.3 嵌入式系统的特点
1.1.4 嵌入式系统的应用
1.1.5 嵌入式系统的发展
1.2 嵌入式处理器
1.2.1 嵌入式处理器的分类
1.2.2 ARM微处理器
1.2.3 Nios微处理器
1.2.4 DSP
1.2.5 嵌入式微处理器的选型原则
1 3 嵌入式操作系统
1.3.1 操作系统的概念和分类
1.3.2 Linux
1.3.3 uC/OS
1.3.4 Windows CE
练习题
.第2章 嵌入式Linux操作系统
2.1 Linux及其应用
2.1.1 Linux与UNIX和GNU
2.1.2 Linux的特点
2.1.3 Linux的发展及应用
2.2 Linux内核
2.2.1 Linux的内核特征
2.2.2 进程管理
2.2.3 内存管理
2.2.4 文件系统管理
2.2.5 设备管理
2.2.6 进程间通信机制
2.3 典型嵌入式Linux系统
2.3.1 uCLinux
2.3.2 RTLinnx
2.3.3 MontaVista Linux
2.3.4 RTAI
练习题
第3章 嵌入式系统的设计方法
3.1 嵌入式系统的总体结构
3.1.1 硬件层
3.1.2 中间层
3.1.3 软件层
3.1.4 功能层
3.2 嵌入式系统开发过程
3.2.1 嵌入式系统的开发特点
3.2.2 嵌入式系统的开发流程
3.2.3 调试嵌入式系统
3.3 ADS集成开发环境的使用
3.3.1 ADS组成介绍
3.3.2 命令行开发工具
3.3.3 利用ADS开发应用程序
3.3.4 编译和链接工程
3.4 用AXD进行代码调试
3.4.1 调试架构
3.4.2 Multi.ICE的配置
3.4.3 使用AXD进行代码调试
3.4.4 生成.bin文件
练习题
第4章 应用系统设计
4.1 系统设计概述
4.2 ARM920T简介
4.2.1 ARM920T系统结构分析
4.2.2 ARM920T内核编程模型
4.3 S3C2410X处理器详解
4.3.1 S3C2410X及片内外围简介
4.3.2 特殊功能寄存器
4.4 单元电路设计
4.4.1 电源电路设计
4.4.2 晶振电路设计
4.4.3 复位电路设计
4.4.4 串行接口电路设计
4.5 存储器系统设计
4.5.1 8位存储器接口设计
4.5.2 Flash接口电路设计
4.5.3 SDRAM接口电路设计
4.6 JTAG调试接口设计
4.6.1 JTAG综述
4.6.2 TAP状态机
4.6.3 接口电路设计
4.7 综合训练之通过JTAG访问外设
4.7.1 烧写Flash
4.7.2 访问处理器寄存器
练习题
第5章 嵌入式Linux应用程序开发..
5.1 开发环境的建立
5.1.1 嵌入式Linux的开发环境
5.1.2 利用Cygwin建立模拟环境
5.1.3 交叉编译环境的建立
5.2 Linux及开发工具的使用
5.2.1 Linux常用命令
5.2.2 gcc编译器的使用
5.2.3 Makefile文件和Make命令
5.2.4 配置文件
5.2.5 vi编辑器的使用
5.2.6 Linux F C语言编程
5.3 引导程序的移植
5.3.1 嵌入式Linux的引导机理分析
5.3.2 VIVI简介
5.3.3 VlVI的代码分析与移植
5.4 Linux操作系统的移植
5.4.1 内核移植
5.4.2 系统移植
5.5 应用程序的调试
5.5.1 建立连接
5.5.2 编写应用程序
5.5.3 下载应用程序
5.5.4 调试应用程序
5.6 综合训练之建立嵌入式操作系统
练习题
第6章 嵌入式Linux驱动程序开发
6.1 嵌入式Linux的设备管理
6.1.1 处理器与设备间数据交换方式
6.1.2 设备驱动程序的概念
6.1.3 驱动程序结构
6.2 设备驱动程序的开发过程
6.2.1 模块化驱动程序设计
6.2.2 设备注册和初始化
6.2.3 中断管理
6.2.4 设备驱动开发的基本函数
6.2.5 加载和卸载驱动程序
6.3 LED驱动程序设计
6.3.1 LED接口设计
6.3.2 LED驱动程序代码分析
6.3.3 加载运行LED驱动程序
6.4 按键驱动程序设计
6.4.1 S3C2410X中断控制器
6.4.2 S3C2410X中断接口函数
6.4.3 键盘驱动代码设计
6.4.4 按键测试程序的实现
练习题
第7章 嵌入式网络程序设计
7.1 嵌入式以太网基础知识
7.1.1 以太网技术及其嵌入式应用
7.1.2 嵌入式系统中主要处理的网络协议
7.2 以太网接口设计
7.2.1 网络设备驱动程序基本结构
7.2.2 基于CS8900A的以太网接口设计
7.2.3 网络驱动程序实例
7.3 Linux网络编程实现
7.3.1 socket基本函数
7.3.2 TCP编程实例
7.3.3 综合训练之UDP编程实现
练习题
第8章 Linux下音频设备编程
8.1 音频信号基础
8.1.1 数字音频信号
8.1.2 音频文件格式
8.1.3 WAVE文件格式剖析
8.2 基于IIS接口的音频系统
8.2.1 IIs接口控制原理
8.2.2 音频接口电路设计
8.2.3 音频接口程序设计
8.3 音频设备程序的实现
8.3.1 音频编程接口
8.3.2 音频设备文件
8.3.3 音频设备编程设计
8.4 综合训练之媒体播放器移植
练习题
第9章 嵌入式Linux用户图形界面编程
9.1 Linux图形开发基础
9.1.1 GUI的一般架构
9.1.2 嵌入式GUI底层支持库
9.1.3 嵌入式GUI高级函数库
9.2 嵌入式Linux图形用户界面简介
9.2.1 Qt/Embedded
9.2.2 Microwindows/NanO-X
9.2.3 MiniGUI
9.2.4 OpenGUI
9.3 Qt/Embedded嵌入式图形开发基础
9.3.1 Qt/Embedded概述
9.3.2 创建Qt/Embedded开发环境
9.3.3 Qt/Embedded的使用
9.4 综合训练之Hello程序
9.4.1 Qt/Embedded开发流程
9.4.2 基于PC的Hello程序
9.4.3 发布Qt/Embedded程序到目标板
练习题
附录 AS3C2410X引脚及信号定义
参考文献...