|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
嵌入式设计及 Linux 驱动开发指南——基于 ARM9 处理器
内容简介 http://www.qihuan-book.com/page/books/show.asp?area=%C7%B6%C8%EB%CA%BD%CF%B5%CD%B3&page=2
ARM作为一种嵌入式系统处理器,以高性能、低功耗、低成本等优点占领了大部分市场。目前最为流行的当属ARM7和ARM9两个系列。随着人们对系统功能提出了更高的要求,ARM7在高端应用中已经显得力不从心,性能更加强劲的ARM9处理器逐渐占据了高端产品市场。
本书以ARM9处理器和Linux操作系统为平台,全面介绍了嵌入式系统开发的一般过程,并结合深圳优龙公司的开发板,详细讲述了嵌入式Linux系统下的设备驱动程序开发方法。
本书是基于ARM+Linux嵌入式系统开发的一本实用指导书籍,介绍了嵌入式系统开发的一些概念及开发的过程,本书可作为嵌入式系统开发与应用技术人员的参考书,也可作为Linux设备驱动开发人员的参考书。内容实用易懂,适合从事嵌入式系统开发的技术人员和高校相关专业的师生阅读。
图书目录
第1章 嵌入式系统基础
1.1 嵌入式系统简介
1.1.1 嵌入式系统定义
1.1.2 嵌入式系统与PC
1.1.3 嵌入式系统的特点
1.2 嵌入式系统的发展
1.2.1 嵌入式系统现状
1.2.2 嵌入式系统发展趋势
1.3 典型的嵌入式操作系统
1.3.1 Linux
1.3.2 uC/OS
1.3.3 Windows CE
1.3.4 VxWorks
1.3.5 Palm OS
1.3.6 QNX
1.4 嵌入式系统选型
小结
第2章 基于ARM9处理器的硬件开发平台
2.1 ARM处理器简介
2.1.1 ARM公司简介
2.1.2 ARM微处理器核
2.2 ARM9微处理器简介
2.2.1 与ARM7处理器的比较
2.2.2 三星S3C2410X处理器详解
小结
第3章 调试嵌入式系统程序
3.1 嵌入式系统调试方法
3.1.1 实时在线仿真
3.1.2 模拟调试
3.1.3 软件调试
3.1.4 BDM/JTAG调试
3.2 ARM仿真器
3.2.1 techorICE™ ARM仿真器
3.2.2 ARM仿真器工作原理
3.2.3 ARM仿真器的系统功能层次
3.2.4 使用仿真器和ADS Debugger调试ARM开发板
3.3 JTAG接口
3.3.1 JTAG引脚定义
3.3.2 通过JTAG烧写Flash
3.3.3 烧写Flash技术内幕
小结
第4章 创建嵌入式系统开发环境
4.1 嵌入式Linux的开发环境
4.2 Cygwin
4.3 交叉编译的预备知识
4.3.1 Make命令和Makefile文件
4.3.2 binutils工具包
4.3.3 gcc编译器
4.3.4 glibc库
4.3.5 gdb调试工具
4.4 交叉编译
4.4.1 创建编译环境
4.4.2 创建binutils
4.4.3 创建gcc
4.4.4 创建glibc
4.4.5 创建gdb
4.4.6 第二次创建gcc
4.4.7 第二次创建glibc
4.4.8 成果
小结
第5章 Bootloader
5.1 嵌入式系统的引导代码
5.1.1 初识Bootloader
5.1.2 Bootloader的启动流程
5.2 Bootloader之vivi
5.2.1 vivi简介
5.2.2 vivi的配置与编译
5.2.3 vivi代码导读
5.3 Bootloader之U-Boot
5.3.1 U-Boot代码结构分析
5.3.2 编译U-Boot代码
5.3.3 U-Boot代码导读
5.3.4 U-Boot命令
小结
第6章 Linux系统在ARM平台的移植
6.1 移植的概念
6.2 Linux内核结构
6.3 Linux操作系统移植
6.3.1 根目录
6.3.2 arch目录
6.3.3 arch/arm/boot目录
6.3.4 arch/arm/def-configs目录
6.3.5 arch/arm/kernel目录
6.3.6 arch/arm/mm目录
6.3.7 arch/arm/mach-s3c2410目录
6.4 编译Linux内核
小结
第7章 Linux设备驱动程序开发
7.1 设备驱动概述
7.1.1 设备驱动和文件系统的关系
7.1.2 设备类型分类
7.2 设备驱动基础
7.2.1 设备驱动中关键数据结构
7.2.2 设备驱动开发中的基本函数
7.2.3 驱动程序的设备号
7.2.4 设备入口点
7.2.5 /proc文件系统
7.3 设备驱动模块化编程
7.3.1 内核空间和用户空间
7.3.2 GPIO字符设备驱动实例
7.4 PCI总线
7.4.1 PCI系统体系结构
7.4.2 PCI地址空间
7.4.3 PCI设备驱动开发实例
小结
第8章 网络设备驱动程序开发
8.1 网络设备驱动程序简介
8.1.1 device数据结构
8.1.2 sk_buff数据结构
8.1.3 内核的驱动程序接口
8.2 以太网控制器CS8900A
8.3 网络设备驱动程序实例
8.3.1 初始化函数
8.3.2 打开函数
8.3.3 关闭函数
8.3.4 发送函数
8.3.5 接收函数
8.3.6 中断处理函数
小结
第9章 USB驱动程序开发
9.1 USB驱动程序简介
9.1.1 USB背景知识
9.1.2 Linux内核对USB规范的支持
9.1.3 OHCI简介
9.2 Linux下USB系统文件结点
9.3 USB主机驱动结构
9.3.1 USB数据传输时序
9.3.2 USB设备连接/断开时序
9.4 主要数据结构及接口函数
9.4.1 数据传输管道
9.4.2 统一的USB数据传输块
9.4.3 USBD数据描述
9.4.4 USBD与HCD驱动程序接口
9.4.5 USBD层的设备管理
9.4.6 设备类驱动与USBD接口
9.5 USBD文件系统接口
9.5.1 设备驱动程序访问
9.5.2 设备拓扑访问
9.5.3 设备信息访问
9.6 设备类驱动与文件系统接口
9.7 USB HUB驱动程序
9.7.1 HUB驱动初始化
9.7.2 HUB Probe相关函数
9.8 OHCI HCD实现
9.8.1 OHCI驱动初始化
9.8.2 与USBD连接
9.8.3 OHCI根HUB
9.9 扫描仪设备驱动程序
9.9.1 USBD接口
9.9.2 文件系统接口
9.10 USB主机驱动在S3C2410X平台的实现
9.10.1 USB主机控制器简介
9.10.2 驱动程序的移植
小结
第10章 图形用户接口
10.1 嵌入式系统中的GUI简介
10.1.1 MicroWindows
10.1.2 MiniGUI
10.1.3 Qt/Embedded
10.2 MiniGUI编程
10.2.1 MiniGUI移植
10.2.2 MiniGUI编程
10.3 初识Qt/Embedded
10.3.1 Qt介绍
10.3.2 系统要求
10.3.3 Qt的架构
10.4 Qt/Embedded嵌入式图形开发基础
10.4.1 建立Qt/Embedded 开发环境
10.4.2 认识Qt/Embedded开发环境
10.4.3 窗体
10.4.4 对话框
10.4.5 外形与感觉
10.4.6 国际化
10.5 Qt/Embedded实战演练
10.5.1 安装Qt/Embedded工具开发包
10.5.2 交叉编译Qt/Embedded库
10.5.3 Hello,World
10.5.4 发布Qt/Embeded程序到目标板
10.5.5 添加一个Qt/Embedded应用到QPE
小结
第11章 系统设计开发
11.1 概述
11.2 硬件功能的实现
11.2.1 功能定义
11.2.2 原理图设计
11.2.3 PCB设计
11.2.4 硬件调试
11.3 软件功能的实现
11.3.1 嵌入式文件系统
11.3.2 MTD简介
11.3.3 RAMDISK
11.3.4 Busybox
11.3.5 系统初始化
小结
参考文献
序言/前言
前 言
嵌入式系统开发已经进入32位时代,在当前数字信息技术和网络技术高速发展的后PC时代,嵌入式系统已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术、娱乐业以及人们的日常生活等方方面面中。随着国内外嵌入式产品的进一步开发和推广,嵌入式技术越来越和人们的生活紧密相关。
目前,嵌入式系统的数量大、种类多,想躲避嵌入式系统的发展潮流是不可能的。虽然嵌入式市场的增长主要是由于嵌入式系统的应用增多,但不可小视微处理器的高速发展。我们知道,ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,常见的ARM7芯片系统主时钟为20~133MHz;ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,常见的ARM9的系统主时钟频率为100~233MHz。面对要求越来越高的消费群体,或者为满足更高端应用的需要,使用高性能的处理器已成为必然趋势。ARM7处理器已经无法满足智能手机等应用的需求。
本书以频率高达200MHz的ARM9处理器为平台,介绍了嵌入式系统开发的各个主要环节。本书没有过多地讲述原理,而是从代码入手,以分析的角度来学习嵌入式开发的各种技术。每一章内容都独立成为一个主题,较全面地向读者展现了嵌入式系统开发的全部过程。
本书的组织结构
第1章和第2章为基础部分,介绍了嵌入式系统及ARM9处理器的一些知识。第1章讲述嵌入式系统的基础知识,包括嵌入式系统发展的现状和未来的发展趋势,介绍了目前最流行的几种嵌入式操作系统,以及如何进行嵌入式系统的选型。第2章介绍了本书使用的硬件平台,通过本章的学习,读者应该对本书使用的ARM9处理器有一定的了解,为后面章节的学习打下基础。
第3章介绍了嵌入式系统开发中常用的几种调试方法。以sjf2410程序为例,介绍如何编写程序以支持Flash烧写。
第4章介绍了如何设置嵌入式系统开发的环境及如何进行交叉编译。通过对本章的学习,读者就可以开始嵌入式系统的开发。
第5章为嵌入式系统开发的第一步,介绍了Bootloader的概念,分析了vivi和U-boot两种Bootloader代码。通过本章的学习,读者应该掌握如何编写Bootloader。建议读者阅读本章内容以前,先熟悉ARM汇编语言。
第6章介绍了移植的概念,并针对ARM+Linux系统进行了具体的分析。尽管本章只谈到了Linux操作系统的移植方法,但通过本章的学习,读者能够掌握系统移植的关键步骤和思路,以后在移植uC/OS及uCLinux等系统时,也能找到下手点。
第7~10章重点介绍了Linux系统编程。即使读者使用的不是ARM平台,仍然可以通过这几章内容熟悉Linux系统的程序开发,包括设备驱动开发、GUI开发的一些知识。
第7章介绍Linux系统设备驱动程序开发的方法,并列举了两个实例加深理解。通过本章的学习,读者应该能掌握编写PCI设备驱动程序的能力。
第8章主要讲述网络设备驱动,包括网络设备驱动体系结构、主要的数据结构(sk_buff和net_device)以及接口函数等。通过本章的学习,读者应该能掌握编写网卡驱动程序的能力。
第9章主要讲述USB设备驱动,包括USB设备驱动体系结构、主要的数据结构以及接口函数等。结合开发板的USB芯片,说明了USB驱动程序的实现方法。
第10章介绍图形用户接口的内容。随着掌上设备的飞速发展,友好的人机界面也成为开发中的重点。本章介绍了几种流行的GUI,重点介绍了QT的编程方法。通过本章的学习,读者应该能掌握编写MiniGUI和QT程序的能力。
第11章简单地介绍了嵌入式系统中的硬件设计,之后从开发一个项目的角度描述了嵌入式系统的软件设计过程,包括文件系统及固化等一些内容。
读者对象
本书是一本介绍嵌入式系统开发的书籍,同时也介绍了嵌入式Linux驱动程序开发的内容。本书适合下列人员阅读:
· 想学习或者刚刚进入嵌入式系统领域的开发人员。
· 在非X86平台上工作,想学习ARM处理器的开发人员。
· 熟悉Windows的WDM驱动开发,但想转到Linux系统下的驱动程序开发人员。
· 对嵌入式系统或者Linux系统非常有兴趣的人员。
尽管本书面向初级嵌入式系统开发人员,但读者需要熟悉C和汇编语言(包括ARM汇编语言),至少要能读懂书中提到的代码;还要熟悉一些Linux的基本命令。如果读者对Linux内核代码比较熟悉,那么读本书的代码会更加容易。如果之前没有接触过Linux,那么最好先阅读一些Linux入门的书。
本书相关软件
本书提到的大部分软件可以从互联网免费获得,比如binutils、gcc、glibc、gdb等都是GNU软件。
Linux内核可以在www.kernel.org及其镜像下载。
相关的硬件芯片手册可以从芯片提供商处获得。
致谢
有太多的人对本书的出版做出了巨大贡献,在此对他们表示衷心的感谢!
首先要感谢的是我最敬爱的父母,这本书首先要送给他们。
其次要感谢深圳市优龙科技有限公司和深圳市技创科技有限公司,他们为本书的完成创造了非常完美的测试环境。优龙科技有限公司提供了ARM9平台,技创科技提供了ARM仿真器。同时,书中第3章和第10章的部分内容也是由他们提供的。
全书由孙天泽统稿并组织完成。没有下面一些朋友的帮助,本书也不会完成。在此我要对他们表示衷心的感谢,他们是:袁文菊、张海峰、易松华、肖距雄、唐坤勇。
由于篇幅所限、时间仓促,加之作者的编写水平有限,书中的不妥之处在所难免,恳请读者批评指正。任何批评和建议请发到unix1998@sina.com,以便共同提高。 |
|