描述
开 本: 128开纸 张: 胶版纸包 装: 平装是否套装: 否国际标准书号ISBN: 9787302424710丛书名: 电子设计与嵌入式开发实践丛书
本书是嵌入式系统开发入门的***图书,详细介绍Bootloader和Linux内核移植。
(1)循序渐进,由浅入深。基于Cortex-A8架构、S5PV210处理器,从相关基础知识开始,再结合硬件原理图,逐个分析硬件部件的工作原理以及编程方法。
(2)例程丰富,解释翔实。书中提供了丰富的实例源代码,并且均在开发板上调试通过;提供详细的分析注解,帮助读者理解掌握。
(3)资源共享,超值服务。提供课件,共享程序源代码和文档学习资料,且可以通过博客和本书网站与作者交流,答疑解惑,共同学习和提高。
全书共分3篇: 第1篇(第1~4章)着重介绍嵌入式Linux系统开发前的一些准备知识; 第2篇(第5~12章)着重讲解硬件部件的使用与编程; 第3篇(第13~16章)着重讲解基于CortexA8处理器的嵌入式Linux系统开发中的系统分析、移植以及驱动开发、移植。全书提供了大量的应用实例,并且均在天嵌TQ210开发板上调试通过,读者可在清华大学出版社网站本书页面下载。
本书由浅入深、循序渐进,适合刚接触嵌入式Linux的初学者学习,同时可作为高等院校嵌入式相关专业本科、研究生教材,亦可作为广大嵌入式系统开发工作者的参考书。
目录
篇工欲善其事,必先利其器
第1章嵌入式系统概述
1.1嵌入式系统基础知识
1.1.1嵌入式系统简介
1.1.2嵌入式系统的特点
1.1.3嵌入式系统的发展历史
1.1.4嵌入式系统的组成
1.1.5嵌入式操作系统简介
1.1.6嵌入式系统开发概述
1.2基于ARM架构的S5PV210处理器
1.2.1ARM微处理器概述
1.2.2ARM流水线技术的发展
1.2.3ARM CortexA8处理器介绍
1.2.4ARM CortexA8寄存器组介绍
1.2.5SAMSUNG S5PV210处理器介绍
1.3本章小结
第2章嵌入式Linux开发环境搭建
2.1交叉开发模式
2.1.1嵌入式交叉开发模式介绍
2.1.2硬件需求
2.2软件环境搭建与配置
2.2.1宿主机Linux操作系统的安装
2.2.2配置宿主Linux操作系统
2.2.3在宿主机上安装、配置开发环境
2.2.4制作交叉编译工具链
嵌入式Linux系统开发入门宝典——基于ARM CortexA8处理器
2.3本章小结
第3章常用开发工具和命令的使用
3.1Windows环境下的工具介绍
3.1.1代码阅读、编辑工具Source Insight
3.1.2文件传输工具CuteFTP
3.1.3终端仿真工具SecureCRT
3.2Linux环境下的工具介绍
3.2.1代码阅读、编辑工具
3.2.2终端访问工具
3.3嵌入式Linux系统常用命令介绍
3.3.1编辑命令vi(vim)
3.3.2常用13个命令介绍
3.3.3SD卡烧写命令df、dd
3.4本章小结
第4章嵌入式编程基础知识
4.1GNU ARM常用汇编指令介绍
4.1.1相对跳转指令b和bl
4.1.2数据传送指令mov和地址读取伪指令ldr
4.1.3内存访问指令ldr、str、ldm、stm
4.1.4加减指令add、sub
4.1.5程序状态寄存器访问指令msr、mrs
4.1.6其他伪指令
4.2ARMThumb子程序调用(ATPCS)规则介绍
4.2.1寄存器使用规则
4.2.2数据栈使用规则
4.2.3参数传递规则
4.3ARM交叉工具链介绍
4.3.1编译工具armlinuxgcc
4.3.2链接工具armlinuxld
4.3.3对象生成工具armlinuxobjcopy
4.3.4反汇编工具armlinuxobjdump
4.4Makefile简介
4.4.1基本规则
4.4.2make是如何工作的
4.4.3变量的用法
4.4.4常用函数介绍
4.5本章小结
第二篇千里之行,始于足下
第5章基于CortexA8的S5PV210启动流程介绍
5.1S5PV210启动流程概述
5.1.1外部启动介质介绍
5.1.2iROM启动的优势
5.2S5PV210上电初始化及内存空间分布
5.2.1启动流程
5.2.2空间分布
5.2.3SD卡引导块分配情况介绍
5.2.4iROM中的时钟配置
5.3S5PV210上的程序烧写介绍
5.3.1程序烧写概述
5.3.2制作BL1头信息
5.3.3烧写SD卡
5.3.4制作Shell脚本
5.4本章小结
第6章通用输入/输出接口GPIO
6.1GPIO控制技术概述
6.1.1GPIO的介绍
6.1.2S5PV210的GPIO寄存器
6.1.3实验用到的寄存器详解
6.2S5PV210的GPIO应用实例
6.2.1实验介绍
6.2.2程序设计与代码详解
6.3本章小结
第7章通用异步收发器UART
7.1UART的原理及S5PV210的UART介绍
7.1.1UART通信的基本原理
7.1.2S5PV210的UART介绍
7.2S5PV210的UART应用实例
7.2.1实验介绍
7.2.2程序设计与代码详解
7.2.3实例测试
7.3本章小结
第8章中断体系结构
8.1S5PV210中断体系结构
8.1.1中断体系结构概述
8.1.2中断控制寄存器介绍
8.2S5PV210的中断应用实例
8.2.1实验介绍
8.2.2程序设计与代码详解
8.2.3实例测试
8.3本章小结
第9章系统时钟和定时器
9.1S5PV210的时钟体系结构
9.1.1S5PV210的时钟域和时钟源
9.1.2S5PV210的时钟应用和配置流程
9.1.3S5PV210时钟控制寄存器介绍
9.2S5PV210 PWM定时器
9.2.1S5PV210 PWM定时器概述
9.2.2S5PV210定时器
9.2.3PWM定时器的寄存器介绍
9.3S5PV210时钟和定时器应用实例
9.3.1实验介绍
9.3.2程序设计与代码详解
9.3.3实验测试
9.4本章小结
第10章S5PV210存储控制器
10.1S5PV210存储控制器介绍
10.1.1存储控制器概述
10.1.2DRAM存储控制器
10.1.3与外设的接线方式
10.1.4DDR2 SDRAM概述
10.1.5S5PV210 DDR2初始化顺序
10.1.6存储控制器的寄存器介绍
10.2存储控制器应用实例
10.2.1实验介绍
10.2.2程序设计与代码详解
10.2.3实验测试
10.3本章小结
第11章S5PV210 Nand Flash控制器
11.1Nor Flash与Nand Flash介绍
11.1.1Flash闪存
11.1.2Nor Flash与Nand Flash比较
11.1.3Nand Flash的物理结构
11.1.4Nand Flash的访问方法
11.2S5PV210 Nand Flash控制器介绍
11.2.1Nand Flash控制器的特性
11.2.2Nand Flash的模块图
11.2.3Nand Flash的引脚配置
11.2.4Nand Flash存储控制器配置
11.2.5Nand Flash寄存器介绍
11.2.6Nand Flash控制器的ECC校验方法
11.3Nand Flash控制器应用实例
11.3.1实验介绍
11.3.2程序设计与代码详解
11.3.3实例测试
11.4本章小结
第12章LCD控制器
12.1LCD介绍
12.1.1LCD的分类
12.1.2LCD的接口
12.2S5PV210 LCD控制器
12.2.1S5PV210 LCD控制器概述
12.2.2S5PV210 LCD控制器主要特性介绍
12.2.3S5PV210 LCD控制器功能介绍
12.2.4S5PV210 TFT LCD的操作
12.2.5S5PV210 LCD控制器编程方法介绍
12.2.6S5PV210 LCD控制器主要寄存器介绍
12.3LCD控制器应用实例
12.3.1实验介绍
12.3.2程序设计与代码详解
12.3.3实例测试
12.4本章小结
第三篇欲穷千里目,更上一层楼
第13章移植UBoot
13.1Bootloader介绍
13.1.1Bootloader概述
13.1.2Bootloader的结构和启动方式
13.1.3Bootloader操作模式和安装位置
13.1.4如何编写Bootloader
13.1.5UBoot与内核之间的交互
13.2移植UBoot到S5PV210开发板
13.2.1UBoot简介
13.2.2UBoot源码结构
13.2.3UBoot配置、编译与SPL介绍
13.2.4UBoot启动过程源码分析
13.2.5UBoot下的驱动移植
13.2.6添加启动菜单
13.3本章小结
第14章Linux内核移植和根文件系统制作
14.1Linux内核概述
14.1.1Linux内核发展及其版本特点
14.1.2Linux内核源码获取
14.1.3内核源码结构及Makefile分析
14.1.4Linux内核的Kconfig介绍
14.1.5Linux内核配置选项
14.2Linux内核移植
14.2.1Linux内核启动过程分析
14.2.2修改内核支持S5PV210平台
14.3本章小结
第15章构建Linux根文件系统
15.1Linux文件系统概述
15.1.1文件系统概述
15.1.2Linux根文件系统目录结构
15.1.3文件系统工作原理
15.2移植Busybox
15.2.1Busybox介绍
15.2.2Busybox的目录结构
15.2.3内核init进程及用户程序启动过程
15.2.4配置/编译/安装Busybox
15.2.5构建根文件系统
15.3本章小结
第16章驱动相关移植
16.1Linux驱动程序概述
16.1.1驱动程序、内核和应用程序之间的关系
16.1.2驱动程序分类
16.1.3驱动程序开发步骤
16.1.4驱动程序的加载和卸载
16.2网卡驱动移植
16.2.1DM9000网卡特性
16.2.2DM9000驱动移植
16.3Nand驱动移植
16.3.1S5PV210平台Nand驱动移植
16.3.28位硬件ECC和Nand启动
16.4LCD驱动移植
16.4.1LCD驱动概述
16.4.2LCD驱动移植
16.5其他驱动移植
16.5.1支持SD卡驱动
16.5.2LED子系统驱动移植
16.5.3支持RTC驱动
16.5.4支持1wire单总线驱动
16.6本章小结
参考文献
一、 为什么要写本书
随着芯片制造工艺的不断改进与提升,如今的芯片不仅体积越来越小,而且功能也越来越丰富,速度也成倍提升。比较典型的芯片如大家耳熟能详的ARM系列,从我们过去比较熟悉的ARM7、ARM9时代,发展到如今的Cortex系列,从单核时代升华到多核时代。硬件在飞速发展的同时,为之带来的是电子产品更新换代迅速、应用领域越来越广阔、知识更新也越来越快。
嵌入式Linux系统开发是嵌入式领域中非常热门的专业,需求大,但是对嵌入式Linux的入门很难,很多人不知道从何入手,迷失了方向,甚至半途而废。还有很多初学者,比如在校学生,对嵌入式的学习认识匮乏,常常为买什么开发板、买到开发板从何入手而发愁。追根究底,很多人是因为对嵌入式开发不了解,或者说缺乏相关的技术帮助资料。
鉴于上述种种原因,作者对如今嵌入式开发市场做了一些调查,发现与ARM相关的很多资料都还是基于ARM7、ARM9而写的,可ARM11、Cortex等资料较少,没有做到与时俱进,或者有一些但又太过专业,不适合初学者。对ARM家族的处理器做了一些比较,从ARM11往前,属于ARM的一个时代,而从Cortex开始,可以说是ARM公司产品中的一个新亮点,未来基于它的产品会越来越多,而且Cortex还兼容前面的ARM架构。看来Cortex系列应该是未来的一个趋势,因此作者选择基于Cortex家族中的A8,结合自己学习、工作的经历,循序渐进、由浅入深地讲解嵌入式Linux系统开发的方方面面,终完成此书,期望能帮助读者加快嵌入式Linux系统开发的入门,并且对嵌入式Linux学习产生浓厚兴趣。
二、 内容特色
与同类书籍相比,本书有如下特色。
(1) 循序渐进,由浅入深
本书以TQ210(基于CortexA8架构、S5PV210处理器)开发板为例,从开发环境的安装、配置,ARM基本指令、Linux常用命令的使用以及嵌入式C语言等相关基础知识开始,在读者掌握了基础知识后,结合硬件原理图,逐个分析硬件部件的工作原理以及编程方法,后带领读者一步步进入嵌入式Linux系统开发的殿堂,学习诸如UBoot、Linux内核的移植,根文件系统的制作,驱动开发与移植等各种技术。
(2) 例程丰富,解释翔实
古人云: “熟读唐诗三百首,不会做诗也会吟。”本书基于S5PV210开发板(TQ210),编写了丰富的实例源代码,并且每一个实例源代码都在S5PV210开发板上调试通过。每个代码后面都附有详细的分析注解,帮助读者理解掌握,进而加深对相关理论知识的理解。除此之外,一些编程思想、经验技巧亦可为读者提供借鉴。
嵌入式Linux系统开发入门宝典——基于ARM CortexA8处理器
(3) 资源共享,超值服务
书中用到的所有软件工具、程序源代码、文档学习资料,以及所有基于S5PV210开发板的裸机程序、UBoot代码、Linux内核代码、根文件系统等学习资源,读者都可从清华大学出版社网站本书页面下载,并可以直接使用与测试。
另外,作者为此书开通了专用的网站http://www.qinfenwang.com,读者可以直接与我们交流,共同学习和提高。另外,在国内比较知名的技术交流网站都有作者的博客(ID: js_gary),比如电子工程世界EEWorld、CSDN、电子技术设计EDN China等,读者可以通过博客与作者零距离接触。
(4) 传承经典,突出前沿
本书详细探讨了基于CortexA8架构的嵌入式Linux系统开发的始末,对CortexA8架构处理器的操作顺序、通用GPIO接口、内存管理器、中断机制等做了详细的讲解。书中配备了大量新颖的图片,以便提升读者的兴趣,加深对理论的理解。
三、 内容结构
本书按照嵌入式Linux初学者的学习过程,从简单到复杂,从基本工具使用到系统的开发进行讲解,全书分3篇,共16章。
第1篇(第1~4章)为嵌入式Linux系统开发环境搭建篇,主要讲解以下内容:
第1章介绍嵌入式系统的概念、特点、发展历史,重点介绍了CortexA8的ARM架构以及S5PV210的处理器。
第2章讲解嵌入式Linux开发环境的搭建,包括在宿主机上安装、配置Linux操作系统(Ubuntu),交叉编译工具链制作等。
第3章介绍在嵌入式开发过程中经常使用的一些开发工具和Linux系统常用的命令,比如代码阅读和编辑工具、终端仿真工具等。
第4章介绍GNU ARM常用汇编指令、Makefile的基本语法以及交叉编译工具的选项,ARM基本指令集相关知识。本章可作为阅读本书的参考手册。
第2篇(第5~12章)为CortexA8嵌入式系统基本裸机编程篇。本篇基于S5PV210的数据手册介绍硬件部件的原理与使用方法,然后介绍怎样编写程序(即裸机程序)来操控它们。书中介绍了常用硬件部件的使用技巧,这是上层应用开发人员所不具备的技能。通过读/写各个硬件部件的寄存器来操控硬件,读者可以深刻体会到“软件”和“硬件”是怎么配合工作的。另外,本篇也是第3篇的基础。
第3篇(第13~16章)为嵌入式Linux系统移植篇,具体内容如下:
第13章分析UBoot代码的结构,后详细讲解将UBoot移植到S5PV210开发板上的方法。
第14章分析Linux内核代码的结构,以及内核启动过程,后详细讲解移植内核到S5PV210的过程。
第15章介绍嵌入式Linux文件系统的目录结构,移植Linux常用命令工具集Busybox,建立各个目录和配置文件,后编译制作文件系统映像文件。
第16章为驱动移植篇,先总体介绍嵌入式内核中驱动的编写、移植方法,然后重点介绍怎么在S5PV210平台上移植相关功能模块的驱动程序。
四、 读者对象
对嵌入式Linux开发感兴趣的读者;
电子信息工程、计算机科学与技术相关专业的本科生、研究生;
相关工程技术人员。
五、 致谢
本书主要由李建祥编写,同时还有王锋、卞曙旺、瞿苏、史瑞东等参与了本书的编写工作。另外,在本书编写过程中,得到了广州天嵌科技有限公司的大力支持和帮助,他们提供的高质量的开发板和技术资料,使得本书的写作有了很好的硬件平台,事半功倍,在此一并表示感谢。
感谢我的家人,在本书写作过程中给了我强大的精神支持和鼓励,使我能够坚持写完本书。
本书从写作到出版,曾得到刘其明教授的指导,并对书本中的关键章节提出了宝贵意见,在此表示感谢。另外,特别感谢清华大学出版社的工作人员,在本书的资料整理及校对过程中所付出的辛勤劳动。
限于编者的水平和经验,加之时间比较仓促,疏漏或者错误之处在所难免,敬请读者批评指正。有兴趣的朋友可发送邮件到[email protected],与作者交流。
编者
2016年2月
评论
还没有评论。