本书以LINPO-PS-LPC3250的开发板为例,从硬件系统的构成到嵌入式Linux系统的移植及为新硬件编写设备驱动,一步步展开每个阶段的内容。“LINPO-PS-LPC3250的Linux系统移植”是“桂电-丰宝联合实验室”的一个成功的合作开发项目,在此基础上,由上海丰宝科技有限公司资助并与桂林电子科技大学合作编写了这本基于LPC3250的嵌入式Linux系统开发教材,以求达到理论与实践的高度统一。
本书共6章,包括4个部分,分别为:嵌入式系统概述、LPC32xx系统处理器简介及LINPO-PS-LPC3250开发板的硬件设计、Linux内核的生成和移植及不同阶段设备驱动的编写。
本书以NXP最新推出的LPC3250芯片为例,从硬件系统(LINPO-PS-LPC3250开发板)的设计到嵌入式Linux系统的移植及为新硬件编写设备驱动,全面介绍了嵌入式Linux系统的开发过程。内容涵盖LINPO-PS-LPC3250开发板的硬件设计;Linux操作系统的安装,相关工具的使用、配置,嵌入式编程所需的基础知识(常用Linux命令、script编程、交叉编译工具的选项设置、Makefile语法等),向目标板部署引导程序、内核和根文件系统映像;Kickstart、Stage 1阶段的启动流程及Nand、SPI芯片驱动开发:U-Boot的代码结构、启动流程及Nand芯片的驱动及以太网芯片驱动;Linux系统层次的设备驱动编程基础,以太网、I2C设备的驱动设计等。
本书以LINPO-PS-LPC3250开发板的Linux系统移植及驱动开发为例,紧扣实际开发过程的每个环节,使读者比较容易掌握整个嵌入式系统的开发方法。本书可以作为电气与电子信息类相关专业高年级本科生和研究生教材,也可作为从事通信、电子及计算机等领域的、与嵌入式软硬件设计相关的工程师的参考书。
第1章 嵌入式系统概述
1.1 嵌入式系统概论
1.1.1 嵌入式系统的定义
1.1.2 嵌入式系统的组成
1.1.3 嵌入式系统的特点
1.2 嵌入式处理器
1.2.1 嵌入式处理器的分类
1.2.2 ARM处理器
1.3 嵌入式操作系统
1.3.1 操作系统的概念
1.3.2 嵌入式Linux
1.3.3 μC/OS-Ⅱ
1.3.4 Windows CE
1.3.5 VxWorks
1.3.6 IAR PowerPac
第2章 LPC3250处理器简介
2.1 LPC3250特点及结构
2.1.1 LPC3250结构
2.1.2 LPC3250特点
2.2 LPC3250总线结构及地址映射
2.2.1 LPC3250总线结构
2.2.2 LPC3250地址映射
2.3 LPC3250启动过程
2.3.1 启动流程综述
2.3.2 服务启动流程
2.3.3 正常启动流程
2.4 LPC3250时钟及功耗控制
2.4.1 时钟及功耗控制概述
2.4.2 LPC3250内部时钟
2.4.3 LPC3250的PLL功能及使用方法
2.5 LPC3250中断控制器
2.5.1 中断控制器概述
2.5.2 中断控制器功能描述
2.6 LINPO-PS-LPC32xx开发板硬件设计
2.6.1 CPU部分
2.6.2 系统配置
2.6.3 外部存储器硬件设计
2.6.4 LPC3250 电源管理设计
2.6.5 LPC3250 连接TFT LCD 液晶设计
2.6.6 LPC3250 USB接口设计
2.6.7 LPC3250以太网电路设计
2.6.8 LPC3250 I2S音频接口设计
2.6.9 LPC3250 SD卡接口设计
2.6.10 LPC3250 I2C接口设计
第3章 内核生成与移植
3.1 BSP介绍
3.2 建立开发环境
3.2.1 硬件连接
3.2.2 主机的Linux安装与配置
3.2.3 设置LTIB、配置和建立Linux系统
3.3 系统部署
3.3.1 安装U-Boot
3.3.2 设置网络开发环境
3.3.3 配置U-Boot环境
3.3.4 引导网络系统
3.3.5 设置Nand引导系统
3.3.6 在SD卡上安装ext2根文件系统
3.3.7 用Windows主机设置快速demo
3.3.8 系统引导
3.4 功能演示
3.4.1 LCD
3.4.2 触摸屏
3.4.3 USB
3.4.4 以太网
3.5 应用开发
3.5.1 标准Linux应用的部署
3.5.2 mp3play
3.5.3 Qtopia
3.5.4 开发用户应用
3.5.5 VFP支持的应用
3.6 BSP移植到定制的目标板
3.7 常用工具及资源
3.7.1 LTIB 命令
3.7.2 BSP文件
3.7.3 U-Boot 补丁
3.7.4 Kernel 补丁
3.7.5 预建立的工具链
3.7.6 可使用的链接
3.8 常见问题解答
第4章 BootLoader之Stage1阶段的芯片驱动
4.1 KS的操作过程及实现的功能
4.1.1 KS操作
4.1.2 Stagel应用
4.2 S1L的操作过程及实现的功能
4.2.1 S1L操作过程
4.2.2 资源使用
4.3 通用驱动库的介绍(CDL)
4.3.1 软件结构
4.3.2 软件包
4.3.3 软件包安装
4.3.4 CodeSourcery GNU工具支持
4.3.5 Build软件
4.4 KS和S1L及烧写工具Restore的编程实现
4.4.1 KS的编程实现
4.4.2 S1L的编程实现
4.5 restore程序
4.5.1 restore的源代码
4.5.2 将restore程序下载到目标板运行
4.6 Nand Flash芯片介绍和Nand控制器的使用
第5章 Bootloader之U-Boot阶段的启动过程及芯片驱动
5.1 U-Boot简介
5.2 U-Boot的源代码结构和使用方法
5.2.1 源代码结构
5.2.2 U-Boot的启动流程
5.2.3 U-Boot的配置和编译
5.2.4 U-Boot的使用
5.3 U-Boot的移植
5.4 U-Boot设备驱动程序的编写
5.4.1 U-Boot中与设备有关的数据结构
5.4.2 Nand Flash的U-Boot驱动
5.4.3 以太网控制器的U-Boot驱动
5.5 U-Boot命令的添加
第6章 Linux Kernel加载移植及设备驱动
6.1 Linux内核简介
6.1.1 Linux2.6内核的特点
6.1.2 Linux内核源代码目录结构
6.2 Linux Makefile分析
6.3 LiMIX内核的引导
6.4 Linux内核模块编程基础
6.4.1 Linux内核模块简介
6.4.2 Linux内核编程基础
6.4.3 Linux内核模块命令
6.4.4 模块加载函数
6.4.5 模块卸载函数
6.4.6 模块的使用计数
6.4.7 模块的编译
6.5 Linux设备驱动程序开发
6.6 I2C设备驱动
6.6.1 I2C总线介绍
6.6.2 LM75A温度传感器
6.6.3 I2C驱动程序编写范例
6.7 Linux网络设备驱动
6.7.1 初始化
6.7.2 打开
6.7.3 发送
6.7.4 接收
6.7.5 关闭
6.7.6 退出
附录A Ljnux常用命令
A.1 Linux的树形目录结构
A.2 文件/目录处理命令
A.3 挂接和卸载文件系统的命令
A.4 进程处理命令
A.5 备份与压缩命令
A.6 磁盘管理命令
A.7 网络命令
A.8 软件安装命令
附录B Linux的shell编程
B.1 shell程序的变量和参数
B.2 shell程序设计的流程控制
B.3 运行shell程序的方法
B.4 LTIB中shell脚本的例子
附录C Linux编程基础
C.1 编译器GCC的使用
C.2 用gdb调试GCC程序
C.3 Makefile
附录D 代码阅读、编辑工具
D.1 Source Insight
D.2 Kscope
参考文献