图书前言

一、 为什么要写本书

随着芯片制造工艺的不断改进与提升,如今的芯片不仅体积越来越小,而且功能也越来越丰富,速度也成倍提升。比较典型的芯片如大家耳熟能详的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(基于CortexA8架构、S5PV210处理器)开发板为例,从开发环境的安装、配置,ARM基本指令、Linux常用命令的使用以及嵌入式C语言等相关基础知识开始,在读者掌握了基础知识后,结合硬件原理图,逐个分析硬件部件的工作原理以及编程方法,最后带领读者一步步进入嵌入式Linux系统开发的殿堂,学习诸如UBoot、Linux内核的移植,根文件系统的制作,驱动开发与移植等各种技术。

(2) 例程丰富,解释翔实

古人云: “熟读唐诗三百首,不会做诗也会吟。”本书基于S5PV210开发板(TQ210),编写了丰富的实例源代码,并且每一个实例源代码都在S5PV210开发板上调试通过。每个代码后面都附有详细的分析注解,帮助读者理解掌握,进而加深对相关理论知识的理解。除此之外,一些编程思想、经验技巧亦可为读者提供借鉴。

嵌入式Linux系统开发入门宝典——基于ARM CortexA8处理器

(3) 资源共享,超值服务

书中用到的所有软件工具、程序源代码、文档学习资料,以及所有基于S5PV210开发板的裸机程序、UBoot代码、Linux内核代码、根文件系统等学习资源,读者都可从清华大学出版社网站本书页面下载,并可以直接使用与测试。

另外,作者为此书开通了专用的网站,读者可以直接与我们交流,共同学习和提高。另外,在国内比较知名的技术交流网站都有作者的博客(ID: js_gary),比如电子工程世界EEWorld、CSDN、电子技术设计EDN China等,读者可以通过博客与作者零距离接触。

(4) 传承经典,突出前沿

本书详细探讨了基于CortexA8架构的嵌入式Linux系统开发的始末,对CortexA8架构处理器的操作顺序、通用GPIO接口、内存管理器、中断机制等做了详细的讲解。书中配备了大量新颖的图片,以便提升读者的兴趣,加深对理论的理解。

三、 内容结构

本书按照嵌入式Linux初学者的学习过程,从简单到复杂,从基本工具使用到系统的开发进行讲解,全书分3篇,共16章。

第1篇(第1~4章)为嵌入式Linux系统开发环境搭建篇,主要讲解以下内容: 

 第1章介绍嵌入式系统的概念、特点、发展历史,重点介绍了CortexA8的ARM架构以及S5PV210的处理器。

 第2章讲解嵌入式Linux开发环境的搭建,包括在宿主机上安装、配置Linux操作系统(Ubuntu),交叉编译工具链制作等。

 第3章介绍在嵌入式开发过程中经常使用的一些开发工具和Linux系统常用的命令,比如代码阅读和编辑工具、终端仿真工具等。

 第4章介绍GNU ARM常用汇编指令、Makefile的基本语法以及交叉编译工具的选项,ARM基本指令集相关知识。本章可作为阅读本书的参考手册。

第2篇(第5~12章)为CortexA8嵌入式系统基本裸机编程篇。本篇基于S5PV210的数据手册介绍硬件部件的原理与使用方法,然后介绍怎样编写程序(即裸机程序)来操控它们。书中介绍了常用硬件部件的使用技巧,这是上层应用开发人员所不具备的技能。通过读/写各个硬件部件的寄存器来操控硬件,读者可以深刻体会到“软件”和“硬件”是怎么配合工作的。另外,本篇也是第3篇的基础。

第3篇(第13~16章)为嵌入式Linux系统移植篇,具体内容如下: 

 第13章分析UBoot代码的结构,最后详细讲解将UBoot移植到S5PV210开发板上的方法。

 第14章分析Linux内核代码的结构,以及内核启动过程,最后详细讲解移植内核到S5PV210的过程。

 第15章介绍嵌入式Linux文件系统的目录结构,移植Linux常用命令工具集Busybox,建立各个目录和配置文件,最后编译制作文件系统映像文件。

 第16章为驱动移植篇,先总体介绍嵌入式内核中驱动的编写、移植方法,然后重点介绍怎么在S5PV210平台上移植相关功能模块的驱动程序。

四、 读者对象

 对嵌入式Linux开发感兴趣的读者; 

 电子信息工程、计算机科学与技术相关专业的本科生、研究生; 

 相关工程技术人员。

五、 致谢

本书主要由李建祥编写,同时还有王锋、卞曙旺、瞿苏、史瑞东等参与了本书的编写工作。另外,在本书编写过程中,得到了广州天嵌科技有限公司的大力支持和帮助,他们提供的高质量的开发板和技术资料,使得本书的写作有了很好的硬件平台,事半功倍,在此一并表示感谢。

感谢我的家人,在本书写作过程中给了我强大的精神支持和鼓励,使我能够坚持写完本书。

本书从写作到出版,曾得到刘其明教授的指导,并对书本中的关键章节提出了宝贵意见,在此表示感谢。另外,特别感谢清华大学出版社的工作人员,在本书的资料整理及校对过程中所付出的辛勤劳动。

限于编者的水平和经验,加之时间比较仓促,疏漏或者错误之处在所难免,敬请读者批评指正。有兴趣的朋友可发送邮件到js_gary@163.com,与作者交流。

编者

2016年2月