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

ARM嵌入式Linux系统开发详解(第2版) pdf epub mobi txt 电子书 下载 2025

弓雷 等 著
图书标签:
  • ARM
  • 嵌入式Linux
  • 系统开发
  • Linux
  • 嵌入式系统
  • ARM架构
  • 开发详解
  • 第2版
  • 技术
  • 计算机
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 清华大学出版社
ISBN:9787302340522
版次:2
商品编码:11397777
品牌:清华大学
包装:平装
丛书名: Linux典藏大系
开本:16开
出版时间:2014-02-01
用纸:胶版纸
页数:466
字数:765000
正文语种:中文

具体描述

编辑推荐

  

  嵌入式Linux开发精品图书全面升级,ChinaUnix社区鼎力推荐,赠送40段共9小时语音教学视频,送教学PPT

  由浅入深,全面解析基于ARM体系结构的嵌入式Linux系统开发,结合多个实例和5个典型案例,深入剖析嵌入式开发的原理及过程

  版本新颖:书中涉及的软件及开发环境都是当前为流行的版本

  由浅入深:从嵌入式系统的软硬件开始讲解,逐步深入到实际开发

  内容全面:涵盖嵌入式Linux系统开发的大部分知识点和典型应用

  注重原理:对每个知识点从概念和基本原理进行了详细而透彻的分析

  重点突出:对Bootloader和Linux内核的功能和移植进行了详细介绍

  实践性强:结合多个典型实例和5个应用案例,提高读者的开发水平

内容简介

   “Linux典藏大系2010年陆续出版以来,因其内容丰富、讲解细腻、通俗易懂和实用性强等特色而深受广大读者的喜爱,长期位居同类图书销售排行榜的前列,累计销量近10万册。丛书中部分图书荣获51CTO读书频道受读者喜爱的原创IT技术图书奖,还有多种图书的中文繁体字版权输出到了中国台湾地区出版发行。丛书中的多个品种被国内几十所培训机构和大中专院校选为教材。丛书的出版还得到了国内Linux领域知名的技术社区ChinaUnix的大力支持。读者在ChinaUnix社区的论坛上与社区中的Linux爱好者进行了广泛的交流,取得了良好的学习效果。20142“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.2 ARM处理器介绍
3.2.1 ARM微处理器的应用领域
3.2.2 ARM的功能特点
3.3 ARM指令集
3.3.1 算术运算指令
3.3.2 逻辑运算指令
3.3.3 分支指令
3.3.4 数据传送指令
3.4 ARM的结构
3.4.1 ARM体系结构的命名方法
3.4.2 处理器系列划分
3.4.3 处理器工作模式
3.4.4 存储系统
3.4.5 寻址方式
3.5 ARM的功能选型
3.5.1 ARM的选型原则
3.5.2 几种常见的ARM核处理器选型参考
3.6 小结
第4章 嵌入式Linux
4.1 常见的嵌入式操作系统
4.1.1 VxWorks
4.1.2 Windows CE
4.1.3 PalmOS
4.1.4 Symbian
4.2 嵌入式Linux操作系统
4.2.1 什么是Linux
4.2.2 Linux与UNIX的不同——GPL版权协议介绍
4.2.3 Linux发行版
4.2.4 常见的嵌入式Linux系统
4.3 小结
第5章 建立软件开发环境
5.1 独立的Linux系统
5.1.1 安装Ubuntu Linux
5.1.2 怎样安装、卸载软件
5.1.3 怎样配置系统服务
5.1.4 安装主要的开发工具
5.1.5 安装其他的开发工具和文档
5.2 运行在Windows上的Linux系统
5.2.1 什么是Cygwin
5.2.2 如何安装Cygwin
5.2.3 安装开发环境
5.3 Linux常用工具
5.3.1 Linux shell和常用命令
5.3.2 文本编辑工具vi
5.3.3 搜索工具find和grep
5.3.4 FTP工具
5.3.5 串口工具minicom
5.4 Windows常用工具
5.4.1 代码编辑管理工具Source Insight
5.4.2 串口工具XShell
5.5 ARM集成开发环境ADS
5.5.1 ADS集成开发环境介绍
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 什么是Makefile
6.4.2 它是如何工作的
6.4.3 如何使用Makefile
6.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.2 ANSI C文件管理
7.2.1 文件指针和流
7.2.2 存储方式
7.2.3 标准输入、标准输出和标准错误
7.2.4 缓冲
7.2.5 打开、关闭文件
7.2.6 读写文件
7.2.7 文件流定位
7.2.8 ANSI C文件编程实例
7.3 POSIX文件I/O编程
7.3.1 底层的文件I/O操作
7.3.2 文件描述符
7.3.3 创建/打开/关闭文件
7.3.4 读写文件内容
7.3.5 文件内容定位
7.3.6 修改已打开文件的属性
7.3.7 POSIX文件编程实例
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.1 TCP/IP协议族
9.1.2 IP协议
9.1.3 TCP协议
9.1.4 UDP协议
9.1.5 学习分析协议的方法
9.2 Socket通信基本概念
9.2.1 创建socket对象
9.2.2 面向连接的Socket通信实现
9.2.3 面向连接的echo服务编程实例
9.2.4 无连接的Socket通信实现
9.2.5 无连接的时间服务编程实例
9.3 Socket高级应用
9.3.1 Socket超时处理
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.1 PC与手机连接发送短信的物理结构
10.3.2 AT指令介绍
10.3.3 GSM AT指令集
10.3.4 PDU编码方式
10.3.5 建立与手机的连接
10.3.6 使用AT指令发送短信
10.4 小结
第11章 嵌入式GUI程序开发
11.1 Linux GUI介绍
11.1.1 Linux GUI的发展
11.1.2 常见的嵌入式GUI
11.2 开发图形界面程序
11.2.1 安装Qt开发环境
11.2.2 建立简单的Qt程序
11.2.3 Qt库编程结构
11.3 深入Qt编程
11.3.1 使用Widget
11.3.2 对话框程序设计
11.3.3 信号与槽系统
11.4 移植Qtopia到ARM开发板
11.4.1 需要的资源
11.4.2 准备工作
11.4.3 编译主机Qt工具
11.4.4 交叉编译qtopia
11.5 小结
第12章 软件项目管理
12.1 源代码管理
12.1.1 什么是软件的版本
12.1.2 版本控制的概念
12.2 版本控制系统Subversion
12.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 安装trac
12.4.2 配置trac基本设置
12.4.3 配置trac全局脚本
12.4.4 设置trac的Web界面
12.5 Bug跟踪系统
12.5.1 Bug管理的概念和作用
12.5.2 使用Bugzilla跟踪Bug
12.6 小结

第3篇 Linux系统篇
第13章 ARM体系结构及开发实例
13.1 ARM体系结构介绍
13.1.1 ARM体系结构
13.1.2 ARM指令集介绍
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.1 GPIO接口
13.4.2 中断控制器
13.4.3 RTC控制器
13.4.4 看门狗定时器
13.4.5 试验:使用GPIO点亮LED
13.5 小结
第14章 深入Bootloader
14.1 初识Bootloader
14.1.1 PC(个人电脑)上的Bootloader
14.1.2 什么是嵌入式系统的Bootloader
14.1.3 嵌入式系统常见的Bootloader
14.2 U-Boot分析
14.2.1 获取U-Boot
14.2.2 U-Boot工程结构分析
14.2.3 U-Boot总体工作流程
14.3 U-Boot启动流程分析
14.3.1 _start标号
14.3.2 reset标号
14.3.3 cpu_init_crit标号
14.3.4 lowlevel_init标号
14.3.5 relocate标号
14.3.6 start_armboot()函数
14.3.7 main_loop()函数
14.4 移植U-Boot到开发板
14.4.1 U-Boot移植的一般步骤
14.4.2 移植U-Boot到目标开发板
14.4.3 移植U-Boot的常见问题
14.5 小结
第15章 解析Linux内核
15.1 基本知识
15.1.1 什么是Linux内核
15.1.2 Linux内核版本
15.1.3 如何获取Linux内核代码
15.1.4 编译内核
15.2 Linux内核的子系统
15.2.1 系统调用接口
15.2.2 进程管理子系统
15.2.3 内存管理子系统
15.2.4 虚拟文件系统
15.2.5 网络堆栈
15.2.6 设备驱动
15.2.7 依赖体系结构的代码
15.3 Linux内核代码的工程结构
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.6 KBuild变量
15.5 小结
第16章 嵌入式Linux启动流程
16.1 Linux内核初始化流程
16.2 PC的初始化流程
16.2.1 PC BIOS功能和作用
16.2.2 硬盘的数据结构
16.2.3 完整的初始化流程
16.3 嵌入式系统的初始化
16.4 Linux内核初始化
16.4.1 解压缩内核映像
16.4.2 进入内核代码
16.5 启动init内核进程
16.6 根文件系统初始化
16.6.1 根文件系统介绍
16.6.2 挂载虚拟文件系统
16.7 内核交出权限
16.8 init进程
16.9 初始化RAM Disk
16.9.1 RAM Disk介绍
16.9.2 如何使用RAM Disk
16.9.3 实例:使用RAM Disk作为根文件系统
16.10 小结
第17章 Linux文件系统
17.1 Linux文件管理
17.1.1 文件和目录的概念
17.1.2 文件的结构
17.1.3 文件的类型
17.1.4 文件系统的目录结构
17.1.5 文件和目录的存取权限
17.1.6 文件系统管理
17.2 Linux文件系统原理
17.2.1 非日志文件系统
17.2.2 日志文件系统
17.3 常见的Linux文件系统
17.3.1 ext2文件系统
17.3.2 ext3文件系统
17.3.3 ReiserFS文件系统
17.3.4 JFFS文件系统
17.3.5 cramfs文件系统
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 编译安装binutils
18.3.5 编译安装gcc的C编译器
18.3.6 编译安装glibc库
18.3.7 编译安装gcc的C、C++编译器
18.3.8 最后的工作
18.4 使用脚本创建工具链
18.5 更简便的方法——获取已编译好的交叉编译环境
18.6 小结
第19章 强大的命令系统BusyBox
19.1 BusyBox简介
19.1.1 简单易懂的BusyBox
19.1.2 BusyBox工作原理
19.1.3 安装BusyBox
19.2 交叉编译BusyBox
19.3 使用BusyBox
19.3.1 BusyBox初始化
19.3.2 目标板BusyBox安装
19.4 小结
第20章 Linux内核移植
20.1 Linux内核移植要点
20.2 平台相关代码结构
20.3 建立目标平台工程框架
20.3.1 加入编译菜单项
20.3.2 设置宏与代码文件的对应关系
20.3.3 测试工程框架
20.4 建立目标平台代码框架
20.4.1 ARM处理器相关结构
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.1 printk打印调试信息
21.5.2 使用/proc虚拟文件系统
21.5.3 使用KDB调试工具
21.5.4 KDB调试指令
21.6 小结

第4篇 Linux嵌入式驱动开发篇
第22章 Linux设备驱动
22.1 设备驱动介绍
22.2 Linux内核模块
22.2.1 内核模块简介
22.2.2 内核模块的结构
22.2.3 内核模块的加载和卸载
22.2.4 编写一个基本的内核模块
22.2.5 编译内核模块
22.2.6 为内核模块添加参数
22.3 Linux设备驱动
22.3.1 PCI局部总线介绍
22.3.2 Linux设备驱动基本概念
22.3.3 字符设备
22.3.4 块设备
22.3.5 网络设备
22.4 字符设备驱动开发实例
22.4.1 开发一个基本的字符设备驱动
24.4.2 测试字符设备驱动
22.5 小结
第23章 网络设备驱动程序
23.1 网络基础知识
23.1.1 ISO/OSI网络参考模型
23.1.2 TCP/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.1 net_device结构
23.5.2 数据包接收流程
23.5.3 数据包发送流程
23.6 实例:DM9000网卡驱动分析
23.6.1 DM9000芯片介绍
23.6.2 网卡驱动程序框架
23.6.3 DM9000网卡驱动主要数据结构
23.6.4 加载驱动程序
23.6.5 停止和启动网卡
23.6.6 发送数据包
23.6.7 接收数据包
23.6.8 中断和定时器处理
23.7 小结
第24章 Flash设备驱动
24.1 Linux Flash驱动结构
24.1.1 什么是MTD
24.1.2 MTD系统结构
24.2 Flash设备基础
24.2.1 存储原理
24.2.2 性能比较
24.3 内核MTD层
24.3.1 mtd_info结构
24.3.2 mtd_part结构
24.3.3 mtd_partition结构
24.3.4 map_info结构
24.3.5 nand_chip结构
24.4 Flash设备框架
24.4.1 NOR Flash设备驱动框架
24.4.2 NAND Flash设备驱动框架
24.5 Flash设备驱动实例——NOR Flash设备驱动剖析
24.5.1 数据结构
24.5.2 驱动初始化
24.5.3 驱动卸载
24.6 Flash设备驱动实例——NAND Flash设备驱动分析
24.6.1 S3C2440 NAND控制器介绍
24.6.2 数据结构
24.6.3 驱动初始化
24.6.4 驱动卸载
24.6.5 初始化NAND控制器
24.6.6 设置芯片操作
24.6.7 电源管理
24.7 小结
第25章 USB驱动开发
25.1 USB体系介绍
25.1.1 USB设计目标
25.1.2 USB体系概述
25.1.3 USB体系工作流程
25.2 USB驱动程序框架
25.2.1 Linux内核USB驱动框架
25.2.2 主机驱动结构
25.2.3 设备驱动结构
25.2.4 USB驱动程序框架
25.3 USB驱动实例剖析
25.3.1 USB串口驱动
25.3.2 USB键盘驱动
25.4 小结

前言/序言

  随着超大规模集成电路的发展,计算机处理器技术不断提高,计算机芯片的处理能力越来越强,体积越来越小,计算机技术应用到生活的方方面面。与人们日常生活打交道最多的就是嵌入式系统,从目前广泛使用的手机、MP3播放器到家用电器,嵌入式系统的应用无处不在。嵌入式系统的开发占整个计算机系统开发的比重也越来越高。

  嵌入式系统开发与传统的PC程序开发不同。嵌入式系统开发涉及软件和硬件的开发,是一个协同工作的统一体。目前,已经有许多的嵌入式系统硬件和操作系统软件,其中应用最广泛的是ARM嵌入式处理器和Linux系统。

  目前,市场上嵌入式开发的书籍大多是针对某个特定领域编写的,专业性和针对性较强,不适合初学者学习。基于这个原因笔者编写了本书。本书是获得了大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第2版。在第1版的基础上,本书进行了全新改版,升级了编程环境,对第1版书中的一些疏漏进行了修订,也对书中的一些实例和代码进行了重新表述,使得更加易读。相信读者可以在本书的引领下跨入嵌入式开发的大门。

  关于“Linux典藏大系”

  “Linux典藏大系”是清华大学出版社自2010年1月以来陆续推出的一个图书系列,截止2012年,已经出版了10余个品种。该系列图书涵盖了Linux技术的方方面面,可以满足各个层次和各个领域的读者学习Linux技术的需求。该系列图书自出版以来获得了广大读者的好评,已经成为了Linux图书市场上最耀眼的明星品牌之一。其销量在同类图书中也名列前茅,其中一些图书还获得了“51CTO读书频道”颁发的“最受读者喜爱的原创IT技术图书奖”。该系列图书在出版过程中也得到了国内Linux领域最知名的技术社区ChinaUnix(简称CU)的大力支持和帮助,读者在CU社区中就图书的内容与活跃在CU社区中的Linux技术爱好者进行广泛交流,取得了良好的学习效果。

  关于本书第2版

  本书第1版出版后深受读者好评,并被ChinaUnix技术社区推荐。但是随着技术的发展,本书第1版内容已经无法满足读者的学习需求。应广大读者的要求,我们结合嵌入式技术的最新发展推出了本书的第2版。相比第1版,第2版图书在内容上的变化主要体现在以下几个方面:

  (1)Linux开发环境由Ubuntu8.04升级到12.04。

  (2)更新了Cygwin、ADS、GCC等相关软件。

  (3)修订了一些专有名词及术语的不一致问题。

  (4)删除了部分已经过时的内容,如Ubuntu的网络配置等。

  (5)给完整的实例代码增加了行序号,方便读者阅读。

  (6)纠正了部分函数讲解错误,并修正了部分代码的类型转化等问题。

  (7)将一些表达不准确的地方表述得更加准确。

  本书特色

  1.循序渐进,由浅入深

  为了让初学者快速进入嵌入式系统开发领域,本书一开始对嵌入式系统的软件和硬件做了全面的介绍,让读者对嵌入式系统有一个基本的认识。同时,在书中讲解的知识点都配备了完整的实例,读者可以通过实例学习嵌入式系统开发的相关知识。

  2.技术全面,内容充实

  作者本人从事嵌入式系统开发多年,深入了解嵌入式系统开发的各个方面,在书中讲解了嵌入式Linux开发的各个要点,包括Linux内核的构成、工作流程、驱动程序开发、文件系统、程序库等知识,使读者全面了解嵌入式Linux开发的各个知识点。

  3.实例讲解,理解深刻

  嵌入式Linux开发书籍众多,很多书籍偏重理论。本书所有的实例都经过作者验证,并且有详细的操作过程和实验结果。其次,本书的操作实例有完整的实验环境描述,读者可以通过实例加深对知识点的理解。

  4.化整为零,深入剖析

  嵌入式系统开发涉及知识面广,技术复杂。本书剥茧抽丝,力求找出开发过程中关键的知识点。从关键点入手,通过简单易懂的例子剖析技术原理,帮助读者掌握复杂的技术。

  5.详解典型项目案例开发,提高实战水平

  本书详细分析了DM9000网卡驱动、NANDFlash设备驱动和USB驱动的实现。通过这三个项目案例,可以提高读者的设备驱动开发水平,从而具备独立进行驱动开发的能力。

  6.提供多媒体教学视频和源文件

  本书专门提供了9小时多媒体教学视频和实例源文件,便于读者高效、直观地学习。这些学习资料需要读者按照封面的提示自行下载。

  本书内容体系

  第1篇Linux嵌入式开发基础篇(第1~6章)

  本篇主要内容包括嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境建立和第一个Linux应用程序。通过本篇的学习,读者可以掌握Linux嵌入式开发环境的搭建和Linux嵌入式的基础知识。

  第2篇Linux嵌入式开发应用篇(第7~12章)

  本篇主要内容包括Linux应用程序编程基础、开发多进程/线程程序、网络通信应用、串行口通信编程、嵌入式GUI程序开发和软件项目管理等内容。通过本篇的学习,读者可以掌握Linux嵌入式的核心技术与应用。

  第3篇Linux系统篇(第13~21章)

  本篇主要内容包括ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux启动流程、Linux文件系统、建立交叉编译工具链、命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术。通过本篇的学习,读者可以对Linux系统从内核到文件系统再到启动流程有一个非常清楚的了解。

  第4篇Linux嵌入式驱动开发篇(第22~25章)

  本篇主要内容包括Linux设备驱动、网络设备驱动程序、Flash设备驱动,以及USB驱动开发等。通过本篇的学习,读者可以掌握Linux嵌入式开发的基本流程及思想。

  本书读者对象

  *Linux嵌入式开发初学者;

  *需要系统学习Linux嵌入式开发的人员;

  *Linux嵌入式从业人员;

  *Linux嵌入式开发爱好者;

  *大中专院校的学生;

  *社会培训班的学员。


深入浅出,精通ARM嵌入式Linux系统开发 本书旨在为广大嵌入式系统开发者提供一份全面、深入且实用的ARM嵌入式Linux系统开发指南。我们深知,随着嵌入式技术的飞速发展,ARM处理器凭借其低功耗、高性能和广泛的应用领域,已成为嵌入式开发的首选平台。而Linux作为一款开源、稳定且功能强大的操作系统,更是为嵌入式设备的智能化和网络化提供了坚实的基础。然而,将两者有机结合,实现高效、可靠的嵌入式Linux系统开发,绝非易事,往往需要开发者具备跨越多层次的技术知识和丰富的实践经验。 本书正是为了弥合这一技术鸿沟而生。我们并非简单地堆砌零散的技术概念,而是力求构建一个系统化的学习框架,引导读者从入门到精通,逐步掌握ARM嵌入式Linux系统的开发脉络。本书的内容经过精心设计和打磨,涵盖了从硬件选型、软件环境搭建,到驱动开发、应用编程,再到系统优化和调试的整个开发流程。每一章节都力求深入浅出,理论与实践相结合,旨在帮助读者构建扎实的理论基础,同时培养解决实际问题的能力。 第一部分:基础篇——奠定坚实的理论基石 在开始具体的开发实践之前,扎实的理论基础是必不可少的。本部分将带领读者走进ARM处理器和Linux系统的核心世界,为后续的学习打下坚实的基础。 ARM处理器架构与指令集: 我们将深入剖析ARM处理器的指令集架构(ISA),重点介绍ARMv7、ARMv8等主流架构的特点、寄存器组织、寻址模式以及各类指令的功能。理解ARM指令集是进行底层开发、性能优化的关键。同时,我们会探讨不同ARM核(如Cortex-A、Cortex-R、Cortex-M系列)在嵌入式应用中的定位和优势,帮助读者根据项目需求做出合理的硬件选型。 Linux操作系统原理概述: 深入浅出地介绍Linux内核的基本概念,包括进程管理、内存管理、文件系统、设备管理、中断处理等核心机制。理解这些原理,有助于开发者在开发过程中更好地理解系统行为,进行有效的资源管理和性能调优。我们将侧重介绍在嵌入式Linux中尤为重要的概念,如实时性、资源受限性等。 嵌入式Linux系统结构: 介绍嵌入式Linux系统的典型组成部分,包括引导加载程序(Bootloader)、内核(Kernel)、根文件系统(Root File System)以及用户空间应用程序。我们将详细阐述它们各自的功能、相互之间的关系以及在整个系统启动和运行过程中的作用。 第二部分:开发环境篇——搭建高效的开发平台 一个顺畅、高效的开发环境是成功完成嵌入式开发项目的关键。本部分将指导读者搭建一套完整的ARM嵌入式Linux开发环境,涵盖交叉编译工具链、仿真器、调试器等必备工具。 交叉编译工具链的构建与使用: 详细介绍交叉编译工具链(GCC for ARM)的概念、作用以及安装配置方法。我们将指导读者如何从源码编译一个定制化的交叉编译工具链,或者如何使用现成的工具链。重点讲解编译器的常用选项、编译脚本的编写以及链接过程的原理,帮助读者理解如何将为目标平台编写的代码编译成可执行文件。 引导加载程序(Bootloader)开发: 引导加载程序是嵌入式系统的“第一道门”,负责初始化硬件、加载Linux内核。我们将以U-Boot为例,深入讲解其工作原理、配置选项、开发流程和调试方法。读者将学习如何为特定硬件平台定制U-Boot,实现从裸机到启动Linux内核的完整过程。 Linux内核编译与配置: 详细介绍Linux内核的编译、配置和定制过程。我们将引导读者理解内核配置选项的意义,如何根据硬件平台和应用需求裁剪内核,以及如何将自定义模块集成到内核中。掌握内核的编译和配置,是实现系统高度定制化的基础。 第三部分:驱动开发篇——驾驭硬件的精髓 驱动程序是连接硬件与操作系统的桥梁,是嵌入式Linux开发的核心技能之一。本部分将深入讲解Linux设备驱动程序的开发,让读者能够自如地驱动各种嵌入式硬件。 Linux设备模型与驱动框架: 介绍Linux设备模型(Device Model)的核心概念,如总线(Bus)、设备(Device)、驱动(Driver)以及Kobject等,以及Linux内核提供的标准驱动框架,如字符设备、块设备、网络设备等。理解这些框架,能帮助开发者编写出更具通用性和可维护性的驱动程序。 常用硬件接口驱动开发: 重点讲解几种嵌入式系统中常用的硬件接口驱动开发,包括: GPIO(通用输入输出)驱动: 如何配置和使用GPIO口,实现输入、输出、中断等功能。 UART(通用异步收发器)驱动: 实现串口通信,用于设备间的通信和调试。 I2C(集成电路互联)驱动: 驱动各种I2C传感器、EEPROM等外设。 SPI(串行外设接口)驱动: 驱动SPI总线上的外设,如SPI Flash、ADC/DAC等。 Timer(定时器)驱动: 使用硬件定时器实现延时、周期性任务等。 中断处理: 讲解中断的产生、注册、处理流程以及中断共享等高级话题。 Linux设备树(Device Tree): 深入讲解设备树(Device Tree)的概念、语法和在嵌入式Linux中的作用。设备树极大地简化了硬件的描述和驱动的匹配,是现代嵌入式Linux开发不可或缺的一部分。读者将学习如何编写和修改设备树文件,将其与驱动程序关联起来。 平台设备与总线驱动: 讲解平台设备(Platform Device)和平台驱动(Platform Driver)的概念,以及它们在匹配和初始化设备中的作用。 第四部分:应用开发篇——释放嵌入式系统的无限潜能 驱动程序为上层应用提供了硬件接口,本部分将聚焦于ARM嵌入式Linux系统的应用层开发,让读者能够利用Linux强大的软件生态系统,开发出功能丰富的应用程序。 嵌入式Linux应用程序开发基础: 介绍Linux系统下的应用程序开发环境,包括C/C++语言编程、POSIX API的使用、多线程编程、进程间通信(IPC)等。 用户空间常用库与API: 介绍嵌入式Linux开发中常用的用户空间库和API,如POSIX socket API用于网络通信,GTK+/Qt用于图形界面开发,SQLite用于嵌入式数据库应用等。 网络通信编程: 详细讲解TCP/IP协议栈在嵌入式Linux中的应用,包括Socket编程、HTTP/FTP客户端/服务器开发、MQTT协议等,为构建联网设备打下基础。 图形用户界面(GUI)开发: 介绍在资源受限的嵌入式设备上开发GUI的方法,包括使用轻量级的GUI库(如TouchGFX、LVGL)或者标准的GUI框架(如GTK+、Qt),实现用户友好的交互界面。 多媒体应用开发: 讲解在嵌入式Linux上进行音视频采集、处理和播放的常用技术,如ALSA、GStreamer等框架的应用。 第五部分:系统优化与调试篇——保障系统稳定高效运行 系统的性能、稳定性和功耗是嵌入式项目成功的关键因素。本部分将提供一系列行之有效的系统优化和调试技巧,帮助读者打造出更优越的嵌入式系统。 系统性能分析与优化: 介绍常用的性能分析工具,如`perf`、`strace`、`ltrace`等,帮助开发者定位性能瓶颈。讲解CPU、内存、I/O等方面的优化策略,如代码优化、算法改进、缓存利用等。 嵌入式Linux系统调试技术: 详细介绍各种调试手段,包括GDB(GNU Debugger)的远程调试、JTAG/SWD接口调试、printk日志输出、kdump崩溃分析等,帮助开发者快速定位和解决问题。 嵌入式Linux系统安全性: 介绍嵌入式Linux系统的安全基础,包括用户权限管理、文件系统安全、网络安全(防火墙、SSH)以及固件安全等方面。 嵌入式Linux系统更新与部署: 讲解嵌入式Linux系统的软件更新策略,如OTA(Over-The-Air)更新,以及如何构建和部署Root File System。 本书特色: 体系化架构: 内容组织结构清晰,循序渐进,从基础理论到高级应用,形成完整的知识体系。 实战导向: 大量结合实际工程案例,提供可运行的代码示例,让读者在实践中学习和掌握技术。 深入浅出: 避免枯燥的理论说教,用通俗易懂的语言解释复杂的技术概念,并辅以图解和示意图。 面向ARM平台: 聚焦ARM嵌入式Linux系统,针对性强,实用性高。 全面覆盖: 涵盖了从底层驱动到上层应用的开发全流程,满足不同层次开发者的需求。 目标读者: 本书适合于在校的计算机、电子、自动化等相关专业的学生,以及希望深入学习ARM嵌入式Linux系统开发的工程师、技术爱好者。无论您是刚刚接触嵌入式Linux开发的新手,还是有一定开发经验希望进一步提升技能的开发者,本书都将是您不可或缺的参考资料。 掌握ARM嵌入式Linux系统的开发,意味着您将能够参与到智能家居、物联网、工业自动化、医疗设备、汽车电子等众多前沿技术领域,为您的职业生涯打开更广阔的机遇。我们相信,通过本书的学习,您将能够自信地应对各类嵌入式Linux开发挑战,成为一名优秀的嵌入式系统开发者。

用户评价

评分

这本书就像是打开了我通往嵌入式世界的一扇大门。一直以来,我对ARM架构的强大和Linux系统的灵活性都心生向往,但苦于没有合适的入门指导,总是觉得无从下手。当翻开《ARM嵌入式Linux系统开发详解(第2版)》时,我仿佛找到了失散多年的宝藏。作者以一种非常接地气的方式,从最基础的概念讲起,深入浅出地剖析了ARM处理器的核心原理、指令集以及与Linux内核的配合机制。书中不仅讲解了理论知识,更重要的是提供了大量实战性的开发案例,从环境搭建、交叉编译工具链的配置,到内核移植、驱动程序的编写,每一步都清晰明了,让我能够跟着书中的步骤一步步实践,亲身体验从零开始构建一个完整的嵌入式Linux系统的全过程。尤其是关于uboot的深入解析,让我对bootloader的工作流程有了前所未有的理解,这对于后续的系统调试和优化至关重要。读完这部分内容,我不再是那个对嵌入式开发一窍不通的菜鸟,而是能够自信地去探索更复杂的嵌入式项目。

评分

我原本以为,学习嵌入式Linux开发会是一件非常枯燥乏味的事情,需要死记硬背大量的命令和API。然而,《ARM嵌入式Linux系统开发详解(第2版)》的出现,彻底颠覆了我的认知。作者的写作风格非常生动有趣,他善于用形象的比喻和贴切的例子来解释抽象的概念,使得原本复杂的知识点变得易于理解。书中不仅仅是文字的堆砌,还穿插了大量的流程图、代码片段和截图,这使得阅读体验极佳。我能够一边阅读,一边对照着实际操作,很快就能掌握书中的知识。特别是关于Makefile和CMake的章节,我之前一直对此感到头疼,但通过这本书的学习,我终于理解了它们的工作原理和优劣,能够灵活地运用它们来管理我的项目。这本书让我觉得,学习嵌入式Linux开发原来可以如此轻松和愉快。

评分

说实话,市面上关于嵌入式Linux的书籍很多,但真正能够做到既有深度又有广度的却屈指可数。《ARM嵌入式Linux系统开发详解(第2版)》绝对是其中的佼佼者。我作为一个已经有几年嵌入式开发经验的工程师,在阅读这本书时,依然被其深刻的洞察力和严谨的逻辑所折服。书中对于Linux内核与ARM硬件交互的细节进行了深入剖析,例如中断处理机制、DMA控制器的工作原理,以及如何利用ARM的MMU实现高效的内存管理。这些内容对于理解系统的底层运行机制至关重要,能够帮助开发者写出更高效、更稳定的代码。此外,书中还介绍了Qt for Embedded等图形化开发框架,以及如何进行嵌入式系统的性能优化和调试。这些实用的技巧和方法,让我受益匪浅,直接提升了我解决复杂嵌入式问题的能力。

评分

对于初学者来说,选择一本好的入门书籍至关重要。《ARM嵌入式Linux系统开发详解(第2版)》恰恰满足了这一需求。它就像是一位经验丰富的导师,耐心细致地引导着我一步步走进嵌入式Linux的世界。书中从最基础的Linux命令行操作讲起,逐步过渡到嵌入式系统的硬件平台介绍,再到内核的配置、编译和烧写。整个过程逻辑清晰,循序渐进。我尤其欣赏书中关于根文件系统构建的详细讲解,它让我明白了如何为一个嵌入式设备选择合适的软件包,如何打包并部署到目标板上。书中提供的各种命令和配置示例都非常实用,我可以直接复制使用,大大缩短了我的学习时间。对于那些希望进入嵌入式Linux开发领域的学生或者开发者来说,这本书无疑是一个非常好的起点,能够帮助你打下坚实的基础,为后续更深入的学习做好准备。

评分

我之前一直在Windows环境下从事一些应用开发,但对嵌入式Linux一直存在着强烈的好奇心。很多时候,工作中会遇到需要与嵌入式设备打交道的场景,而我却对此一无所知,这让我感到非常焦虑。《ARM嵌入式Linux系统开发详解(第2版)》彻底改变了我的状况。这本书的内容之详尽,超出了我的预期。它并没有停留在表面的操作介绍,而是深入到了Linux内核的源码层面,讲解了文件系统、进程管理、内存管理等核心机制在ARM架构下的具体实现。我尤其喜欢书中关于设备树(Device Tree)的章节,它清晰地解释了设备树的语法、工作原理以及如何修改设备树来适配不同的硬件平台。这一点对于我这种需要快速上手新硬件开发的人来说,简直是福音。而且,书中还涵盖了网络编程、多媒体应用开发等高级主题,让我看到了嵌入式Linux应用的广阔前景,也为我未来的职业发展指明了方向。

评分

好厚你几岁哦

评分

棒棒哒棒棒哒棒棒哒棒棒哒棒棒哒棒棒哒棒棒哒棒棒哒棒棒哒

评分

书还可以,就是早知道打折的时候买了

评分

不错 正在看

评分

包装好,内容好

评分

“本身就穷,折腾对了就成了富人;折腾不对,大不了还是穷人。合法三观正就好。如果不折腾、一辈子都是穷人……一想,二干,三成功,一等,二看,三落空;想是问题,做是答案;输在犹豫,赢在行动!”

评分

你的可是系统一直是一个非常牛逼的技术,如果能学到还是不错的

评分

这本书和我要用的没太大关系,总体介绍了一下ARM开发额流程和应用方向

评分

还以坎坎坷坷看坎坎坷坷看

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有