嵌入式Linux系统开发教程

嵌入式Linux系统开发教程 教材名称: 嵌入式Linux系统开发教程
ISBN号: 978-7-89436-673-3 作者: 王伟
字数: 504千字 规格: 16开
印制时间: 2020-02-01 出版日期: 2020-02-01
定价: 46 元 样章下载: 嵌入式Linux系统开发教程—样章.pdf
购买地址:

1.教材的基本信息
(1)适用对象
本教材适用于电子信息、通信、自动化、计算机等相关专业和相关课程的教学使用,也可用于有志于从事嵌入式系统开发的专业人员作为入门教程。
(2)具备知识和能力基础
学习本教材需要具备基本的计算机基础知识和C语言编程能力,且先修过《单片机原理与应用》《Linux操作系统》课程,具备一定的电路设计能力及Linux系统操作能力。
(3)学习总体目标
本课程带领读者完成基于嵌入式Linux系统的产品开发的全流程,着重从以下几方面培养学生的知识和能力,分别是:
理论知识
CortexA9体系结构及外围硬件设计原理;使用C、C++语言进行程序设计相关理论;嵌入式系统驱动开发理论;嵌入式Linux系统移植相关概念、原理。
专业技能
掌握嵌入式系统硬件电路设计方法;掌握嵌入式Linux操作系统的基本操作命令;掌握嵌入式交叉编译开发环境的搭建和使用;掌握基于ARM处理器的嵌入式Linux系统移植方法;能够运用Linux操作系统API函数进行驱动程序编写;能够编写Qt应用程序。
教材编写团队情况
本教材编者均为电子信息工程专业嵌入式专业方向教学一线的教师,由王伟等主编。本教材编写过程中参考并引用了大量嵌入式系统方面的书籍和资料,在此对作者表示感谢。由于水平有限,教材中的缺漏与错误在所难免,恳请广大读者批评指正。
2.教材的基本结构与内容组织
(1)教材的基本结构
本教材以工程教育理念为指导,遵循TOPCARESCDIO教学模式,合理安排教材结构。教材内容采用从硬件设计、系统移植到软件应用的方式进行组织,每个知识点理论与实践相结合,学与做相结合贯穿全书每个知识点,最后带领读者完成一个综合项目,教材基本结构及设计思路如下图所示。
 
图01教材结构示意图
(2)教材的内容组织
本教材的内容组织遵循TOPCARESCDIO工程教育理念,从培养读者能力入手,以实用、切合实际为原则,为读者提供简明、直观、易懂的内容。教材中采用以项目驱动为向导,深入浅出地嵌入式系统开发中的软硬件知识。每一部分结合实例讲解嵌入式Linux系统开发基本流程和方法,以及嵌入式系统开发工具的使用。这样,读者可以清楚地看到运行的现象或结果,从而留下直观和深刻的印象,并且能迅速理解和掌握嵌入式系统基本工作原理、一般开发流程、方法和开发工具的使用。本教材以广州友善之臂Tiny4412开发板为基础进行讲解。教材共分5篇12章。
第一篇为硬件设计篇,分为两章。
第1章是硬件系统概述,介绍了本教材所讲述的硬件平台资源、Exynos 4412处理器的基本特性、Exynos 4412处理器的内部各个模块,如系统外设、多媒体、电源管理、存储器接口及Connectivity模块等。
第2章是扩展板电路设计,介绍了LED、蜂鸣器、按键、串行通信、EEPROM、SD卡及USB等工作原理及硬件电路设计方法。
第二篇为开发基础篇,分为两章。
第3章是嵌入式Linux开发环境构建,介绍了嵌入式Linux开发的基本概念,常用Linux命令,常用软件开发工具的安装:如Putty、VMware、Linux安装,以及NFS服务器的配置。
第4章是make工程管理及Shell介绍,介绍了make工程管理及Shell简单语法,每个知识点均是以实例来讲解。
第三篇为系统移植篇,分为三章。
第5章是BootLoader介绍,介绍了BootLoader的工作原理、工作模式、常见的BootLoader和BootLoader移植方法。
第6章是移植Linux内核,介绍了Linux内核的配置方法、Linux3.5版本的内核移植过程以及调试、烧写内核的方法,读者能够边做边学,实时的看到内核在目标板的运行效果。
第7章是移植根文件系统,介绍了根文件系统组成,根文件系统的制作和移植方法。
第四篇为驱动开发篇,分为三章。
第8章是驱动开发基础,介绍了嵌入式Linux驱动程序开发的基本概念,字符设备驱动程序框架,自动创建设备节点的方法,设计了一个简单的字符设备驱动程序项目。
第9章是驱动开发核心技术,介绍了Linux操作系统提供的相关API函数的使用方法,包括信号量、等待队列、Tasklet、工作队列、内核定时器等使用方法,每一部分皆给出了具体实例项目。
第10章是驱动开发进阶,介绍了Linux设备驱动模型的原理,Platform虚拟总线的构成,接下来以ADC、I2C和触摸屏为例介绍了基于设备驱动模型下的驱动程序编写方法。
第五篇是项目实战篇,分为两章。
第11章Qt应用程序开发,介绍Qt 开发环境搭建的方法,包括Qt Creator在Linux上的安装,Qt4库的移植。以LED为例,讲述驱动程序调用和Qt4下应用程序编写方法。
第12章是综合实例,讲述了智能家居项目,从硬件设计、驱动编写、Qt4应用开发方面进行讲解。
附录是学习知识要点及能力要点,包括教材的知识要点及掌握程度、教材的能力要点及掌握程度。
第一篇硬件介绍篇
第1章硬件介绍3
1.1硬件介绍3
1.2Exynos 4412处理器5
1.3底板电路接口介绍6
1.4开发板设置及连接11
习题12
第2章扩展板电路设计13
2.1LED电路13
2.1.1发光二极管简介13
2.1.2发光二极管的检测14
2.1.3发光二极管电路设计14
2.2蜂鸣器电路15
2.2.1蜂鸣器简介15
2.2.2蜂鸣器电路设计16
2.3按键电路16
2.3.1按键分类16
2.3.2按键设计技巧17
2.3.3按键电路设计18
2.4串行通信接口电路19
2.4.1RS232C标准19
2.4.2MAX3232芯片20
2.4.3串行通信接口电路设计20
2.5EEPROM电路22
2.5.1I2C总线协议概述22
2.5.2AT24C02介绍22
2.5.3AT24C02的读写操作23
2.5.4AT24C02电路设计25
2.6SD卡电路25
2.6.1SD卡概述25
2.6.2SD卡的物理接口26
2.6.3SD卡的应用模式27
2.6.4Exynos 4412与SD卡的电路设计28
习题29
第二篇开发基础篇
第3章嵌入式Linux开发环境构建33
3.1嵌入式系统概述33
3.2常用Linux命令37
3.3软件包安装及配置38
3.3.1PuTTY安装及配置38
3.3.2VMware安装40
3.3.3安装并设置 Fedora 9.040
3.4Windows与Linux共享文件设置52
3.5交叉编译器安装54
3.6NFS服务器配置55
习题56
第4章make工程管理及Shell介绍57
4.1make工程管理57
4.1.1make工程管理器57
4.1.2make工作步骤58
4.1.3make程序示例58
4.1.4Makefile语法60
4.2Shell介绍63
4.2.1Bash Shell简介63
4.2.2Bash Shell常用命令64
4.2.3重定向与管道67
4.2.4Shell简单语法70
习题71
第三篇系统移植篇
第5章BootLoader移植75
5.1BootLoader简介75
5.2常见的BootLoader76
5.3SD卡刷系统77
5.4MiniTools 工具刷系统81
习题85
第6章Linux内核移植86
6.1Linux内核版本简介86
6.2内核源码结构87
6.3内核移植准备88
6.3.1内核编译过程88
6.3.2Linux Makefile分析89
6.3.3内核Kconfig分析91
6.3.4内核配置及编译命令94
6.4内核移植95
习题98
第7章根文件系统移植100
7.1根文件系统组成100
7.2根文件系统移植102
习题102
第四篇驱动开发篇
第8章驱动开发基础105
8.1驱动程序中的基本概念105
8.1.1设备驱动程序概述105
8.1.2设备驱动的分类106
8.1.3驱动程序、操作系统、应用程序的关系106
8.1.4常见的系统调用函数107
8.2驱动开发要点109
8.2.1用户态和内核态109
8.2.2模块机制110
8.3Hello World驱动程序110
8.3.1驱动模块组成110
8.3.2Hello World驱动模块程序111
8.3.3编译Hello World模块113
8.3.4调试Hello World模块114
8.4字符设备驱动基本概念115
8.4.1主设备号和次设备号115
8.4.2cdev结构体116
8.4.3file_operations结构体118
8.4.4file结构体121
8.4.5inode 结构体122
8.4.6各结构体关系124
8.5字符设备驱动的组成125
8.5.1文件操作结构体125
8.5.2加载和卸载函数126
8.5.3常用设备操作函数127
8.5.4驱动中常用API函数130
8.6Virtualmem字符设备驱动131
8.6.1Virtualmem驱动程序131
8.6.2Virtualmem测试程序136
8.6.3驱动程序的测试方法137
8.7自动创建设备节点的方法138
8.7.1udev简介138
8.7.2驱动实例138
习题140
第9章驱动开发核心技术142
9.1并发处理机制142
9.1.1信号量的定义143
9.1.2信号量的内核函数143
9.1.3信号量驱动程序及测试代码144
9.2阻塞机制148
9.2.1阻塞和非阻塞定义148
9.2.2等待队列定义及其内核函数148
9.2.3等待队列驱动程序及测试代码149
9.2.4I/O多路复用154
9.3中断机制159
9.3.1中断定义及分类159
9.3.2中断的实现过程160
9.3.3中断的申请及释放161
9.4利用tasklet处理中断162
9.4.1顶半部与底半部162
9.4.2tasklet定义及内核函数163
9.4.3按键设备原理图164
9.4.4利用tasklet处理中断驱动实例165
9.5利用工作队列处理中断170
9.5.1工作队列定义及内核函数170
9.5.2利用工作队列处理中断驱动实例171
 
9.6内核定时器175
9.6.1时间度量175
9.6.2时间延时176
9.6.3内核定时器定义及内核函数176
9.6.4内核定时器驱动代码177
9.7设备端口的访问181
9.7.1I/O端口方式控制设备182
9.7.2I/O内存方式控制设备190
9.7.3控制单一引脚的方法196
9.7.4Linux杂项设备驱动204
习题207
第10章驱动开发进阶210
10.1Linux设备驱动模型210
10.1.1Sysfs文件系统211
10.1.2设备驱动模型关键数据结构212
10.1.3内核对象函数214
10.1.4设备模型构成215
10.1.5设备驱动模型主要组件216
10.2Platform虚拟总线218
10.2.1Platform虚拟总线概述218
10.2.2Platform虚拟总线重要组件219
10.2.3Platform虚拟总线驱动实例223
10.3ADC设备驱动229
10.3.1ADC模数转换器特点229
10.3.2ADC驱动程序分析232
10.3.3ADC测试程序235
10.4I2C设备驱动236
10.4.1I2C设备驱动程序结构236
10.4.2AT24C02设备驱动程序240
10.4.3用户空间直接访问I2C设备的方法245
10.5输入子系统247
10.5.1输入子系统简介247
10.5.2输入子系统设备驱动层设计247
10.5.3输入子系统中按键设备驱动程序250
习题254第五篇项目实战篇
第11章Qt应用程序开发259
11.1Linux下Qt Creator开发环境安装及配置259
11.2QtE库移植265
11.3LED流水灯266
习题280
第12章综合实例281
12.1智能家居系统281
12.2硬件系统设计282
12.3设备驱动程序287
12.4界面程序设计303
习题314
附录学习知识要点及能力要点315
参考文献316
2016年6月,中国成为国际本科工程学位互认协议《华盛顿协议》的正式会员,这是中国工程教育国际化进程的重要里程碑。“回归工程”、培养学生的“大工程观”是当今国际工程教育的主流理念。《华盛顿协议》对毕业生提出的12条素质要求中,不仅要求工程知识、工程能力,还强调通用能力和品德伦理;在实践上,以学生为中心,以产出为导向,注重对目标达成的支撑及持续改进,与CDIO工程教育实质等效。
CDIO工程教育是近年来国际工程教育改革的最新成果,以“预期学习结果”集合来驱动课程内容、教学方法、教育文化的设计,重视营造工程教育文化,其注重工程能力培养和基于工程项目全生命周期的一体化设计思想,对于国内工程类和相关专业的建设具有重要的实施价值。
作为承载了教学改革思想的载体,融入CDIO工程教育理念的高品质教材,东软CDIO工程教育教材在注重理实结合的同时,也注重对学生八大能力的培养,即:技术知识与推理能力,开放式思维与创新,个人职业能力,沟通表达与团队合作,态度与习惯,责任,价值观,实践构思、设计、实现和运行对社会的贡献。
CDIO工程教育教材是 CDIO教育教学改革在教学实施过程中的集中体现,它不仅承载着课程和项目的教学内容,而且贯穿和体现了CDIO工程教育的理念、思想与方法,是在系统化理论的指导下,将知识、能力、素质培养进行一体化设计,有机融合在教材体系中。教材的编写以能力培养为主线,以案例教学为引导,以项目为载体,充分体现“做中学”和“学中做”的思想,具有以下优势:
(1)以能力培养为主线,培养学生专业知识学习能力和工程实践能力。
(2)以案例为驱动,在做案例的过程中学习新知识,充分体现了“做中学”。
(3)以项目为载体,基于工程化教育方法,按照分析、设计、实施、运行展开项目及知识点的讲解。
(4)围绕专业知识结构和能力体系设计教材,实现同一专业下不同教材紧密的关联性。
(5)内容编排循序渐进,符合人的认知规律。
(6)适应柔性化教学变革,构建一体化、立体化教学资源。
CDIO工程教育教材可供以应用型人才为培养目标的高等院校以及职业培训机构作为教材使用。
目前,CDIO工程教育教材的建设还处于探索阶段,是一项创造性的工作,尚需要通过改革的实践不断加以深化和持续改进,任重而道远。