《嵌入式Linux实战教程》是2014年6月1日电子工业出版社出版的图书,作者是河源职业技术学院。
基本介绍
- 书名:嵌入式Linux实战教程
- 出版社:电子工业出版社
- 页数:376页
- 开本:16
- 品牌:电子工业出版社
- 作者:河源职业技术学院
- 出版日期:2014年6月1日
- 语种:简体中文
- ISBN:7121229234
编辑推荐
《嵌入式Linux实战教程》从基本的Linux系统的操作命令开始,由浅及深地讲解相关内容,使读者循序渐进地掌握嵌入式开发的方法和技巧,最终能够为嵌入式开发板配置、移植、裁剪核心,编写开发驱动程式,以及移植GUI系统,从而掌握整个嵌入式Linux系统的开发方法。
内容简介
本书以信盈达xyd2440开发板为例,从嵌入式Linux系统开发必备的Linux知识点出发,分析并详细讲解U-Boot、核心、根档案系统的源码与製作过程,详细介绍Linux系统驱动理论,尤其花了大量的精力介绍基于嵌入式Linux 26核心下的各类驱动设备,包括LED、按键、触控萤幕、LCD和网卡等各种外设和晶片驱动程式的开发技术与实操项目详解。此外,还介绍了基于Qt的GUI系统的移植、产品固化代码及发布的方法。本书从基本的Linux系统的操作命令开始,由浅及深地讲解相关内容,使读者循序渐进地掌握嵌入式开发的方法和技巧,最终能够为嵌入式开发板配置、移植、裁剪核心,编写开发驱动程式,以及移植GUI系统,从而掌握整个嵌入式Linux系统的开发方法。
作者简介
深圳信盈达电子有限公司、是一家专注于单片机、ARM、嵌入式产品开发和技术培训的高新技术服务企业,公司下设开发部和技术培训部。公司开发部为国内外众多客户开发多款基于嵌入式单片机、ARM等技术的整套方案和高性能产品,技术培训部提供优秀的单片机、ARM、嵌入式产品开发工程师培训。同时为众多工程师,各大师专院校提供实验器材及技术培训课程!
图书目录
第1章嵌入式Linux开发环境
1.1嵌入式介绍
1.1.1嵌入式系统定义
1.1.2嵌入式作业系统
1.1.3常见的嵌入式作业系统
1.2虚拟机及Linux系统安装
1.2.1安装VMware Workstation软体
1.2.2在VMware Workstation虚拟机安装Red Hat Linux系统
1.3Linux常用命令
1.3.1系统询问命令
1.3.2档案操作命令
1.3.3目录操作命令
1.3.4口令、许可权命令
1.3.5档案压缩命令
1.3.6网路相关命令
1.3.7其他命令
1.4Linux下的编辑工具
1.4.1编辑器分类
1.4.2VIM的使用
1.5主机开发环境的配置
1.5.1超级终端配置图解
1.5.2Minicom 配置
1.5.3TFTP服务
1.5.4NFS服务
1.5.5Telnet服务
1.6Red Hat下通过安装镜像档案使用yum安装软体
1.6.1修改yum配置档案
1.6.2安装卸载软体方法
1.7Makefile编写规则
1.7.1Makefile简介
1.7.2Makefile的基本结构
1.7.3Makefile中的变数
1.7.4Makefile的隐含规则
1.8交叉编译工具基础知识
1.8.1交叉编译工具链的安装
1.8.2arm—linux—gcc选项
1.8.3arm—linux—ld选项
1.8.4arm—linux—objcopy
1.8.5arm—linux—objdump
1.9小知识
第2章BootLoader移植与开发
2.1U—Boot的目录结构
2.1.1BootLoader简介
2.1.2常用BootLoader介绍
2.1.3U—Boot 1.3.4目录介绍
2.2U—Boot的製作过程
2.3U—Boot运行过程
2.3.1程式启动过程
2.3.2U—Boot的两个阶段
2.4U—Boot源码分析
2.5U—Boot套用:主要用于启动核心进行準备工作
2.5.1U—Boot的套用
2.5.2BootLoader与核心的互动
2.6U—Boot的重要数据结构
2.6.1gd全局数据变数指针
2.6.2bd电路板数据指针
2.6.3环境变数指针
2.6.4设备相关设定
2.6.5命令结构体类型定义
第3章Linux核心裁剪
3.1嵌入式Linux核心启动过程
3.1.1Linux版本及特点
3.1.2核心代码初始化分析
3.1.3setup_arch()函式分析
3.1.4rest_init()函式分析
3.1.5挂接根档案系统
3.1.6初始化设备驱动程式
3.2Linux核心源码目录介绍
3.3Linux核心配置系统分析
3.3.1核心中的 Kconfig档案介绍
3.3.2Linux核心源码Makefile档案分析
3.4针对S3C2440 开发板移植核心的过程
3.5添加驱动程式到核心源码
第4章根档案系统移植与製作
4.1分析Linux 档案系统层次标準
4.2根档案系统各目录作用
4.3移植Busybox 开原始码、构造根档案系统
4.3.1Busybox 的诞生
4.3.2Busybox 许可证
4.3.3POSIX 环境
4.4製作Linux根档案系统
4.4.1下载并配置安装Busybox
4.4.2完善根档案系统
4.4.3通过 NFS服务测试档案系统
第5章Linux驱动介绍
5.1驱动原理
5.2核心模组的主要相关命令
5.3设备分类
5.4设备驱动程式工作原理
5.5应用程式、库、核心、驱动程式的软体关係
5.6Linux驱动程式开发步骤
5.7驱动程式的载入和卸载
5.8关键概念
5.8.1不可剥夺型核心(non—preemptive kernel):(分时作业系统核心)
5.8.2可剥夺型核心(preemptive kernel):(实时作业系统核心)
5.8.3可重入函式
5.8.4资源
5.8.5共享资源
5.8.6代码的临界段
5.8.7实时系统的特点
5.8.8死锁
5.8.9Linux的进程状态描述
5.8.10Linux核心的三种调度方法
5.8.11所有任务都採用Linux分时调度策略时
5.8.12所有任务都採用FIFO调度策略时
5.8.13所有任务都採用RR调度策略时
5.8.14进程调度依据(系统进程调度原理)
5.8.15描述进程的数据结构task_struct (任务结构体)
5.8.16Linux使用核心函式goodness()对进程进行加权处理
5.9中断与异常
5.9.1Linux异常处理体系结构概述
5.9.2中断注册方法
5.10并发和竞态
5.10.1并发及其管理
5.10.2信号量和互斥体
5.10.3自旋锁
第6章字元设备驱动开发
6.1主设备号和次设备号
6.2重要数据结构
6.2.1file_operaions结构
6.2.2file结构
6.3字元设备注册方式
6.3.1早期版本的字元设备注册(2.6版本以前)
6.3.2杂项(misc device)设备注册
6.3.3Linux 2.6的版本设备注册
6.4列印信息
6.5高级字元驱动程式操作
6.5.1ioctl
6.5.2定位设备(llseek实现)
6.5.3休眠
6.5.4阻塞和非阻塞操作
6.5.5poll和 select
6.5.6与read 和write 的互动
6.5.7刷新待处理输出
6.6异步通知
6.7核心同步机制
6.7.1原子操作
6.7.2信号量(semaphore)
6.7.3自旋锁(spinlock)
第7章LED驱动开发与套用编程
7.1Linux驱动程式开发概述
7.1.1应用程式、库、核心、驱动程式的关係
7.1.2Linux驱动程式的分类
7.2LED驱动程式範例
7.2.1LED驱动程式(xyd2440_leds.c)
7.2.2LED驱动程式的Makefile
7.2.3LED驱动测试程式(leds_app.c)
7.2.4操作步骤
第8章按键驱动开发与套用编程
8.1按键的硬体原理
8.2按键驱动中的数据结构
8.3按键驱动的模组载入和卸载函式
8.4按键设备驱动中断处理程式
8.5按键设备驱动的打开、释放函式
8.6按键设备驱动读函式
8.7按键驱动程式範例
8.8操作步骤
第9章LCD驱动开发实例分析
9.1FrameBuffer的原理
9.2FrameBuffer在Linux中的实现和机制
9.3Linux核心中的platform机制
9.4S3C2440 LCD驱动分析
9.5s3c2440 LCD驱动移动移植
9.5.1代码修改
9.5.2修改Kconfig——添加新屏支持到核心选单
9.5.3修改核心配置
9.6FrameBuffer套用例子
9.6.1应用程式源码
9.6.2操作步骤
第10章输入子系统和触控萤幕
10.1认识输入子系统
10.1.1为什幺需要输入子系统
10.1.2相关API
10.1.3一个简单的按键驱动的例子
10.2触控萤幕驱动分析
10.2.1Linux核心定时器
10.2.2触控萤幕驱动代码分析
10.3触控萤幕的校準
10.3.1触控萤幕的校準介绍
10.3.2tslib库的编译使用
10.3.3将tslib校準引用到自己的项目中
第11章网路驱动开发与套用编程
11.1TCP/IP 协定概述
11.1.1TCP/IP 协定族
11.1.2TCP 和 UDP
11.2TCP/IP网路基础编程
11.2.1socket 概述
11.2.2地址及顺序处理
11.2.3socket 基础编程
11.3DM9000网卡驱动程式移植
11.3.1DM9000网卡特性
11.3.2DM9000网卡与S3C2440硬体连线
11.3.3DM9000与开发板接口定义
11.3.4DM9000驱动移植到S3C2440步骤
11.4DM9000 网卡驱动源码解析
11.4.1两个重要的结构体简单介绍:sk_buff和net_device
11.4.2驱动代码具体分析
11.4.3dm9000_netdev_ops和 dm9000_ethtod_ops
11.4.4平台设备驱动的结构体定义
11.4.5驱动初始化函式
11.4.6probe函式
11.4.7remove函式:设备的删除函式
11.4.8打开、关闭函式和操作函式
第12章基于Qt Creator环境的QT开发
12.1概要说明
12.2安装步骤
12.3Qt Creator测试
12.4Qt Ctreator中配置ARM版本交叉编译环境
12.5交叉编译ARM版本Qt4程式
第13章产品封装、发布
13.1Linux核心镜像格式
13.2Linux核心镜像的产生过程
13.3嵌入式Linux常用档案系统
13.4製作常用的档案系统镜像
13.4.1製作Cramfs档案系统和部署
13.4.2製作JFFS2档案系统镜像和部署
13.4.3製作YAFFS2档案系统镜像和部署
第14章6410平台Linux环境搭建
14.1概述
14.2编译器的安装
14.3编译U—Boot和核心
14.3.1编译U—Boot
14.3.2编译核心
14.4烧写核心到NAND Flash
14.4.1製作用于一键烧写Linux的SD卡
14.4.2烧写Linux到开发板的NAND Flash中
14.5档案程式或档案下载到开发板中
14.5.1通过超级终端下载
14.5.2通过SD卡複製
附录ALinux开发平台硬体介绍
A.1S3C2440系列晶片介绍
A.2S3C2440开发板硬体设计说明
A.2.1电源设计
A.2.2复位电路
A.2.3系统时钟电路
A.2.4JTAG接口电路
A.2.5GPIO电路、指示灯电路、按键电路
A.2.6蜂鸣器电路
A.2.7串口电路
A.2.8A/D和D/A电路
A.2.9外部Flash晶片
A.2.10SD卡接口电路
A.2.11SDARM晶片模组
A.2.12NOR Flash晶片模组
A.2.13NAND Flash晶片模组
A.2.14USB接口
A.2.15网路模组
A.2.16音频输入与输出电路
A.2.17LCD接口和CMOS摄像接口
A.2.18系统汇流排接口
A.2.19开发板完整原理图
附录BJTAG仿真调试器下载程式的过程
附录CJ—Link仿真调试器的使用
附录DLinux常用命令介绍
参考文献
1.1嵌入式介绍
1.1.1嵌入式系统定义
1.1.2嵌入式作业系统
1.1.3常见的嵌入式作业系统
1.2虚拟机及Linux系统安装
1.2.1安装VMware Workstation软体
1.2.2在VMware Workstation虚拟机安装Red Hat Linux系统
1.3Linux常用命令
1.3.1系统询问命令
1.3.2档案操作命令
1.3.3目录操作命令
1.3.4口令、许可权命令
1.3.5档案压缩命令
1.3.6网路相关命令
1.3.7其他命令
1.4Linux下的编辑工具
1.4.1编辑器分类
1.4.2VIM的使用
1.5主机开发环境的配置
1.5.1超级终端配置图解
1.5.2Minicom 配置
1.5.3TFTP服务
1.5.4NFS服务
1.5.5Telnet服务
1.6Red Hat下通过安装镜像档案使用yum安装软体
1.6.1修改yum配置档案
1.6.2安装卸载软体方法
1.7Makefile编写规则
1.7.1Makefile简介
1.7.2Makefile的基本结构
1.7.3Makefile中的变数
1.7.4Makefile的隐含规则
1.8交叉编译工具基础知识
1.8.1交叉编译工具链的安装
1.8.2arm—linux—gcc选项
1.8.3arm—linux—ld选项
1.8.4arm—linux—objcopy
1.8.5arm—linux—objdump
1.9小知识
第2章BootLoader移植与开发
2.1U—Boot的目录结构
2.1.1BootLoader简介
2.1.2常用BootLoader介绍
2.1.3U—Boot 1.3.4目录介绍
2.2U—Boot的製作过程
2.3U—Boot运行过程
2.3.1程式启动过程
2.3.2U—Boot的两个阶段
2.4U—Boot源码分析
2.5U—Boot套用:主要用于启动核心进行準备工作
2.5.1U—Boot的套用
2.5.2BootLoader与核心的互动
2.6U—Boot的重要数据结构
2.6.1gd全局数据变数指针
2.6.2bd电路板数据指针
2.6.3环境变数指针
2.6.4设备相关设定
2.6.5命令结构体类型定义
第3章Linux核心裁剪
3.1嵌入式Linux核心启动过程
3.1.1Linux版本及特点
3.1.2核心代码初始化分析
3.1.3setup_arch()函式分析
3.1.4rest_init()函式分析
3.1.5挂接根档案系统
3.1.6初始化设备驱动程式
3.2Linux核心源码目录介绍
3.3Linux核心配置系统分析
3.3.1核心中的 Kconfig档案介绍
3.3.2Linux核心源码Makefile档案分析
3.4针对S3C2440 开发板移植核心的过程
3.5添加驱动程式到核心源码
第4章根档案系统移植与製作
4.1分析Linux 档案系统层次标準
4.2根档案系统各目录作用
4.3移植Busybox 开原始码、构造根档案系统
4.3.1Busybox 的诞生
4.3.2Busybox 许可证
4.3.3POSIX 环境
4.4製作Linux根档案系统
4.4.1下载并配置安装Busybox
4.4.2完善根档案系统
4.4.3通过 NFS服务测试档案系统
第5章Linux驱动介绍
5.1驱动原理
5.2核心模组的主要相关命令
5.3设备分类
5.4设备驱动程式工作原理
5.5应用程式、库、核心、驱动程式的软体关係
5.6Linux驱动程式开发步骤
5.7驱动程式的载入和卸载
5.8关键概念
5.8.1不可剥夺型核心(non—preemptive kernel):(分时作业系统核心)
5.8.2可剥夺型核心(preemptive kernel):(实时作业系统核心)
5.8.3可重入函式
5.8.4资源
5.8.5共享资源
5.8.6代码的临界段
5.8.7实时系统的特点
5.8.8死锁
5.8.9Linux的进程状态描述
5.8.10Linux核心的三种调度方法
5.8.11所有任务都採用Linux分时调度策略时
5.8.12所有任务都採用FIFO调度策略时
5.8.13所有任务都採用RR调度策略时
5.8.14进程调度依据(系统进程调度原理)
5.8.15描述进程的数据结构task_struct (任务结构体)
5.8.16Linux使用核心函式goodness()对进程进行加权处理
5.9中断与异常
5.9.1Linux异常处理体系结构概述
5.9.2中断注册方法
5.10并发和竞态
5.10.1并发及其管理
5.10.2信号量和互斥体
5.10.3自旋锁
第6章字元设备驱动开发
6.1主设备号和次设备号
6.2重要数据结构
6.2.1file_operaions结构
6.2.2file结构
6.3字元设备注册方式
6.3.1早期版本的字元设备注册(2.6版本以前)
6.3.2杂项(misc device)设备注册
6.3.3Linux 2.6的版本设备注册
6.4列印信息
6.5高级字元驱动程式操作
6.5.1ioctl
6.5.2定位设备(llseek实现)
6.5.3休眠
6.5.4阻塞和非阻塞操作
6.5.5poll和 select
6.5.6与read 和write 的互动
6.5.7刷新待处理输出
6.6异步通知
6.7核心同步机制
6.7.1原子操作
6.7.2信号量(semaphore)
6.7.3自旋锁(spinlock)
第7章LED驱动开发与套用编程
7.1Linux驱动程式开发概述
7.1.1应用程式、库、核心、驱动程式的关係
7.1.2Linux驱动程式的分类
7.2LED驱动程式範例
7.2.1LED驱动程式(xyd2440_leds.c)
7.2.2LED驱动程式的Makefile
7.2.3LED驱动测试程式(leds_app.c)
7.2.4操作步骤
第8章按键驱动开发与套用编程
8.1按键的硬体原理
8.2按键驱动中的数据结构
8.3按键驱动的模组载入和卸载函式
8.4按键设备驱动中断处理程式
8.5按键设备驱动的打开、释放函式
8.6按键设备驱动读函式
8.7按键驱动程式範例
8.8操作步骤
第9章LCD驱动开发实例分析
9.1FrameBuffer的原理
9.2FrameBuffer在Linux中的实现和机制
9.3Linux核心中的platform机制
9.4S3C2440 LCD驱动分析
9.5s3c2440 LCD驱动移动移植
9.5.1代码修改
9.5.2修改Kconfig——添加新屏支持到核心选单
9.5.3修改核心配置
9.6FrameBuffer套用例子
9.6.1应用程式源码
9.6.2操作步骤
第10章输入子系统和触控萤幕
10.1认识输入子系统
10.1.1为什幺需要输入子系统
10.1.2相关API
10.1.3一个简单的按键驱动的例子
10.2触控萤幕驱动分析
10.2.1Linux核心定时器
10.2.2触控萤幕驱动代码分析
10.3触控萤幕的校準
10.3.1触控萤幕的校準介绍
10.3.2tslib库的编译使用
10.3.3将tslib校準引用到自己的项目中
第11章网路驱动开发与套用编程
11.1TCP/IP 协定概述
11.1.1TCP/IP 协定族
11.1.2TCP 和 UDP
11.2TCP/IP网路基础编程
11.2.1socket 概述
11.2.2地址及顺序处理
11.2.3socket 基础编程
11.3DM9000网卡驱动程式移植
11.3.1DM9000网卡特性
11.3.2DM9000网卡与S3C2440硬体连线
11.3.3DM9000与开发板接口定义
11.3.4DM9000驱动移植到S3C2440步骤
11.4DM9000 网卡驱动源码解析
11.4.1两个重要的结构体简单介绍:sk_buff和net_device
11.4.2驱动代码具体分析
11.4.3dm9000_netdev_ops和 dm9000_ethtod_ops
11.4.4平台设备驱动的结构体定义
11.4.5驱动初始化函式
11.4.6probe函式
11.4.7remove函式:设备的删除函式
11.4.8打开、关闭函式和操作函式
第12章基于Qt Creator环境的QT开发
12.1概要说明
12.2安装步骤
12.3Qt Creator测试
12.4Qt Ctreator中配置ARM版本交叉编译环境
12.5交叉编译ARM版本Qt4程式
第13章产品封装、发布
13.1Linux核心镜像格式
13.2Linux核心镜像的产生过程
13.3嵌入式Linux常用档案系统
13.4製作常用的档案系统镜像
13.4.1製作Cramfs档案系统和部署
13.4.2製作JFFS2档案系统镜像和部署
13.4.3製作YAFFS2档案系统镜像和部署
第14章6410平台Linux环境搭建
14.1概述
14.2编译器的安装
14.3编译U—Boot和核心
14.3.1编译U—Boot
14.3.2编译核心
14.4烧写核心到NAND Flash
14.4.1製作用于一键烧写Linux的SD卡
14.4.2烧写Linux到开发板的NAND Flash中
14.5档案程式或档案下载到开发板中
14.5.1通过超级终端下载
14.5.2通过SD卡複製
附录ALinux开发平台硬体介绍
A.1S3C2440系列晶片介绍
A.2S3C2440开发板硬体设计说明
A.2.1电源设计
A.2.2复位电路
A.2.3系统时钟电路
A.2.4JTAG接口电路
A.2.5GPIO电路、指示灯电路、按键电路
A.2.6蜂鸣器电路
A.2.7串口电路
A.2.8A/D和D/A电路
A.2.9外部Flash晶片
A.2.10SD卡接口电路
A.2.11SDARM晶片模组
A.2.12NOR Flash晶片模组
A.2.13NAND Flash晶片模组
A.2.14USB接口
A.2.15网路模组
A.2.16音频输入与输出电路
A.2.17LCD接口和CMOS摄像接口
A.2.18系统汇流排接口
A.2.19开发板完整原理图
附录BJTAG仿真调试器下载程式的过程
附录CJ—Link仿真调试器的使用
附录DLinux常用命令介绍
参考文献