ARM嵌入式Linux系统开发详解

ARM嵌入式Linux系统开发详解
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2010-01
版次: 1
ISBN: 9787302207290
定价: 59.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 478页
字数: 776千字
正文语种: 简体中文
24人买过
  •   嵌入式系统是目前最流行的计算机应用技术之一。《ARM嵌入式Linux系统开发详解》由浅入深地讲解基于ARM体系结构的嵌入式Linux系统开发,内容包括嵌入式系统的基本概念、应用领域等基础知识;ARM处理器的体系结构和功能特点;Linux系统内核结构和移植方法、Bootloader功能和移植;Linux应用程序开发,包括如何操作文件、管理内存、访问串口、多线程和多进程技术,并且剖析了应用程序的结构和工作流程;Linux系统设备驱动程序开发,包括如何编写内核模块、驱动程序分类和功能特点,并且给出了网络设备驱动、Flash设备驱动和USB设备驱动的实例分析。
      《ARM嵌入式Linux系统开发详解》附带1张DVD光盘,内容为专门为《ARM嵌入式Linux系统开发详解》录制的9小时视频、《ARM嵌入式Linux系统开发详解》涉及的源代码、Ubuntu安装光盘的镜像文件和另外赠送的35小时Linux专题学习视频。
      《ARM嵌入式Linux系统开发详解》适合广大从事嵌入式Linux系统开发人员、对嵌入式Linux系统开发有兴趣的计算机爱好者,以及大中专院校学生阅读。   弓雷在电信行业从事嵌入式系统软件开发5年。致力于计算机操作系统内核及底层技术的研究。技术涉猎广泛,擅长计算机通信技术。熟悉IntelIXA架构网络处理器、ARM体系结构、MIPS体系结构、TCP/IP网络协议栈。曾经移植过Linux2.6内核到嵌入式设备。曾经参与研发某部队火控武器通信系统、无人驾驶汽车项目通信系统及10GE/POS骨干网流量管理系统。目前担任嵌入式软件研发工程师和微码软件研发工程师,从事某公司骨干网P2P流量管理设备的研发。 第1篇Linux嵌入式开发基础篇.
    第1章嵌入式系统入门2
    1.1什么是嵌入式系统2
    1.2嵌入式系统应用领域2
    1.2.1家用电器2
    1.2.2交通工具3
    1.2.3公共电子设施3
    1.3嵌入式系统发展4
    1.3.1嵌入式微控制器4
    1.3.2嵌入式微处理器5
    1.3.3未来嵌入式系统发展的方向6
    1.4典型的嵌入式系统组成6
    1.5小结7

    第2章嵌入式软硬件系统8
    2.1电路基本知识8
    2.1.1什么是模拟电路8
    2.1.2什么是数字电路8
    2.1.3数制转换9
    2.2计算机组成原理10
    2.2.1计算机体系的发展10
    2.2.2中央处理器10
    2.2.3存储系统11
    2.2.4总线系统12
    2.2.5输入输出系统12
    2.3软件基础知识12
    2.3.1什么是软件13
    2.3.2软件开发流程13
    2.3.3常见的软件开发模型14
    2.3.4计算机编程语言14
    2.3.5数据结构15
    2.4操作系统知识15
    2.4.1什么是操作系统16
    2.4.2操作系统的发展历史16
    2.4.3操作系统由什么组成16
    2.4.4几种操作系统的设计思路17
    2.4.5操作系统分类17
    2.5小结18

    第3章ARM处理器19
    3.1微处理器和微控制器19
    3.2ARM处理器介绍19
    3.2.1ARM微处理器的应用领域20
    3.2.2ARM的功能特点20
    3.3ARM指令集21
    3.3.1算术运算指令21
    3.3.2逻辑运算指令22
    3.3.3分支指令23
    3.3.4数据传送指令23
    3.4ARM的结构24
    3.4.1ARM体系结构的命名方法24
    3.4.2处理器系列划分25
    3.4.3处理器工作模式25
    3.4.4存储系统26
    3.4.5寻址方式27
    3.5ARM的功能选型29
    3.5.1ARM的选型原则29
    3.5.2几种常见的ARM核处理器选型参考32
    3.6小结32

    第4章嵌入式Linux33
    4.1常见的嵌入式操作系统33
    4.1.1VxWorks33
    4.1.2WindowsCE34
    4.1.3PalmOS34
    4.1.4Symbian34
    4.2嵌入式Linux操作系统34
    4.2.1什么是Linux35
    4.2.2Linux与UNIX的不同——GPL版权协议介绍35
    4.2.3Linux发行版36
    4.2.4常见的嵌入式Linux系统37
    4.3小结37

    第5章建立软件开发环境38
    5.1独立的Linux系统38
    5.1.1安装UbuntuLinux38
    5.1.2关键一步——系统的网络设置46
    5.1.3其他必要的设置46
    5.1.4怎样安装卸载软件48
    5.1.5怎样配置系统服务48
    5.1.6安装主要的开发工具48
    5.1.7安装其他的开发工具和文档49
    5.2运行在Windows上的Linux系统50
    5.2.1什么是Cygwin50
    5.2.2如何安装Cygwin50
    5.2.3安装开发环境54
    5.3Linux常用工具54
    5.3.1Linuxshell和常用命令55
    5.3.2文本编辑工具vi56
    5.3.3搜索工具find和grep57
    5.3.4FTP工具61
    5.3.5串口工具minicom63
    5.4Windows常用工具65
    5.4.1代码编辑管理工具SourceInsight65
    5.4.2串口工具XShell71
    5.5ARM集成开发环境ADS72
    5.5.1ADS集成开发环境介绍73
    5.5.2配置ADS调试环境73
    5.5.3建立自己的工程75
    5.6小结78

    第6章第一个Linux应用程序79
    6.1向世界问好——Hello,World!79
    6.1.1用vi编辑源代码文件79
    6.1.2用gcc编译程序80
    6.1.3执行程序80
    6.2程序背后做了什么80
    6.2.1程序执行的过程81
    6.2.2窥视程序执行中的秘密82
    6.2.3动态库的作用83
    6.3程序如何来的——编译的全部过程84
    6.3.1编译源代码84
    6.3.2连接目标文件到指定的库85
    6.4更简单的办法——用Makefile管理工程86
    6.4.1什么是Makefile87
    6.4.2它是如何工作的87
    6.4.3如何使用Makefile87
    6.4.4好的源代码管理习惯88
    6.5小结88

    第2篇Linux嵌入式开发应用篇
    第7章Linux应用程序编程基础90
    7.1内存管理和使用90
    7.1.1堆和栈的区别90
    7.1.2内存管理函数malloc()和free()93
    7.1.3实用的内存分配函数calloc()和realloc()93
    7.1.4内存管理编程实例94
    7.2ANSIC文件管理97
    7.2.1文件指针和流97
    7.2.2存储方式98
    7.2.3标准输入、标准输出和标准错误98
    7.2.4缓冲98
    7.2.5打开关闭文件99
    7.2.6读写文件100
    7.2.7文件流定位103
    7.2.8ANSIC文件编程实例103
    7.3POSIX文件I/O编程104
    7.3.1底层的文件I/O操作104
    7.3.2文件描述符104
    7.3.3创建/打开/关闭文件105
    7.3.4读写文件内容108
    7.3.5文件内容定位109
    7.3.6修改已打开文件的属性110
    7.3.7POSIX文件编程实例110
    7.4小结112

    第8章开发多进程/线程程序113
    8.1多进程开发113
    8.1.1什么是进程113
    8.1.2进程环境和属性114
    8.1.3创建进程115
    8.1.4等待进程结束117
    8.1.5退出进程118
    8.1.6常用进程间通信的方法120
    8.1.7进程编程实例124
    8.2多线程开发125
    8.2.1线程的概念126
    8.2.2进程和线程对比126
    8.2.3创建线程127
    8.2.4取消线程128
    8.2.5等待线程129
    8.2.6使用pthread库线程操作实例129
    8.3小结131

    第9章网络通信应用132
    9.1网络通信基础132
    9.1.1TCP/IP协议族132
    9.1.2IP协议133
    9.1.3TCP协议135
    9.1.4UDP协议135
    9.1.5学习分析协议的方法135
    9.2Socket通信基本概念137
    9.2.1创建socket对象138
    9.2.2面向连接的Socket通信实现138
    9.2.3面向连接的Echo服务编程实例140
    9.2.4无连接的Socket通信实现144
    9.2.5无连接的时间服务编程实例145
    9.3Socket高级应用148
    9.3.1Socket超时处理148
    9.3.2使用Select机制处理多连接149
    9.3.3使用Poll机制处理多连接151
    9.3.4多线程环境Socket编程152
    9.4小结152

    第10章串行口通信编程154
    10.1串口介绍154
    10.1.1什么是串口154
    10.1.2串口工作原理154
    10.1.3串口流量控制155
    10.2开发串口应用程序156
    10.2.1操作串口需要用到的头文件156
    10.2.2串口操作方法157
    10.2.3串口属性设置157
    10.2.4与Windows串口终端通信161
    10.3串口应用实例——手机短信发送163
    10.3.1PC与手机连接发送短信的物理结构164
    10.3.2AT指令介绍164
    10.3.3GSMAT指令集165
    10.3.4PDU编码方式165
    10.3.5建立与手机的连接167
    10.3.6使用AT指令发送短信167
    10.4小结171

    第11章嵌入式GUI程序开发172
    11.1LinuxGUI介绍172
    11.1.1LinuxGUI的发展172
    11.1.2常见的嵌入式GUI173
    11.2开发图形界面程序174
    11.2.1安装Qt开发环境174
    11.2.2建立简单的Qt程序176
    11.2.3Qt库编程结构178
    11.3深入Qt编程179
    11.3.1使用Widget179
    11.3.2对话框程序设计181
    11.3.3信号与槽系统185
    11.4移植Qtopia到ARM开发板186
    11.4.1需要的资源186
    11.4.2准备工作187
    11.4.3编译主机Qt工具187
    11.4.4交叉编译qtopia189
    11.5小结190

    第12章软件项目管理191
    12.1源代码管理191
    12.1.1什么是软件的版本191
    12.1.2版本控制的概念192
    12.2版本控制系统Subversion193
    12.2.1在Linux系统下使用Subversion服务端193
    12.2.2在Windows系统下使用TortoiseSVN客户端195
    12.3开发文档管理——常见的开发文档199
    12.3.1可行性研究报告200
    12.3.2项目开发计划200
    12.3.3软件需求说明书200
    12.3.4概要设计200
    12.3.5详细设计200
    12.3.6用户手册201
    12.3.7其他文档201
    12.4使用trac管理软件开发文档201
    12.4.1安装trac201
    12.4.2配置trac基本设置202
    12.4.3配置trac全局脚本204
    12.4.4设置trac的Web界面205
    12.5Bug跟踪系统208
    12.5.1Bug管理的概念和作用208
    12.5.2使用Bugzilla跟踪Bug208
    12.6小结211

    第3篇Liux系统篇
    第13章ARM体系结构及开发实例214
    13.1ARM体系结构介绍214
    13.1.1ARM体系结构214
    13.1.2ARM指令集介绍215
    13.2编程模型216
    13.2.1数据类型216
    13.2.2处理器模式216
    13.2.3寄存器217
    13.2.4通用寄存器217
    13.2.5程序状态寄存器219
    13.2.6异常处理219
    13.2.7内存和内存I/O映射220
    13.3内存管理单元221
    13.3.1内存管理介绍221
    13.3.2内存访问顺序222
    13.3.3地址翻译过程222
    13.3.4访问权限223
    13.4常见接口和控制器223
    13.4.1GPIO接口223
    13.4.2中断控制器224
    13.4.3RTC控制器224
    13.4.4看门狗定时器225
    13.4.5试验:使用GPIO点亮LED226
    13.5小结227

    第14章深入Bootloader228
    14.1初识Bootloader228
    14.1.1PC(个人电脑)上的Bootloader228
    14.1.2什么是嵌入式系统的Bootloader229
    14.1.3嵌入式系统常见的Bootloader229
    14.2U-Boot分析230
    14.2.1获取U-Boot230
    14.2.2U-Boot工程结构分析230
    14.2.3U-Boot总体工作流程232
    14.3U-Boot启动流程分析233
    14.3.1_start标号233
    14.3.2reset标号235
    14.3.3cpu_init_crit标号237
    14.3.4lowlevel_init标号238
    14.3.5relocate标号239
    14.3.6start_armboot()函数240
    14.3.7main_loop()函数244
    14.4移植U-Boot到开发板248
    14.4.1U-Boot移植的一般步骤248
    14.4.2移植U-Boot到目标开发板249
    14.4.3移植U-Boot的常见问题250
    14.5小结251

    第15章解析Linux内核252
    15.1基本知识252
    15.1.1什么是Linux内核252
    15.1.2Linux内核版本253
    15.1.3如何获取Linux内核代码253
    15.1.4编译内核253
    15.2Linux内核的子系统260
    15.2.1系统调用接口260
    15.2.2进程管理子系统261
    15.2.3内存管理子系统262
    15.2.4虚拟文件系统263
    15.2.5网络堆栈264
    15.2.6设备驱动265
    15.2.7依赖体系结构的代码266
    15.3Linux内核代码的工程结构266
    15.3.1源代码目录布局266
    15.3.2几个重要的Linux内核文件267
    15.4内核编译系统268
    15.4.1内核编译系统基本架构269
    15.4.2内核顶层Makefile分析269
    15.4.3内核编译文件分析274
    15.4.4目标文件清除机制278
    15.4.5编译辅助程序279
    15.4.6KBuild变量281
    15.5小结282

    第16章嵌入式Linux启动流程283
    16.1Linux内核初始化流程283
    16.2PC的初始化流程284
    16.2.1PCBIOS功能和作用284
    16.2.2硬盘的数据结构..285
    16.2.3完整的初始化流程286
    16.3嵌入式系统的初始化286
    16.4Linux内核初始化287
    16.4.1解压缩内核映像287
    16.4.2进入内核代码289
    16.5启动init内核进程291
    16.6根文件系统初始化292
    16.6.1根文件系统介绍292
    16.6.2挂载虚拟文件系统294
    16.7内核交出权限300
    16.8init进程300
    16.9初始化RAMDisk301
    16.9.1RAMDisk介绍301
    16.9.2如何使用RAMDisk302
    16.9.3实例:使用RAMDisk作为根文件系统302
    16.10小结303

    第17章Linux文件系统304
    17.1Linux文件管理304
    17.1.1文件和目录的概念304
    17.1.2文件的结构305
    17.1.3文件的类型305
    17.1.4文件系统的目录结构307
    17.1.5文件和目录的存取权限308
    17.1.6文件系统管理310
    17.2Linux文件系统原理311
    17.2.1非日志文件系统311
    17.2.2日志文件系统311
    17.3常见的Linux文件系统312
    17.3.1ext2文件系统312
    17.3.2ext3文件系统315
    17.3.3ReiserFS文件系统315
    17.3.4JFFS文件系统316
    17.3.5cramfs文件系统318
    17.4其他文件系统319
    17.4.1网络文件系统319
    17.4.2/proc影子文件系统320
    17.5小结323

    第18章建立交叉编译工具链324
    18.1什么是交叉编译324
    18.2需要哪些东西325
    18.3手工创建工具链325
    18.3.1准备工作——获取源代码326
    18.3.2开始了——建立工作环境326
    18.3.3建立Linux内核头文件327
    18.3.4编译安装binutils330
    18.3.5编译安装gcc的C编译器331
    18.3.6编译安装glibc库332
    18.3.7编译安装gcc的C、C++编译器333
    18.3.8最后的工作334
    18.4使用脚本创建工具链334
    18.5更简便的方法——获取已编译好的交叉编译环境336
    18.6小结336

    第19章强大的命令系统BusyBox337
    19.1BusyBox简介337
    19.1.1简单易懂的BusyBox337
    19.1.2BusyBox工作原理338
    19.1.3安装BusyBox339
    19.2交叉编译BusyBox341
    19.3使用BusyBox343
    19.3.1BusyBox初始化344
    19.3.2目标板BusyBox安装346
    19.4小结348

    第20章Linux内核移植349
    20.1Linux内核移植要点349
    20.2平台相关代码结构350
    20.3建立目标平台工程框架351
    20.3.1加入编译菜单项352
    20.3.2设置宏与代码文件的对应关系352
    20.3.3测试工程框架353
    20.4建立目标平台代码框架354
    20.4.1ARM处理器相关结构354
    20.4.2建立machine_desc结构356
    20.4.3加入处理函数356
    20.4.4加入定时器结构357
    20.4.5测试代码结构357
    20.5构建目标板代码357
    20.5.1处理器初始化358
    20.5.2端口映射360
    20.5.3中断处理361
    20.5.4定时器处理361
    20.5.5编译最终代码361
    20.6小结362

    第21章内核和应用程序调试技术363
    21.1使用GDB调试应用程序概述363
    21.2基本的调试技术363
    21.2.1列出源代码366
    21.2.2断点管理368
    21.2.3执行程序370
    21.2.4显示程序变量370
    21.2.5信号管理371
    21.2.6调试实例371
    21.3多进程调试372
    21.4调试意外终止的程序374
    21.5内核调试技术376
    21.5.1printk打印调试信息376
    21.5.2使用/proc虚拟文件系统377
    21.5.3使用KDB调试工具379
    21.5.4KDB调试指令382
    21.6小结384

    第4篇Linux嵌入式驱动开发篇
    第22章Linux设备驱动386
    22.1设备驱动介绍386
    22.2Linux内核模块386
    22.2.1内核模块简介387
    22.2.2内核模块的结构387
    22.2.3内核模块的加载和卸载388
    22.2.4编写一个基本的内核模块389
    22.2.5编译内核模块390
    22.2.6为内核模块添加参数391
    22.3Linux设备驱动392
    22.3.1PCI局部总线介绍392
    22.3.2Linux设备驱动基本概念393
    22.3.3字符设备394
    22.3.4块设备396
    22.3.5网络设备396
    22.4字符设备驱动开发实例396
    22.4.1开发一个基本的字符设备驱动397
    22.4.2测试字符设备驱动399
    22.5小结400

    第23章网络设备驱动程序401
    23.1网络基础知识401
    23.1.1ISO/OSI网络参考模型401
    23.1.2TCP/IP协议402
    23.2以太网基础404
    23.2.1工作原理405
    23.2.2常见以太网标准405
    23.2.3拓扑结构406
    23.2.4工作模式406
    23.3网卡工作原理407
    23.4内核网络分层结构408
    23.4.1内核网络结构408
    23.4.2与网络有关的数据结构409
    23.4.3内核网络部分的全局变量410
    23.5内核网络设备驱动框架411
    23.5.1net_device结构411
    23.5.2数据包接收流程413
    23.5.3数据包发送流程415
    23.6实例:DM9000网卡驱动分析416
    23.6.1DM9000芯片介绍416
    23.6.2网卡驱动程序框架416
    23.6.3DM9000网卡驱动主要数据结构417
    23.6.4加载驱动程序418
    23.6.5停止和启动网卡423
    23.6.6发送数据包425
    23.6.7接收数据包427
    23.6.8中断和定时器处理429
    23.7小结431

    第24章Flash设备驱动432
    24.1LinuxFlash驱动结构432
    24.1.1什么是MTD432
    24.1.2MTD系统结构433
    24.2Flash设备基础434
    24.2.1存储原理434
    24.2.2性能比较435
    24.3内核MTD层436
    24.3.1mtd_info结构436
    24.3.2mtd_part结构439
    24.3.3mtd_partition结构440
    24.3.4map_info结构440
    24.3.5nand_chip结构442
    24.4Flash设备框架443
    24.4.1NORFlash设备驱动框架443
    24.4.2NANDFlash设备驱动框架444
    24.5Flash设备驱动实例——NORFlash设备驱动剖析445
    24.5.1数据结构446
    24.5.2驱动初始化446
    24.5.3驱动卸载447
    24.6Flash设备驱动实例——NANDFlash设备驱动分析448
    24.6.1S3C2440NAND控制器介绍448
    24.6.2数据结构450
    24.6.3驱动初始化450
    24.6.4驱动卸载454
    24.6.5初始化NAND控制器455
    24.6.6设置芯片操作456
    24.6.7电源管理458
    24.7小结459

    第25章USB驱动开发460
    25.1USB体系介绍460
    25.1.1USB设计目标460
    25.1.2USB体系概述461
    25.1.3USB体系工作流程462
    25.2USB驱动程序框架462
    25.2.1Linux内核USB驱动框架462
    25.2.2主机驱动结构465
    25.2.3设备驱动结构468
    25.2.4USB驱动程序框架470
    25.3USB驱动实例剖析473
    25.3.1USB串口驱动473
    25.3.2USB键盘驱动475
    25.4小结478
  • 内容简介:
      嵌入式系统是目前最流行的计算机应用技术之一。《ARM嵌入式Linux系统开发详解》由浅入深地讲解基于ARM体系结构的嵌入式Linux系统开发,内容包括嵌入式系统的基本概念、应用领域等基础知识;ARM处理器的体系结构和功能特点;Linux系统内核结构和移植方法、Bootloader功能和移植;Linux应用程序开发,包括如何操作文件、管理内存、访问串口、多线程和多进程技术,并且剖析了应用程序的结构和工作流程;Linux系统设备驱动程序开发,包括如何编写内核模块、驱动程序分类和功能特点,并且给出了网络设备驱动、Flash设备驱动和USB设备驱动的实例分析。
      《ARM嵌入式Linux系统开发详解》附带1张DVD光盘,内容为专门为《ARM嵌入式Linux系统开发详解》录制的9小时视频、《ARM嵌入式Linux系统开发详解》涉及的源代码、Ubuntu安装光盘的镜像文件和另外赠送的35小时Linux专题学习视频。
      《ARM嵌入式Linux系统开发详解》适合广大从事嵌入式Linux系统开发人员、对嵌入式Linux系统开发有兴趣的计算机爱好者,以及大中专院校学生阅读。
  • 作者简介:
      弓雷在电信行业从事嵌入式系统软件开发5年。致力于计算机操作系统内核及底层技术的研究。技术涉猎广泛,擅长计算机通信技术。熟悉IntelIXA架构网络处理器、ARM体系结构、MIPS体系结构、TCP/IP网络协议栈。曾经移植过Linux2.6内核到嵌入式设备。曾经参与研发某部队火控武器通信系统、无人驾驶汽车项目通信系统及10GE/POS骨干网流量管理系统。目前担任嵌入式软件研发工程师和微码软件研发工程师,从事某公司骨干网P2P流量管理设备的研发。
  • 目录:
    第1篇Linux嵌入式开发基础篇.
    第1章嵌入式系统入门2
    1.1什么是嵌入式系统2
    1.2嵌入式系统应用领域2
    1.2.1家用电器2
    1.2.2交通工具3
    1.2.3公共电子设施3
    1.3嵌入式系统发展4
    1.3.1嵌入式微控制器4
    1.3.2嵌入式微处理器5
    1.3.3未来嵌入式系统发展的方向6
    1.4典型的嵌入式系统组成6
    1.5小结7

    第2章嵌入式软硬件系统8
    2.1电路基本知识8
    2.1.1什么是模拟电路8
    2.1.2什么是数字电路8
    2.1.3数制转换9
    2.2计算机组成原理10
    2.2.1计算机体系的发展10
    2.2.2中央处理器10
    2.2.3存储系统11
    2.2.4总线系统12
    2.2.5输入输出系统12
    2.3软件基础知识12
    2.3.1什么是软件13
    2.3.2软件开发流程13
    2.3.3常见的软件开发模型14
    2.3.4计算机编程语言14
    2.3.5数据结构15
    2.4操作系统知识15
    2.4.1什么是操作系统16
    2.4.2操作系统的发展历史16
    2.4.3操作系统由什么组成16
    2.4.4几种操作系统的设计思路17
    2.4.5操作系统分类17
    2.5小结18

    第3章ARM处理器19
    3.1微处理器和微控制器19
    3.2ARM处理器介绍19
    3.2.1ARM微处理器的应用领域20
    3.2.2ARM的功能特点20
    3.3ARM指令集21
    3.3.1算术运算指令21
    3.3.2逻辑运算指令22
    3.3.3分支指令23
    3.3.4数据传送指令23
    3.4ARM的结构24
    3.4.1ARM体系结构的命名方法24
    3.4.2处理器系列划分25
    3.4.3处理器工作模式25
    3.4.4存储系统26
    3.4.5寻址方式27
    3.5ARM的功能选型29
    3.5.1ARM的选型原则29
    3.5.2几种常见的ARM核处理器选型参考32
    3.6小结32

    第4章嵌入式Linux33
    4.1常见的嵌入式操作系统33
    4.1.1VxWorks33
    4.1.2WindowsCE34
    4.1.3PalmOS34
    4.1.4Symbian34
    4.2嵌入式Linux操作系统34
    4.2.1什么是Linux35
    4.2.2Linux与UNIX的不同——GPL版权协议介绍35
    4.2.3Linux发行版36
    4.2.4常见的嵌入式Linux系统37
    4.3小结37

    第5章建立软件开发环境38
    5.1独立的Linux系统38
    5.1.1安装UbuntuLinux38
    5.1.2关键一步——系统的网络设置46
    5.1.3其他必要的设置46
    5.1.4怎样安装卸载软件48
    5.1.5怎样配置系统服务48
    5.1.6安装主要的开发工具48
    5.1.7安装其他的开发工具和文档49
    5.2运行在Windows上的Linux系统50
    5.2.1什么是Cygwin50
    5.2.2如何安装Cygwin50
    5.2.3安装开发环境54
    5.3Linux常用工具54
    5.3.1Linuxshell和常用命令55
    5.3.2文本编辑工具vi56
    5.3.3搜索工具find和grep57
    5.3.4FTP工具61
    5.3.5串口工具minicom63
    5.4Windows常用工具65
    5.4.1代码编辑管理工具SourceInsight65
    5.4.2串口工具XShell71
    5.5ARM集成开发环境ADS72
    5.5.1ADS集成开发环境介绍73
    5.5.2配置ADS调试环境73
    5.5.3建立自己的工程75
    5.6小结78

    第6章第一个Linux应用程序79
    6.1向世界问好——Hello,World!79
    6.1.1用vi编辑源代码文件79
    6.1.2用gcc编译程序80
    6.1.3执行程序80
    6.2程序背后做了什么80
    6.2.1程序执行的过程81
    6.2.2窥视程序执行中的秘密82
    6.2.3动态库的作用83
    6.3程序如何来的——编译的全部过程84
    6.3.1编译源代码84
    6.3.2连接目标文件到指定的库85
    6.4更简单的办法——用Makefile管理工程86
    6.4.1什么是Makefile87
    6.4.2它是如何工作的87
    6.4.3如何使用Makefile87
    6.4.4好的源代码管理习惯88
    6.5小结88

    第2篇Linux嵌入式开发应用篇
    第7章Linux应用程序编程基础90
    7.1内存管理和使用90
    7.1.1堆和栈的区别90
    7.1.2内存管理函数malloc()和free()93
    7.1.3实用的内存分配函数calloc()和realloc()93
    7.1.4内存管理编程实例94
    7.2ANSIC文件管理97
    7.2.1文件指针和流97
    7.2.2存储方式98
    7.2.3标准输入、标准输出和标准错误98
    7.2.4缓冲98
    7.2.5打开关闭文件99
    7.2.6读写文件100
    7.2.7文件流定位103
    7.2.8ANSIC文件编程实例103
    7.3POSIX文件I/O编程104
    7.3.1底层的文件I/O操作104
    7.3.2文件描述符104
    7.3.3创建/打开/关闭文件105
    7.3.4读写文件内容108
    7.3.5文件内容定位109
    7.3.6修改已打开文件的属性110
    7.3.7POSIX文件编程实例110
    7.4小结112

    第8章开发多进程/线程程序113
    8.1多进程开发113
    8.1.1什么是进程113
    8.1.2进程环境和属性114
    8.1.3创建进程115
    8.1.4等待进程结束117
    8.1.5退出进程118
    8.1.6常用进程间通信的方法120
    8.1.7进程编程实例124
    8.2多线程开发125
    8.2.1线程的概念126
    8.2.2进程和线程对比126
    8.2.3创建线程127
    8.2.4取消线程128
    8.2.5等待线程129
    8.2.6使用pthread库线程操作实例129
    8.3小结131

    第9章网络通信应用132
    9.1网络通信基础132
    9.1.1TCP/IP协议族132
    9.1.2IP协议133
    9.1.3TCP协议135
    9.1.4UDP协议135
    9.1.5学习分析协议的方法135
    9.2Socket通信基本概念137
    9.2.1创建socket对象138
    9.2.2面向连接的Socket通信实现138
    9.2.3面向连接的Echo服务编程实例140
    9.2.4无连接的Socket通信实现144
    9.2.5无连接的时间服务编程实例145
    9.3Socket高级应用148
    9.3.1Socket超时处理148
    9.3.2使用Select机制处理多连接149
    9.3.3使用Poll机制处理多连接151
    9.3.4多线程环境Socket编程152
    9.4小结152

    第10章串行口通信编程154
    10.1串口介绍154
    10.1.1什么是串口154
    10.1.2串口工作原理154
    10.1.3串口流量控制155
    10.2开发串口应用程序156
    10.2.1操作串口需要用到的头文件156
    10.2.2串口操作方法157
    10.2.3串口属性设置157
    10.2.4与Windows串口终端通信161
    10.3串口应用实例——手机短信发送163
    10.3.1PC与手机连接发送短信的物理结构164
    10.3.2AT指令介绍164
    10.3.3GSMAT指令集165
    10.3.4PDU编码方式165
    10.3.5建立与手机的连接167
    10.3.6使用AT指令发送短信167
    10.4小结171

    第11章嵌入式GUI程序开发172
    11.1LinuxGUI介绍172
    11.1.1LinuxGUI的发展172
    11.1.2常见的嵌入式GUI173
    11.2开发图形界面程序174
    11.2.1安装Qt开发环境174
    11.2.2建立简单的Qt程序176
    11.2.3Qt库编程结构178
    11.3深入Qt编程179
    11.3.1使用Widget179
    11.3.2对话框程序设计181
    11.3.3信号与槽系统185
    11.4移植Qtopia到ARM开发板186
    11.4.1需要的资源186
    11.4.2准备工作187
    11.4.3编译主机Qt工具187
    11.4.4交叉编译qtopia189
    11.5小结190

    第12章软件项目管理191
    12.1源代码管理191
    12.1.1什么是软件的版本191
    12.1.2版本控制的概念192
    12.2版本控制系统Subversion193
    12.2.1在Linux系统下使用Subversion服务端193
    12.2.2在Windows系统下使用TortoiseSVN客户端195
    12.3开发文档管理——常见的开发文档199
    12.3.1可行性研究报告200
    12.3.2项目开发计划200
    12.3.3软件需求说明书200
    12.3.4概要设计200
    12.3.5详细设计200
    12.3.6用户手册201
    12.3.7其他文档201
    12.4使用trac管理软件开发文档201
    12.4.1安装trac201
    12.4.2配置trac基本设置202
    12.4.3配置trac全局脚本204
    12.4.4设置trac的Web界面205
    12.5Bug跟踪系统208
    12.5.1Bug管理的概念和作用208
    12.5.2使用Bugzilla跟踪Bug208
    12.6小结211

    第3篇Liux系统篇
    第13章ARM体系结构及开发实例214
    13.1ARM体系结构介绍214
    13.1.1ARM体系结构214
    13.1.2ARM指令集介绍215
    13.2编程模型216
    13.2.1数据类型216
    13.2.2处理器模式216
    13.2.3寄存器217
    13.2.4通用寄存器217
    13.2.5程序状态寄存器219
    13.2.6异常处理219
    13.2.7内存和内存I/O映射220
    13.3内存管理单元221
    13.3.1内存管理介绍221
    13.3.2内存访问顺序222
    13.3.3地址翻译过程222
    13.3.4访问权限223
    13.4常见接口和控制器223
    13.4.1GPIO接口223
    13.4.2中断控制器224
    13.4.3RTC控制器224
    13.4.4看门狗定时器225
    13.4.5试验:使用GPIO点亮LED226
    13.5小结227

    第14章深入Bootloader228
    14.1初识Bootloader228
    14.1.1PC(个人电脑)上的Bootloader228
    14.1.2什么是嵌入式系统的Bootloader229
    14.1.3嵌入式系统常见的Bootloader229
    14.2U-Boot分析230
    14.2.1获取U-Boot230
    14.2.2U-Boot工程结构分析230
    14.2.3U-Boot总体工作流程232
    14.3U-Boot启动流程分析233
    14.3.1_start标号233
    14.3.2reset标号235
    14.3.3cpu_init_crit标号237
    14.3.4lowlevel_init标号238
    14.3.5relocate标号239
    14.3.6start_armboot()函数240
    14.3.7main_loop()函数244
    14.4移植U-Boot到开发板248
    14.4.1U-Boot移植的一般步骤248
    14.4.2移植U-Boot到目标开发板249
    14.4.3移植U-Boot的常见问题250
    14.5小结251

    第15章解析Linux内核252
    15.1基本知识252
    15.1.1什么是Linux内核252
    15.1.2Linux内核版本253
    15.1.3如何获取Linux内核代码253
    15.1.4编译内核253
    15.2Linux内核的子系统260
    15.2.1系统调用接口260
    15.2.2进程管理子系统261
    15.2.3内存管理子系统262
    15.2.4虚拟文件系统263
    15.2.5网络堆栈264
    15.2.6设备驱动265
    15.2.7依赖体系结构的代码266
    15.3Linux内核代码的工程结构266
    15.3.1源代码目录布局266
    15.3.2几个重要的Linux内核文件267
    15.4内核编译系统268
    15.4.1内核编译系统基本架构269
    15.4.2内核顶层Makefile分析269
    15.4.3内核编译文件分析274
    15.4.4目标文件清除机制278
    15.4.5编译辅助程序279
    15.4.6KBuild变量281
    15.5小结282

    第16章嵌入式Linux启动流程283
    16.1Linux内核初始化流程283
    16.2PC的初始化流程284
    16.2.1PCBIOS功能和作用284
    16.2.2硬盘的数据结构..285
    16.2.3完整的初始化流程286
    16.3嵌入式系统的初始化286
    16.4Linux内核初始化287
    16.4.1解压缩内核映像287
    16.4.2进入内核代码289
    16.5启动init内核进程291
    16.6根文件系统初始化292
    16.6.1根文件系统介绍292
    16.6.2挂载虚拟文件系统294
    16.7内核交出权限300
    16.8init进程300
    16.9初始化RAMDisk301
    16.9.1RAMDisk介绍301
    16.9.2如何使用RAMDisk302
    16.9.3实例:使用RAMDisk作为根文件系统302
    16.10小结303

    第17章Linux文件系统304
    17.1Linux文件管理304
    17.1.1文件和目录的概念304
    17.1.2文件的结构305
    17.1.3文件的类型305
    17.1.4文件系统的目录结构307
    17.1.5文件和目录的存取权限308
    17.1.6文件系统管理310
    17.2Linux文件系统原理311
    17.2.1非日志文件系统311
    17.2.2日志文件系统311
    17.3常见的Linux文件系统312
    17.3.1ext2文件系统312
    17.3.2ext3文件系统315
    17.3.3ReiserFS文件系统315
    17.3.4JFFS文件系统316
    17.3.5cramfs文件系统318
    17.4其他文件系统319
    17.4.1网络文件系统319
    17.4.2/proc影子文件系统320
    17.5小结323

    第18章建立交叉编译工具链324
    18.1什么是交叉编译324
    18.2需要哪些东西325
    18.3手工创建工具链325
    18.3.1准备工作——获取源代码326
    18.3.2开始了——建立工作环境326
    18.3.3建立Linux内核头文件327
    18.3.4编译安装binutils330
    18.3.5编译安装gcc的C编译器331
    18.3.6编译安装glibc库332
    18.3.7编译安装gcc的C、C++编译器333
    18.3.8最后的工作334
    18.4使用脚本创建工具链334
    18.5更简便的方法——获取已编译好的交叉编译环境336
    18.6小结336

    第19章强大的命令系统BusyBox337
    19.1BusyBox简介337
    19.1.1简单易懂的BusyBox337
    19.1.2BusyBox工作原理338
    19.1.3安装BusyBox339
    19.2交叉编译BusyBox341
    19.3使用BusyBox343
    19.3.1BusyBox初始化344
    19.3.2目标板BusyBox安装346
    19.4小结348

    第20章Linux内核移植349
    20.1Linux内核移植要点349
    20.2平台相关代码结构350
    20.3建立目标平台工程框架351
    20.3.1加入编译菜单项352
    20.3.2设置宏与代码文件的对应关系352
    20.3.3测试工程框架353
    20.4建立目标平台代码框架354
    20.4.1ARM处理器相关结构354
    20.4.2建立machine_desc结构356
    20.4.3加入处理函数356
    20.4.4加入定时器结构357
    20.4.5测试代码结构357
    20.5构建目标板代码357
    20.5.1处理器初始化358
    20.5.2端口映射360
    20.5.3中断处理361
    20.5.4定时器处理361
    20.5.5编译最终代码361
    20.6小结362

    第21章内核和应用程序调试技术363
    21.1使用GDB调试应用程序概述363
    21.2基本的调试技术363
    21.2.1列出源代码366
    21.2.2断点管理368
    21.2.3执行程序370
    21.2.4显示程序变量370
    21.2.5信号管理371
    21.2.6调试实例371
    21.3多进程调试372
    21.4调试意外终止的程序374
    21.5内核调试技术376
    21.5.1printk打印调试信息376
    21.5.2使用/proc虚拟文件系统377
    21.5.3使用KDB调试工具379
    21.5.4KDB调试指令382
    21.6小结384

    第4篇Linux嵌入式驱动开发篇
    第22章Linux设备驱动386
    22.1设备驱动介绍386
    22.2Linux内核模块386
    22.2.1内核模块简介387
    22.2.2内核模块的结构387
    22.2.3内核模块的加载和卸载388
    22.2.4编写一个基本的内核模块389
    22.2.5编译内核模块390
    22.2.6为内核模块添加参数391
    22.3Linux设备驱动392
    22.3.1PCI局部总线介绍392
    22.3.2Linux设备驱动基本概念393
    22.3.3字符设备394
    22.3.4块设备396
    22.3.5网络设备396
    22.4字符设备驱动开发实例396
    22.4.1开发一个基本的字符设备驱动397
    22.4.2测试字符设备驱动399
    22.5小结400

    第23章网络设备驱动程序401
    23.1网络基础知识401
    23.1.1ISO/OSI网络参考模型401
    23.1.2TCP/IP协议402
    23.2以太网基础404
    23.2.1工作原理405
    23.2.2常见以太网标准405
    23.2.3拓扑结构406
    23.2.4工作模式406
    23.3网卡工作原理407
    23.4内核网络分层结构408
    23.4.1内核网络结构408
    23.4.2与网络有关的数据结构409
    23.4.3内核网络部分的全局变量410
    23.5内核网络设备驱动框架411
    23.5.1net_device结构411
    23.5.2数据包接收流程413
    23.5.3数据包发送流程415
    23.6实例:DM9000网卡驱动分析416
    23.6.1DM9000芯片介绍416
    23.6.2网卡驱动程序框架416
    23.6.3DM9000网卡驱动主要数据结构417
    23.6.4加载驱动程序418
    23.6.5停止和启动网卡423
    23.6.6发送数据包425
    23.6.7接收数据包427
    23.6.8中断和定时器处理429
    23.7小结431

    第24章Flash设备驱动432
    24.1LinuxFlash驱动结构432
    24.1.1什么是MTD432
    24.1.2MTD系统结构433
    24.2Flash设备基础434
    24.2.1存储原理434
    24.2.2性能比较435
    24.3内核MTD层436
    24.3.1mtd_info结构436
    24.3.2mtd_part结构439
    24.3.3mtd_partition结构440
    24.3.4map_info结构440
    24.3.5nand_chip结构442
    24.4Flash设备框架443
    24.4.1NORFlash设备驱动框架443
    24.4.2NANDFlash设备驱动框架444
    24.5Flash设备驱动实例——NORFlash设备驱动剖析445
    24.5.1数据结构446
    24.5.2驱动初始化446
    24.5.3驱动卸载447
    24.6Flash设备驱动实例——NANDFlash设备驱动分析448
    24.6.1S3C2440NAND控制器介绍448
    24.6.2数据结构450
    24.6.3驱动初始化450
    24.6.4驱动卸载454
    24.6.5初始化NAND控制器455
    24.6.6设置芯片操作456
    24.6.7电源管理458
    24.7小结459

    第25章USB驱动开发460
    25.1USB体系介绍460
    25.1.1USB设计目标460
    25.1.2USB体系概述461
    25.1.3USB体系工作流程462
    25.2USB驱动程序框架462
    25.2.1Linux内核USB驱动框架462
    25.2.2主机驱动结构465
    25.2.3设备驱动结构468
    25.2.4USB驱动程序框架470
    25.3USB驱动实例剖析473
    25.3.1USB串口驱动473
    25.3.2USB键盘驱动475
    25.4小结478
查看详情
系列丛书 / 更多
ARM嵌入式Linux系统开发详解
Linux典藏大系 Linux从入门到精通+Linux系统管理与网络管理+Linux服务器架设指
刘忆智、林天峰、谭志彬、余柏山 著
ARM嵌入式Linux系统开发详解
ARM嵌入式Linux系统开发详解(第2版)
弓雷 著
ARM嵌入式Linux系统开发详解
Linux系统管理与网络管理
余柏山 著
ARM嵌入式Linux系统开发详解
Linux网络编程:第2版
宋敬彬 著
ARM嵌入式Linux系统开发详解
Linux Shell命令行及脚本编程实例详解
刘艳涛 著
ARM嵌入式Linux系统开发详解
Shell从入门到精通
张春晓 著
ARM嵌入式Linux系统开发详解
Linux服务器架设指南
林天峰、谭志彬 著
ARM嵌入式Linux系统开发详解
Linux环境C程序设计
徐诚 编
ARM嵌入式Linux系统开发详解
Linux驱动开发入门与实战(第2版)
郑强 著
ARM嵌入式Linux系统开发详解
Linux典藏大系:Linux服务范例速查大全
刘丽霞、邱晓华 著
ARM嵌入式Linux系统开发详解
Linux从入门到精通
刘忆智 著
ARM嵌入式Linux系统开发详解
Linux指令范例速查手册
黄照鹤 著
相关图书 / 更多
ARM嵌入式Linux系统开发详解
AR界面设计(全彩)
林影落
ARM嵌入式Linux系统开发详解
AR Foundation增强现实开发实战(ARCore版)
汪祥春
ARM嵌入式Linux系统开发详解
AR Foundation增强现实开发实战(ARKit版)
汪祥春
ARM嵌入式Linux系统开发详解
ARM微控制器与嵌入式系统
景妮琴
ARM嵌入式Linux系统开发详解
AR改变世界
[美]戴维·罗斯 著;李莎 译;湛庐文化 出品
ARM嵌入式Linux系统开发详解
AR对话青春期——给男孩女孩的健康手册
池慧
ARM嵌入式Linux系统开发详解
AR内衣产品运营--内衣系列艺术设计
柯宇丹 著;于芳;杨雪梅
ARM嵌入式Linux系统开发详解
ARM Cortex-M3嵌入式开发与实践——基于STM32F103(第2版·微课视频版)
张勇
ARM嵌入式Linux系统开发详解
AR/VR应用设计与开发
王楠 著
ARM嵌入式Linux系统开发详解
ARM Cortex-M4 嵌入式系统外设接口开发——基于STM32F4系列微控制器(微课视频版)
奚海蛟
ARM嵌入式Linux系统开发详解
AR奇趣玩百科:体育运动锻炼
张栢赫 著;阳光博客 出品;肖叶
ARM嵌入式Linux系统开发详解
ARM与DSP硬件特色和编程指南
王潞钢 何超 姜涛 著
您可能感兴趣 / 更多