分类: LINUX
2012-04-27 10:41:38
丛 书 名: 嵌入式Linux应用开发完全手册
作 者: 韦东山
编 辑: 黄 焱
书 号: 978-7-115-18262-3
出 版 社: 人民邮电出版社
出 版 日 期:2008-08
版 次: 第1版第1次
开 本: 16开
页 数: 579页
前言:
Linux在嵌入式领域发展迅速、需求旺盛,但是Linux的入门很难、非常难!目前还没有系统的、由浅入深的教程,初学者多是自己琢磨,效率不高。学习过程中碰到的问题千奇百怪,解决后却往往发现是极其低级的错误,简直令人发狂──以编者为例,初学时在论坛疯狂发帖求教,现在回头一看不免感叹:怎么会提出这么弱智的问题?但是,当时就是被这类问题折磨得寝食难安。
相对于Linux常识的匮乏,更大的困难是完善的计算机基础知识的缺失:只了解硬件,或是只了解软件。对于有志于从事底层系统开发(比如改造Bootloader、钻研内核、为新硬件编写驱动程序)的人、对于想从上层软件转到底层软件的人,应该看得懂电路原理图,看得懂芯片数据手册,可以在脑中清楚地想象软件是怎样和硬件发生作用的。
同样,对于想从硬件岗位转到软件岗位的人、对于想从传统单片机(比如51单片机)编程进一步学习“有操作系统的”嵌入式编程的人,需要找到一个学习的切入点:先掌握各个硬件部件的简单编程,再将它们组合起来构成一个相对复杂的软件系统──比如Bootloader,进而编写基于操作系统的驱动程序,最后深入钻研操作系统内核。
最后,对于尚未参加工作的在校生来说,缺乏实际的操作经验可能是就业的最大障碍。很多人买了开发板想进一步练习,却发现找不到学习的门径。
鉴于上述种种困难及需求,编者结合自己的学习经历、工作心得写成此书,期望能帮助读者加快Linux的入门速度,并体会到深入学习Linux的乐趣。
本书由浅入深,循序渐进,适合刚接触嵌入式Linux的初学者、想系统地扩展技术路线的Linux程序员、硬件开发者,以及高校计算机相关专业的师生参考使用。
关于本书
本书以S3C2410、S3C2440开发板为例,从分析硬件上电执行的第一条指令开始,到构造出一个类似PDA的、基于Linux的桌面GUI系统,带领读者学习、掌握从最底层到最高层的软件编写方法。
读者可以确信这点:当学习完本书,就可以自己制造一个PDA、掌上电脑了。
编者力求将本书打造成嵌入式Linux的“完全”开发教程,所含内容有:
l 开发环境的搭建(包括安装Linux系统及日常使用的工具);
l 开发板上各硬件部件的使用方法及实际的编程操作;
l 嵌入式Linux系统的构造(包括Bootloader、内核、文件系统等);
l Linux驱动程序的编写方法及大量实例;
l GUI系统的移植(两个GUI系统:基于Qtopia和基于X);
l 调试技术(包括内核调试技术和应用程序调试技术)。
本书所有章节,都结合理论及代码进行讲解,并可按照书中说明进行实际操作,力求让读者“知其然,也知其所以然”。
本书内容及组织方式
本书是一本“全面”介绍嵌入式Linux开发的书籍,按照初学者的学习过程,从简单到复杂,从底层软件到上层软件进行讲解,全书分5篇,共27章。
第1篇为《嵌入式Linux开发环境构建篇》,主要讲解以下内容:
· 第1章介绍基于ARM的嵌入式Linux系统的一些概念;
· 第2章是关于开发环境的建立,包括在PC上安装、配置Linux操作系统,安装随书光盘;
· 第3章介绍了交叉编译工具的选项,Makefile的语法,以及本书用到的ARM汇编指令及相关知识,这章可以当作阅读后续章节时的参考手册;
· 第4章介绍了一些日常工作要用到工具,比如源码阅读、编辑工具等。
第2篇为《ARM9嵌入式系统基础实验篇》,包含第5~14章。它先是根据S3C2410、S3C2440的数据手册介绍各硬件部件的使用方法,然后介绍怎样编写程序来操作它们。文中参插介绍了连接器的很多使用技巧,读者可以由此接触到“程序的内部结构”,这是单纯的上层开发人员所缺乏的。通过读写各个硬件部件的寄存器来操作硬件,读者还可以深刻体会到“软件”和“硬件”是怎样发生作用的,这是后续第3、4篇的基础。读者还可以把这几章当作数据手册来使用。
第3篇为《嵌入式Linux系统移植篇》,主要讲解以下内容:
· 第15章深入分析U-Boot(它负责引导内核)的代码结构,并详细介绍了将它移植到开发板上的方法;
· 第16章也是先大概了然内核的代码结构,然后深入分析它的启动过程,最后将它移植到开发板上;
· 第17章先从整体上介绍了Linux文件系统的目录结构──FHS标准;然后构造文件系统:移植常用工具的集合Busybox,移植glibc库,建立各个目录,建立配置文件;最后修改、编译一些工具,使用它们来制作yaffs、jffs2文件系统映象文件。
· 第18章介绍了3种内核调试技术:printk、kgdb补丁、使用Oops信息进行栈回溯。
学习完第3篇后,就可以在开发板上建立基本的Linux运行系统了。
第4篇为《嵌入式Linux设备驱动开发篇》,包含第19~24章。在第19章中总体介绍了驱动程序的编写、移植方法,在第20章介绍了内核的异常处间体系结构──就是怎样使用中断,这两点是本篇的重点。其他章节都是一些例子:先总体介绍相关硬件的驱动程序架构,然后根据开发板的特性进行修改。
第4篇移植的驱动有字符设备驱动、块设备驱动、网卡驱动,从最简单的LED、按键、扩展串口,到复杂的IDE硬件、SD卡驱动、LCD、USB驱动等。读者可以藉些体会驱动程序的编写方法。建议读者先不看书,自行移植──碰到困难并试图去解决它的过程中才能学到东西。
第5篇为《嵌入式Linux系统应用开发篇》,主要讲解以下内容:
· 第25章移植了一个基于Qtopia的GUI系统,并且以简单的“Hello, world”程序为例编写、调试GUI程序。
· 第26章移植了一个基于X的GUI系统,里面涉及众多软件,读者可以体会到上层应用的开发过程,并且获得移植大型软件的经验。这章还介绍了一个名为Scratchbox的交叉编译工具包,它虚拟出一个可以直接编译软件的目标机器,使得“交叉编译”变为“本地编译”,大幅减少了为非x86平台移植软件所需的工作量。
· 第27章介绍了几种简便的应用程序调试技术:使用strace工具跟踪系统调用和信号,使用memwatch检查程序的内存漏洞,使用库函数backtrace和backtrace_symbols来定位段错误。