ARM嵌入式Linux系统开发详解(第2版)

ARM嵌入式Linux系统开发详解(第2版)
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
出版社: 清华大学出版社
2014-02
版次: 2
ISBN: 9787302340522
定价: 69.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 466页
字数: 765千字
正文语种: 简体中文
  •    “Linux典藏大系”自2010年陆续出版以来,因其内容丰富、讲解细腻、通俗易懂和实用性强等特色而深受广大读者的喜爱,长期位居同类图书销售排行榜的前列,累计销量近10万册。丛书中部分图书荣获51CTO读书频道“受读者喜爱的原创IT技术图书奖”,还有多种图书的中文繁体字版权输出到了中国台湾地区出版发行。丛书中的多个品种被国内几十所培训机构和大中专院校选为教材。丛书的出版还得到了国内Linux领域知名的技术社区ChinaUnix的大力支持。读者在ChinaUnix社区的论坛上与社区中的Linux爱好者进行了广泛的交流,取得了良好的学习效果。2014年2月“Linux典藏大系“全新升级版(第2版)正式出版,第2版图书迎合了Linux技术的新发展,全部采用当前流行和稳定的Linux发行版或者相关工具,是Linux爱好者学习Linux的好帮手。   《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》是获得了大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第2版。《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》由浅入深,全面、系统地介绍了基于ARM体系结构的嵌入式Linux系统开发所涉及的方方面面技术,并提供了大量实例供读者实战演练。另外,《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》提供了9小时多媒体教学视频及书中涉及的实例源程序,便于读者高效、直观地学习。  《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》共分4篇。第1篇介绍了嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境建立和一个Linux应用程序;第2篇介绍了Linux应用程序编程基础、开发多进程/线程程序、网络通信应用、串行口通信编程、嵌入式GUI程序开发和软件项目管理;第3篇介绍ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux启动流程、Linux文件系统、建立交叉编译工具链、命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术;第4篇结合5个案例介绍了Linux设备驱动、网络设备驱动、Flash设备驱动和USB驱动的开发过程,以此提高读者的实战水平。  《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》适合广大从事嵌入式Linux系统开发的人员、对嵌入式Linux系统开发有兴趣的爱好者及大中专院校相关专业的学生阅读。   弓雷,从事嵌入式系统软件开发9年。擅长计算机通信技术,对操作系统内核及底层技术有深入研究。技术涉猎广泛,熟悉Intel IXA架构网络处理器、ARM体系结构、MIPS体系结构和TCP/IP网络协议栈等。曾经移植过Linux 2.6内核到嵌入式设备,参与研发了某部队火控武器通信系统、无人驾驶汽车项目通信系统及10GE/POS骨干网流量管理系统等。目前担任嵌入式软件研发工程师和微码软件研发工程师,从事某公司骨干网P2P流量管理设备的研发。 第1篇Linux嵌入式开发基础篇第1章嵌入式系统入门1.1什么是嵌入式系统1.2嵌入式系统应用领域1.2.1家用电器和电子类产品1.2.2交通工具1.2.3公共电子设施1.3嵌入式系统发展1.3.1嵌入式微控制器1.3.2嵌入式微处理器1.3.3未来嵌入式系统发展的方向1.4典型的嵌入式系统组成1.5小结第2章嵌入式软硬件系统2.1电路基本知识2.1.1什么是模拟电路2.1.2什么是数字电路2.1.3数制转换2.2计算机组成原理2.2.1计算机体系的发展2.2.2中央处理器2.2.3存储系统2.2.4总线系统2.2.5输入输出系统2.3软件基础知识2.3.1什么是软件2.3.2软件开发流程2.3.3常见的软件开发模型2.3.4计算机编程语言2.3.5数据结构2.4操作系统知识2.4.1什么是操作系统2.4.2操作系统的发展历史2.4.3操作系统由什么组成2.4.4几种操作系统的设计思路2.4.5操作系统分类2.5小结第3章ARM处理器3.1微处理器和微控制器3.2ARM处理器介绍3.2.1ARM微处理器的应用领域3.2.2ARM的功能特点3.3ARM指令集3.3.1算术运算指令3.3.2逻辑运算指令3.3.3分支指令3.3.4数据传送指令3.4ARM的结构3.4.1ARM体系结构的命名方法3.4.2处理器系列划分3.4.3处理器工作模式3.4.4存储系统3.4.5寻址方式3.5ARM的功能选型3.5.1ARM的选型原则3.5.2几种常见的ARM核处理器选型参考3.6小结第4章嵌入式Linux4.1常见的嵌入式操作系统4.1.1VxWorks4.1.2WindowsCE4.1.3PalmOS4.1.4Symbian4.2嵌入式Linux操作系统4.2.1什么是Linux4.2.2Linux与UNIX的不同——GPL版权协议介绍4.2.3Linux发行版4.2.4常见的嵌入式Linux系统4.3小结第5章建立软件开发环境5.1独立的Linux系统5.1.1安装UbuntuLinux5.1.2怎样安装、卸载软件5.1.3怎样配置系统服务5.1.4安装主要的开发工具5.1.5安装其他的开发工具和文档5.2运行在Windows上的Linux系统5.2.1什么是Cygwin5.2.2如何安装Cygwin5.2.3安装开发环境5.3Linux常用工具5.3.1Linuxshell和常用命令5.3.2文本编辑工具vi5.3.3搜索工具find和grep5.3.4FTP工具5.3.5串口工具minicom5.4Windows常用工具5.4.1代码编辑管理工具SourceInsight5.4.2串口工具XShell5.5ARM集成开发环境ADS5.5.1ADS集成开发环境介绍5.5.2配置ADS调试环境5.5.3建立自己的工程5.6小结第6章第一个Linux应用程序6.1向世界问好——Hello,World!6.1.1用vi编辑源代码文件6.1.2用gcc编译程序6.1.3执行程序6.2程序背后做了什么6.2.1程序执行的过程6.2.2窥视程序执行中的秘密6.2.3动态库的作用6.3程序如何来的——编译的全部过程6.3.1编译源代码6.3.2连接目标文件到指定的库6.4更简单的办法——用Makefile管理工程6.4.1什么是Makefile6.4.2它是如何工作的6.4.3如何使用Makefile6.4.4好的源代码管理习惯6.5小结第2篇Linux嵌入式开发应用篇第7章Linux应用程序编程基础7.1内存管理和使用7.1.1堆和栈的区别7.1.2内存管理函数malloc()和free()7.1.3实用的内存分配函数calloc()和realloc()7.1.4内存管理编程实例7.2ANSIC文件管理7.2.1文件指针和流7.2.2存储方式7.2.3标准输入、标准输出和标准错误7.2.4缓冲7.2.5打开、关闭文件7.2.6读写文件7.2.7文件流定位7.2.8ANSIC文件编程实例7.3POSIX文件I/O编程7.3.1底层的文件I/O操作7.3.2文件描述符7.3.3创建/打开/关闭文件7.3.4读写文件内容7.3.5文件内容定位7.3.6修改已打开文件的属性7.3.7POSIX文件编程实例7.4小结第8章开发多进程/线程程序8.1多进程开发8.1.1什么是进程8.1.2进程环境和属性8.1.3创建进程8.1.4等待进程结束8.1.5退出进程8.1.6常用进程间通信的方法8.1.7进程编程实例8.2多线程开发8.2.1线程的概念8.2.2进程和线程对比8.2.3创建线程8.2.4取消线程8.2.5等待线程8.2.6使用pthread库线程操作实例8.3小结第9章网络通信应用9.1网络通信基础9.1.1TCP/IP协议族9.1.2IP协议9.1.3TCP协议9.1.4UDP协议9.1.5学习分析协议的方法9.2Socket通信基本概念9.2.1创建socket对象9.2.2面向连接的Socket通信实现9.2.3面向连接的echo服务编程实例9.2.4无连接的Socket通信实现9.2.5无连接的时间服务编程实例9.3Socket高级应用9.3.1Socket超时处理9.3.2使用Select机制处理多连接9.3.3使用poll机制处理多连接9.3.4多线程环境Socket编程9.4小结第10章串口通信编程10.1串口介绍10.1.1什么是串口10.1.2串口工作原理10.1.3串口流量控制10.2开发串口应用程序10.2.1操作串口需要用到的头文件10.2.2串口操作方法10.2.3串口属性设置10.2.4与Windows串口终端通信10.3串口应用实例——手机短信发送10.3.1PC与手机连接发送短信的物理结构10.3.2AT指令介绍10.3.3GSMAT指令集10.3.4PDU编码方式10.3.5建立与手机的连接10.3.6使用AT指令发送短信10.4小结第11章嵌入式GUI程序开发11.1LinuxGUI介绍11.1.1LinuxGUI的发展11.1.2常见的嵌入式GUI11.2开发图形界面程序11.2.1安装Qt开发环境11.2.2建立简单的Qt程序11.2.3Qt库编程结构11.3深入Qt编程11.3.1使用Widget11.3.2对话框程序设计11.3.3信号与槽系统11.4移植Qtopia到ARM开发板11.4.1需要的资源11.4.2准备工作11.4.3编译主机Qt工具11.4.4交叉编译qtopia11.5小结第12章软件项目管理12.1源代码管理12.1.1什么是软件的版本12.1.2版本控制的概念12.2版本控制系统Subversion12.2.1在Linux系统下使用Subversion服务端12.2.2在Windows系统下使用TortoiseSVN客户端12.3开发文档管理——常见的开发文档12.3.1可行性研究报告12.3.2项目开发计划12.3.3软件需求说明书12.3.4概要设计12.3.5详细设计12.3.6用户手册12.3.7其他文档12.4使用trac管理软件开发文档12.4.1安装trac12.4.2配置trac基本设置12.4.3配置trac全局脚本12.4.4设置trac的Web界面12.5Bug跟踪系统12.5.1Bug管理的概念和作用12.5.2使用Bugzilla跟踪Bug12.6小结第3篇Linux系统篇第13章ARM体系结构及开发实例13.1ARM体系结构介绍13.1.1ARM体系结构13.1.2ARM指令集介绍13.2编程模型13.2.1数据类型13.2.2处理器模式13.2.3寄存器13.2.4通用寄存器13.2.5程序状态寄存器13.2.6异常处理13.2.7内存和内存I/O映射13.3内存管理单元13.3.1内存管理介绍13.3.2内存访问顺序13.3.3地址翻译过程13.3.4访问权限13.4常见接口和控制器13.4.1GPIO接口13.4.2中断控制器13.4.3RTC控制器13.4.4看门狗定时器13.4.5试验:使用GPIO点亮LED13.5小结第14章深入Bootloader14.1初识Bootloader14.1.1PC(个人电脑)上的Bootloader14.1.2什么是嵌入式系统的Bootloader14.1.3嵌入式系统常见的Bootloader14.2U-Boot分析14.2.1获取U-Boot14.2.2U-Boot工程结构分析14.2.3U-Boot总体工作流程14.3U-Boot启动流程分析14.3.1_start标号14.3.2reset标号14.3.3cpu_init_crit标号14.3.4lowlevel_init标号14.3.5relocate标号14.3.6start_armboot()函数14.3.7main_loop()函数14.4移植U-Boot到开发板14.4.1U-Boot移植的一般步骤14.4.2移植U-Boot到目标开发板14.4.3移植U-Boot的常见问题14.5小结第15章解析Linux内核15.1基本知识15.1.1什么是Linux内核15.1.2Linux内核版本15.1.3如何获取Linux内核代码15.1.4编译内核15.2Linux内核的子系统15.2.1系统调用接口15.2.2进程管理子系统15.2.3内存管理子系统15.2.4虚拟文件系统15.2.5网络堆栈15.2.6设备驱动15.2.7依赖体系结构的代码15.3Linux内核代码的工程结构15.3.1源代码目录布局15.3.2几个重要的Linux内核文件15.4内核编译系统15.4.1内核编译系统基本架构15.4.2内核顶层Makefile分析15.4.3内核编译文件分析15.4.4目标文件清除机制15.4.5编译辅助程序15.4.6KBuild变量15.5小结第16章嵌入式Linux启动流程16.1Linux内核初始化流程16.2PC的初始化流程16.2.1PCBIOS功能和作用16.2.2硬盘的数据结构16.2.3完整的初始化流程16.3嵌入式系统的初始化16.4Linux内核初始化16.4.1解压缩内核映像16.4.2进入内核代码16.5启动init内核进程16.6根文件系统初始化16.6.1根文件系统介绍16.6.2挂载虚拟文件系统16.7内核交出权限16.8init进程16.9初始化RAMDisk16.9.1RAMDisk介绍16.9.2如何使用RAMDisk16.9.3实例:使用RAMDisk作为根文件系统16.10小结第17章Linux文件系统17.1Linux文件管理17.1.1文件和目录的概念17.1.2文件的结构17.1.3文件的类型17.1.4文件系统的目录结构17.1.5文件和目录的存取权限17.1.6文件系统管理17.2Linux文件系统原理17.2.1非日志文件系统17.2.2日志文件系统17.3常见的Linux文件系统17.3.1ext2文件系统17.3.2ext3文件系统17.3.3ReiserFS文件系统17.3.4JFFS文件系统17.3.5cramfs文件系统17.4其他文件系统17.4.1网络文件系统17.4.2/proc影子文件系统17.5小结第18章建立交叉编译工具链18.1什么是交叉编译18.2需要哪些东西18.3手工创建工具链18.3.1准备工作——获取源代码18.3.2开始了——建立工作环境18.3.3建立Linux内核头文件18.3.4编译安装binutils18.3.5编译安装gcc的C编译器18.3.6编译安装glibc库18.3.7编译安装gcc的C、C++编译器18.3.8最后的工作18.4使用脚本创建工具链18.5更简便的方法——获取已编译好的交叉编译环境18.6小结第19章强大的命令系统BusyBox19.1BusyBox简介19.1.1简单易懂的BusyBox19.1.2BusyBox工作原理19.1.3安装BusyBox19.2交叉编译BusyBox19.3使用BusyBox19.3.1BusyBox初始化19.3.2目标板BusyBox安装19.4小结第20章Linux内核移植20.1Linux内核移植要点20.2平台相关代码结构20.3建立目标平台工程框架20.3.1加入编译菜单项20.3.2设置宏与代码文件的对应关系20.3.3测试工程框架20.4建立目标平台代码框架20.4.1ARM处理器相关结构20.4.2建立machine_desc结构20.4.3加入处理函数20.4.4加入定时器结构20.4.5测试代码结构20.5构建目标板代码20.5.1处理器初始化20.5.2端口映射20.5.3中断处理20.5.4定时器处理20.5.5编译最终代码20.6小结第21章内核和应用程序调试技术21.1使用gdb调试应用程序概述21.2基本的调试技术21.2.1列出源代码21.2.2断点管理21.2.3执行程序21.2.4显示程序变量21.2.5信号管理21.2.6调试实例21.3多进程调试21.4调试意外终止的程序21.5内核调试技术21.5.1printk打印调试信息21.5.2使用/proc虚拟文件系统21.5.3使用KDB调试工具21.5.4KDB调试指令21.6小结第4篇Linux嵌入式驱动开发篇第22章Linux设备驱动22.1设备驱动介绍22.2Linux内核模块22.2.1内核模块简介22.2.2内核模块的结构22.2.3内核模块的加载和卸载22.2.4编写一个基本的内核模块22.2.5编译内核模块22.2.6为内核模块添加参数22.3Linux设备驱动22.3.1PCI局部总线介绍22.3.2Linux设备驱动基本概念22.3.3字符设备22.3.4块设备22.3.5网络设备22.4字符设备驱动开发实例22.4.1开发一个基本的字符设备驱动24.4.2测试字符设备驱动22.5小结第23章网络设备驱动程序23.1网络基础知识23.1.1ISO/OSI网络参考模型23.1.2TCP/IP协议23.2以太网基础23.2.1工作原理23.2.2常见以太网标准23.2.3拓扑结构23.2.4工作模式23.3网卡工作原理23.4内核网络分层结构23.4.1内核网络结构23.4.2与网络有关的数据结构23.4.3内核网络部分的全局变量23.5内核网络设备驱动框架23.5.1net_device结构23.5.2数据包接收流程23.5.3数据包发送流程23.6实例:DM9000网卡驱动分析23.6.1DM9000芯片介绍23.6.2网卡驱动程序框架23.6.3DM9000网卡驱动主要数据结构23.6.4加载驱动程序23.6.5停止和启动网卡23.6.6发送数据包23.6.7接收数据包23.6.8中断和定时器处理23.7小结第24章Flash设备驱动24.1LinuxFlash驱动结构24.1.1什么是MTD24.1.2MTD系统结构24.2Flash设备基础24.2.1存储原理24.2.2性能比较24.3内核MTD层24.3.1mtd_info结构24.3.2mtd_part结构24.3.3mtd_partition结构24.3.4map_info结构24.3.5nand_chip结构24.4Flash设备框架24.4.1NORFlash设备驱动框架24.4.2NANDFlash设备驱动框架24.5Flash设备驱动实例——NORFlash设备驱动剖析24.5.1数据结构24.5.2驱动初始化24.5.3驱动卸载24.6Flash设备驱动实例——NANDFlash设备驱动分析24.6.1S3C2440NAND控制器介绍24.6.2数据结构24.6.3驱动初始化24.6.4驱动卸载24.6.5初始化NAND控制器24.6.6设置芯片操作24.6.7电源管理24.7小结第25章USB驱动开发25.1USB体系介绍25.1.1USB设计目标25.1.2USB体系概述25.1.3USB体系工作流程25.2USB驱动程序框架25.2.1Linux内核USB驱动框架25.2.2主机驱动结构25.2.3设备驱动结构25.2.4USB驱动程序框架25.3USB驱动实例剖析25.3.1USB串口驱动25.3.2USB键盘驱动25.4小结
  • 内容简介:
       “Linux典藏大系”自2010年陆续出版以来,因其内容丰富、讲解细腻、通俗易懂和实用性强等特色而深受广大读者的喜爱,长期位居同类图书销售排行榜的前列,累计销量近10万册。丛书中部分图书荣获51CTO读书频道“受读者喜爱的原创IT技术图书奖”,还有多种图书的中文繁体字版权输出到了中国台湾地区出版发行。丛书中的多个品种被国内几十所培训机构和大中专院校选为教材。丛书的出版还得到了国内Linux领域知名的技术社区ChinaUnix的大力支持。读者在ChinaUnix社区的论坛上与社区中的Linux爱好者进行了广泛的交流,取得了良好的学习效果。2014年2月“Linux典藏大系“全新升级版(第2版)正式出版,第2版图书迎合了Linux技术的新发展,全部采用当前流行和稳定的Linux发行版或者相关工具,是Linux爱好者学习Linux的好帮手。   《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》是获得了大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第2版。《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》由浅入深,全面、系统地介绍了基于ARM体系结构的嵌入式Linux系统开发所涉及的方方面面技术,并提供了大量实例供读者实战演练。另外,《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》提供了9小时多媒体教学视频及书中涉及的实例源程序,便于读者高效、直观地学习。  《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》共分4篇。第1篇介绍了嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境建立和一个Linux应用程序;第2篇介绍了Linux应用程序编程基础、开发多进程/线程程序、网络通信应用、串行口通信编程、嵌入式GUI程序开发和软件项目管理;第3篇介绍ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux启动流程、Linux文件系统、建立交叉编译工具链、命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术;第4篇结合5个案例介绍了Linux设备驱动、网络设备驱动、Flash设备驱动和USB驱动的开发过程,以此提高读者的实战水平。  《Linux典藏大系:ARM嵌入式Linux系统开发详解(第2版)》适合广大从事嵌入式Linux系统开发的人员、对嵌入式Linux系统开发有兴趣的爱好者及大中专院校相关专业的学生阅读。
  • 作者简介:
      弓雷,从事嵌入式系统软件开发9年。擅长计算机通信技术,对操作系统内核及底层技术有深入研究。技术涉猎广泛,熟悉Intel IXA架构网络处理器、ARM体系结构、MIPS体系结构和TCP/IP网络协议栈等。曾经移植过Linux 2.6内核到嵌入式设备,参与研发了某部队火控武器通信系统、无人驾驶汽车项目通信系统及10GE/POS骨干网流量管理系统等。目前担任嵌入式软件研发工程师和微码软件研发工程师,从事某公司骨干网P2P流量管理设备的研发。
  • 目录:
    第1篇Linux嵌入式开发基础篇第1章嵌入式系统入门1.1什么是嵌入式系统1.2嵌入式系统应用领域1.2.1家用电器和电子类产品1.2.2交通工具1.2.3公共电子设施1.3嵌入式系统发展1.3.1嵌入式微控制器1.3.2嵌入式微处理器1.3.3未来嵌入式系统发展的方向1.4典型的嵌入式系统组成1.5小结第2章嵌入式软硬件系统2.1电路基本知识2.1.1什么是模拟电路2.1.2什么是数字电路2.1.3数制转换2.2计算机组成原理2.2.1计算机体系的发展2.2.2中央处理器2.2.3存储系统2.2.4总线系统2.2.5输入输出系统2.3软件基础知识2.3.1什么是软件2.3.2软件开发流程2.3.3常见的软件开发模型2.3.4计算机编程语言2.3.5数据结构2.4操作系统知识2.4.1什么是操作系统2.4.2操作系统的发展历史2.4.3操作系统由什么组成2.4.4几种操作系统的设计思路2.4.5操作系统分类2.5小结第3章ARM处理器3.1微处理器和微控制器3.2ARM处理器介绍3.2.1ARM微处理器的应用领域3.2.2ARM的功能特点3.3ARM指令集3.3.1算术运算指令3.3.2逻辑运算指令3.3.3分支指令3.3.4数据传送指令3.4ARM的结构3.4.1ARM体系结构的命名方法3.4.2处理器系列划分3.4.3处理器工作模式3.4.4存储系统3.4.5寻址方式3.5ARM的功能选型3.5.1ARM的选型原则3.5.2几种常见的ARM核处理器选型参考3.6小结第4章嵌入式Linux4.1常见的嵌入式操作系统4.1.1VxWorks4.1.2WindowsCE4.1.3PalmOS4.1.4Symbian4.2嵌入式Linux操作系统4.2.1什么是Linux4.2.2Linux与UNIX的不同——GPL版权协议介绍4.2.3Linux发行版4.2.4常见的嵌入式Linux系统4.3小结第5章建立软件开发环境5.1独立的Linux系统5.1.1安装UbuntuLinux5.1.2怎样安装、卸载软件5.1.3怎样配置系统服务5.1.4安装主要的开发工具5.1.5安装其他的开发工具和文档5.2运行在Windows上的Linux系统5.2.1什么是Cygwin5.2.2如何安装Cygwin5.2.3安装开发环境5.3Linux常用工具5.3.1Linuxshell和常用命令5.3.2文本编辑工具vi5.3.3搜索工具find和grep5.3.4FTP工具5.3.5串口工具minicom5.4Windows常用工具5.4.1代码编辑管理工具SourceInsight5.4.2串口工具XShell5.5ARM集成开发环境ADS5.5.1ADS集成开发环境介绍5.5.2配置ADS调试环境5.5.3建立自己的工程5.6小结第6章第一个Linux应用程序6.1向世界问好——Hello,World!6.1.1用vi编辑源代码文件6.1.2用gcc编译程序6.1.3执行程序6.2程序背后做了什么6.2.1程序执行的过程6.2.2窥视程序执行中的秘密6.2.3动态库的作用6.3程序如何来的——编译的全部过程6.3.1编译源代码6.3.2连接目标文件到指定的库6.4更简单的办法——用Makefile管理工程6.4.1什么是Makefile6.4.2它是如何工作的6.4.3如何使用Makefile6.4.4好的源代码管理习惯6.5小结第2篇Linux嵌入式开发应用篇第7章Linux应用程序编程基础7.1内存管理和使用7.1.1堆和栈的区别7.1.2内存管理函数malloc()和free()7.1.3实用的内存分配函数calloc()和realloc()7.1.4内存管理编程实例7.2ANSIC文件管理7.2.1文件指针和流7.2.2存储方式7.2.3标准输入、标准输出和标准错误7.2.4缓冲7.2.5打开、关闭文件7.2.6读写文件7.2.7文件流定位7.2.8ANSIC文件编程实例7.3POSIX文件I/O编程7.3.1底层的文件I/O操作7.3.2文件描述符7.3.3创建/打开/关闭文件7.3.4读写文件内容7.3.5文件内容定位7.3.6修改已打开文件的属性7.3.7POSIX文件编程实例7.4小结第8章开发多进程/线程程序8.1多进程开发8.1.1什么是进程8.1.2进程环境和属性8.1.3创建进程8.1.4等待进程结束8.1.5退出进程8.1.6常用进程间通信的方法8.1.7进程编程实例8.2多线程开发8.2.1线程的概念8.2.2进程和线程对比8.2.3创建线程8.2.4取消线程8.2.5等待线程8.2.6使用pthread库线程操作实例8.3小结第9章网络通信应用9.1网络通信基础9.1.1TCP/IP协议族9.1.2IP协议9.1.3TCP协议9.1.4UDP协议9.1.5学习分析协议的方法9.2Socket通信基本概念9.2.1创建socket对象9.2.2面向连接的Socket通信实现9.2.3面向连接的echo服务编程实例9.2.4无连接的Socket通信实现9.2.5无连接的时间服务编程实例9.3Socket高级应用9.3.1Socket超时处理9.3.2使用Select机制处理多连接9.3.3使用poll机制处理多连接9.3.4多线程环境Socket编程9.4小结第10章串口通信编程10.1串口介绍10.1.1什么是串口10.1.2串口工作原理10.1.3串口流量控制10.2开发串口应用程序10.2.1操作串口需要用到的头文件10.2.2串口操作方法10.2.3串口属性设置10.2.4与Windows串口终端通信10.3串口应用实例——手机短信发送10.3.1PC与手机连接发送短信的物理结构10.3.2AT指令介绍10.3.3GSMAT指令集10.3.4PDU编码方式10.3.5建立与手机的连接10.3.6使用AT指令发送短信10.4小结第11章嵌入式GUI程序开发11.1LinuxGUI介绍11.1.1LinuxGUI的发展11.1.2常见的嵌入式GUI11.2开发图形界面程序11.2.1安装Qt开发环境11.2.2建立简单的Qt程序11.2.3Qt库编程结构11.3深入Qt编程11.3.1使用Widget11.3.2对话框程序设计11.3.3信号与槽系统11.4移植Qtopia到ARM开发板11.4.1需要的资源11.4.2准备工作11.4.3编译主机Qt工具11.4.4交叉编译qtopia11.5小结第12章软件项目管理12.1源代码管理12.1.1什么是软件的版本12.1.2版本控制的概念12.2版本控制系统Subversion12.2.1在Linux系统下使用Subversion服务端12.2.2在Windows系统下使用TortoiseSVN客户端12.3开发文档管理——常见的开发文档12.3.1可行性研究报告12.3.2项目开发计划12.3.3软件需求说明书12.3.4概要设计12.3.5详细设计12.3.6用户手册12.3.7其他文档12.4使用trac管理软件开发文档12.4.1安装trac12.4.2配置trac基本设置12.4.3配置trac全局脚本12.4.4设置trac的Web界面12.5Bug跟踪系统12.5.1Bug管理的概念和作用12.5.2使用Bugzilla跟踪Bug12.6小结第3篇Linux系统篇第13章ARM体系结构及开发实例13.1ARM体系结构介绍13.1.1ARM体系结构13.1.2ARM指令集介绍13.2编程模型13.2.1数据类型13.2.2处理器模式13.2.3寄存器13.2.4通用寄存器13.2.5程序状态寄存器13.2.6异常处理13.2.7内存和内存I/O映射13.3内存管理单元13.3.1内存管理介绍13.3.2内存访问顺序13.3.3地址翻译过程13.3.4访问权限13.4常见接口和控制器13.4.1GPIO接口13.4.2中断控制器13.4.3RTC控制器13.4.4看门狗定时器13.4.5试验:使用GPIO点亮LED13.5小结第14章深入Bootloader14.1初识Bootloader14.1.1PC(个人电脑)上的Bootloader14.1.2什么是嵌入式系统的Bootloader14.1.3嵌入式系统常见的Bootloader14.2U-Boot分析14.2.1获取U-Boot14.2.2U-Boot工程结构分析14.2.3U-Boot总体工作流程14.3U-Boot启动流程分析14.3.1_start标号14.3.2reset标号14.3.3cpu_init_crit标号14.3.4lowlevel_init标号14.3.5relocate标号14.3.6start_armboot()函数14.3.7main_loop()函数14.4移植U-Boot到开发板14.4.1U-Boot移植的一般步骤14.4.2移植U-Boot到目标开发板14.4.3移植U-Boot的常见问题14.5小结第15章解析Linux内核15.1基本知识15.1.1什么是Linux内核15.1.2Linux内核版本15.1.3如何获取Linux内核代码15.1.4编译内核15.2Linux内核的子系统15.2.1系统调用接口15.2.2进程管理子系统15.2.3内存管理子系统15.2.4虚拟文件系统15.2.5网络堆栈15.2.6设备驱动15.2.7依赖体系结构的代码15.3Linux内核代码的工程结构15.3.1源代码目录布局15.3.2几个重要的Linux内核文件15.4内核编译系统15.4.1内核编译系统基本架构15.4.2内核顶层Makefile分析15.4.3内核编译文件分析15.4.4目标文件清除机制15.4.5编译辅助程序15.4.6KBuild变量15.5小结第16章嵌入式Linux启动流程16.1Linux内核初始化流程16.2PC的初始化流程16.2.1PCBIOS功能和作用16.2.2硬盘的数据结构16.2.3完整的初始化流程16.3嵌入式系统的初始化16.4Linux内核初始化16.4.1解压缩内核映像16.4.2进入内核代码16.5启动init内核进程16.6根文件系统初始化16.6.1根文件系统介绍16.6.2挂载虚拟文件系统16.7内核交出权限16.8init进程16.9初始化RAMDisk16.9.1RAMDisk介绍16.9.2如何使用RAMDisk16.9.3实例:使用RAMDisk作为根文件系统16.10小结第17章Linux文件系统17.1Linux文件管理17.1.1文件和目录的概念17.1.2文件的结构17.1.3文件的类型17.1.4文件系统的目录结构17.1.5文件和目录的存取权限17.1.6文件系统管理17.2Linux文件系统原理17.2.1非日志文件系统17.2.2日志文件系统17.3常见的Linux文件系统17.3.1ext2文件系统17.3.2ext3文件系统17.3.3ReiserFS文件系统17.3.4JFFS文件系统17.3.5cramfs文件系统17.4其他文件系统17.4.1网络文件系统17.4.2/proc影子文件系统17.5小结第18章建立交叉编译工具链18.1什么是交叉编译18.2需要哪些东西18.3手工创建工具链18.3.1准备工作——获取源代码18.3.2开始了——建立工作环境18.3.3建立Linux内核头文件18.3.4编译安装binutils18.3.5编译安装gcc的C编译器18.3.6编译安装glibc库18.3.7编译安装gcc的C、C++编译器18.3.8最后的工作18.4使用脚本创建工具链18.5更简便的方法——获取已编译好的交叉编译环境18.6小结第19章强大的命令系统BusyBox19.1BusyBox简介19.1.1简单易懂的BusyBox19.1.2BusyBox工作原理19.1.3安装BusyBox19.2交叉编译BusyBox19.3使用BusyBox19.3.1BusyBox初始化19.3.2目标板BusyBox安装19.4小结第20章Linux内核移植20.1Linux内核移植要点20.2平台相关代码结构20.3建立目标平台工程框架20.3.1加入编译菜单项20.3.2设置宏与代码文件的对应关系20.3.3测试工程框架20.4建立目标平台代码框架20.4.1ARM处理器相关结构20.4.2建立machine_desc结构20.4.3加入处理函数20.4.4加入定时器结构20.4.5测试代码结构20.5构建目标板代码20.5.1处理器初始化20.5.2端口映射20.5.3中断处理20.5.4定时器处理20.5.5编译最终代码20.6小结第21章内核和应用程序调试技术21.1使用gdb调试应用程序概述21.2基本的调试技术21.2.1列出源代码21.2.2断点管理21.2.3执行程序21.2.4显示程序变量21.2.5信号管理21.2.6调试实例21.3多进程调试21.4调试意外终止的程序21.5内核调试技术21.5.1printk打印调试信息21.5.2使用/proc虚拟文件系统21.5.3使用KDB调试工具21.5.4KDB调试指令21.6小结第4篇Linux嵌入式驱动开发篇第22章Linux设备驱动22.1设备驱动介绍22.2Linux内核模块22.2.1内核模块简介22.2.2内核模块的结构22.2.3内核模块的加载和卸载22.2.4编写一个基本的内核模块22.2.5编译内核模块22.2.6为内核模块添加参数22.3Linux设备驱动22.3.1PCI局部总线介绍22.3.2Linux设备驱动基本概念22.3.3字符设备22.3.4块设备22.3.5网络设备22.4字符设备驱动开发实例22.4.1开发一个基本的字符设备驱动24.4.2测试字符设备驱动22.5小结第23章网络设备驱动程序23.1网络基础知识23.1.1ISO/OSI网络参考模型23.1.2TCP/IP协议23.2以太网基础23.2.1工作原理23.2.2常见以太网标准23.2.3拓扑结构23.2.4工作模式23.3网卡工作原理23.4内核网络分层结构23.4.1内核网络结构23.4.2与网络有关的数据结构23.4.3内核网络部分的全局变量23.5内核网络设备驱动框架23.5.1net_device结构23.5.2数据包接收流程23.5.3数据包发送流程23.6实例:DM9000网卡驱动分析23.6.1DM9000芯片介绍23.6.2网卡驱动程序框架23.6.3DM9000网卡驱动主要数据结构23.6.4加载驱动程序23.6.5停止和启动网卡23.6.6发送数据包23.6.7接收数据包23.6.8中断和定时器处理23.7小结第24章Flash设备驱动24.1LinuxFlash驱动结构24.1.1什么是MTD24.1.2MTD系统结构24.2Flash设备基础24.2.1存储原理24.2.2性能比较24.3内核MTD层24.3.1mtd_info结构24.3.2mtd_part结构24.3.3mtd_partition结构24.3.4map_info结构24.3.5nand_chip结构24.4Flash设备框架24.4.1NORFlash设备驱动框架24.4.2NANDFlash设备驱动框架24.5Flash设备驱动实例——NORFlash设备驱动剖析24.5.1数据结构24.5.2驱动初始化24.5.3驱动卸载24.6Flash设备驱动实例——NANDFlash设备驱动分析24.6.1S3C2440NAND控制器介绍24.6.2数据结构24.6.3驱动初始化24.6.4驱动卸载24.6.5初始化NAND控制器24.6.6设置芯片操作24.6.7电源管理24.7小结第25章USB驱动开发25.1USB体系介绍25.1.1USB设计目标25.1.2USB体系概述25.1.3USB体系工作流程25.2USB驱动程序框架25.2.1Linux内核USB驱动框架25.2.2主机驱动结构25.2.3设备驱动结构25.2.4USB驱动程序框架25.3USB驱动实例剖析25.3.1USB串口驱动25.3.2USB键盘驱动25.4小结
查看详情
12
好书推荐 / 更多
ARM嵌入式Linux系统开发详解(第2版)
胡迁作品:大象席地而坐
胡迁 著
ARM嵌入式Linux系统开发详解(第2版)
OPUS作品(套装上下册)
[日]今敏 著;Mrs.X 译
ARM嵌入式Linux系统开发详解(第2版)
近代能乐集(三岛由纪夫戏剧代表作,爱与美与死的永恒角力)
[日]三岛由纪夫 著;玖羽 译
ARM嵌入式Linux系统开发详解(第2版)
上海字记:百年汉字设计档案
姜庆共、刘瑞樱 著
ARM嵌入式Linux系统开发详解(第2版)
唐宋“古文运动”与士大夫文学
朱刚 著;王水照 编
ARM嵌入式Linux系统开发详解(第2版)
行星
[英]贾尔斯•斯帕罗;Giles•Sparrow
ARM嵌入式Linux系统开发详解(第2版)
马里琳·鲁滨逊作品基列三部曲:基列家书(2005年获得普利策小说奖,《卫报》21世纪百本伟大小说
玛丽莲·罗宾逊 著;李尧 译
ARM嵌入式Linux系统开发详解(第2版)
特拉法尔加战役
朱利安·S.科贝特(Julian,S.,Corbett) 著;陈骆 译
ARM嵌入式Linux系统开发详解(第2版)
大雪将至
[奥地利]罗伯特•泽塔勒 著
ARM嵌入式Linux系统开发详解(第2版)
中国叙事学(第2版)
[美]浦安迪(Andrew H.Plaks) 著
ARM嵌入式Linux系统开发详解(第2版)
肉体与石头:西方文明中的身体与城市
[美]理查德·桑内特 著;黄煜文 译
ARM嵌入式Linux系统开发详解(第2版)
维多利亚女王:作为君王和女性的一生
[英]露西·沃斯利 著;张佩 译