新書推薦:
《
明式家具三十年经眼录
》
售價:HK$
538.2
《
敦煌写本文献学(增订本)
》
售價:HK$
227.7
《
耕读史
》
售價:HK$
112.7
《
地理计算与R语言
》
售價:HK$
124.2
《
沈括的知识世界:一种闻见主义的实践(中华学术译丛)
》
售價:HK$
89.7
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:HK$
74.8
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:HK$
159.9
《
UE5虚幻引擎必修课(视频教学版)
》
售價:HK$
113.9
|
編輯推薦: |
介绍基于嵌入式Linux系统的软件开发方法;重点介绍多任务、网络和设备驱动的编程;实验篇以德州仪器公司的卡片式计算机Beagle Bone为对象,从底层基本系统建立,到上层应用软件的移植和编写
|
內容簡介: |
本书基于嵌入式Linux系统,介绍其软件开发方法,重点介绍多任务、网络和设备驱动的编程。本书分为两个部分。第1部分是基础篇(第1~8章),内容包括Linux系统的基本使用方法、Linux系统的主要开发工具、文件读写、多任务机制、网络套接字编程、模块与设备驱动、嵌入式Linux系统开发、GUI程序设计初步。第2部分是实验篇(第9~21章),内容包括实验系统介绍、嵌入式系统开发实验、引导加载器、内核配置和编译、根文件系统的构建、图形用户接口、音频接口程序设计、嵌入式系统中的IO接口驱动、触摸屏移植、QtEmbedded移植、MPlayer移植、GTK 移植、实时操作系统RTEMS。本书可作为电子信息、通信、自动化等专业相关课程的教材,也可供相关领域的工程技术人员学习、参考。
|
關於作者: |
方元,博士,南京大学电子科学与工程学院副教授,长期讲授微机原理、嵌入式系统、DSP原理与应用等课程,获得2013年石林奖教金。
|
目錄:
|
第1部分基础篇
第1章Linux系统的基本使用方法
1.1Linux系统的使用环境
1.1.1Linux系统的目录结构
1.1.2Linux系统的用户
1.2命令行工作方式
1.2.1终端
1.2.2目录操作
1.2.3文件操作
1.2.4浏览文件
1.2.5打包、压缩和解压
1.2.6进程控制
1.2.7管道与重定向
1.2.8shell脚本程序
1.3规则表达式
1.4与开发相关的常用命令
1.4.1文件比较
1.4.2文本搜索
1.4.3流编辑
1.5文本编辑工具
1.5.1vim工作模式
1.5.2vim常用编辑命令
1.5.3vim高级操作
本章练习
本章参考资源
第2章Linux系统的主要开发工具
2.1gcc工具链
2.1.1gcc编译器
2.1.2汇编器和链接器
2.2代码分析与转换工具
2.2.1函数地址解析addr2line
2.2.2符号列表nm
2.2.3目标文件转储objdump
2.2.4代码剖析gprof
2.2.5ELF符号解析readelf
2.2.6代码瘦身strip
2.3GNU Make
2.3.1源代码的组织
2.3.2第一个Makefile
2.3.3GNU Make基本规则
2.3.4完善Makefile
2.3.5GNU Make的依赖
2.4开源软件的移植
2.4.1工具准备
2.4.2源代码的组织结构
2.4.3配置编译环境
2.4.4编译和安装
2.5调试工具
2.5.1gdb使用示例
2.5.2远程调试
2.6版本控制系统
2.6.1集中式版本控制系统svn
2.6.2追溯历史、分支与合并
2.6.3分布式版本控制系统git
2.6.4git基本操作
2.6.5git分支与合并
2.7合理地组织程序
2.7.1头文件的要求
2.7.2C语言源文件
2.7.3库的产生和作用
2.7.4项目的目录组织结构
2.8交叉编译工具链的制作
本章练习
本章参考资源
第3章文件读写
3.1文件系统的概念
3.2文件与目录
3.2.1Linux系统中的虚拟文件系统
3.2.2Linux系统的文件类型
3.2.3改变文件属性
3.3文件描述符
3.3.1标准IO设备
3.3.2有关文件操作的系统功能调用
3.3.3文件描述符复制
3.3.4文件描述符操作
3.3.5文件共享与读写冲突
3.4标准IO库的文件操作
3.4.1打开文件
3.4.2文件流读写
3.4.3文件流定位
3.4.4格式化IO文件操作函数
本章练习
本章参考资源
第4章多任务机制
4.1理解进程的概念
4.1.1什么是进程
4.1.2进程的状态
4.1.3进程的创建和结束
4.1.4创建进程的例子
4.2进程间的数据交换
4.2.1管道
4.2.2共享内存
4.2.3消息队列
4.3守护进程
4.4线程轻量级进程
4.5线程的竞争与同步
4.5.1互斥锁
4.5.2信号和信号量
4.5.3进程与线程的对比
本章练习
本章参考资源
第5章网络套接字编程
5.1套接字API
5.1.1两种类型的套接口
5.1.2网络协议分层
5.1.3关闭套接口
5.2TCP网络程序分析
5.2.1网络地址
5.2.2端口
5.3TCP服务器程序设计
5.4简单的数据流对话
5.5多任务数据流对话
5.6基于数据报的对话程序
本章练习
本章参考资源
第6章模块与设备驱动
6.1设备驱动程序简介
6.1.1内核功能划分
6.1.2设备驱动程序的作用
6.1.3设备和模块分类
6.2构建和运行模块
6.2.1第一个示例模块
6.2.2模块的编译
6.2.3模块的运行
6.2.4内核模块与应用程序
6.3模块的结构
6.3.1模块的初始化和清除函数
6.3.2内核符号表
6.3.3模块的卸载
6.3.4资源使用
6.4字符设备驱动程序
6.4.1timer的设计
6.4.2文件操作
6.4.3打开设备
6.4.4IO控制
6.4.5阻塞型IO
6.5设备驱动程序的使用
6.5.1驱动程序与应用程序
6.5.2内核源码中的模块结构
6.5.3将模块加入内核
6.6调试技术
6.6.1输出调试
6.6.2查询调试
6.6.3监视调试
6.6.4故障调试
6.6.5使用gdb调试工具
6.6.6使用内核调试工具
6.7硬件管理与中断处理
6.7.1IO寄存器和常规内存
6.7.2中断
6.8内核的定时
6.8.1时间间隔
6.8.2获取当前时间
6.8.3延迟执行
6.8.4定时器
本章练习
本章参考资源
第7章嵌入式Linux系统开发
7.1引导装载程序
7.2内核设置
7.2.1内核布局
7.2.2内核链接和装入
7.2.3参数传递和内核引导
7.3设备驱动程序
7.3.1帧缓冲区驱动程序
7.3.2输入设备驱动程序
7.3.3MTD驱动程序
7.3.4MTD驱动程序设置
7.4嵌入式设备的文件系统
7.4.1扩展文件系统
7.4.2日志闪存文件系统的第2版(JFFS2)
7.4.3tmpfs
7.5图形用户界面(GUI)
7.5.1XFree86 4.X(带帧缓冲区支持的X11R6)
7.5.2Microwindows
7.5.3Microwindows上的FLTKAPI
7.5.4QtEmbedded
7.6帧缓冲
第8章GUI程序设计初步
8.1基本组件介绍
8.1.1一个简单的图形接口程序
8.1.2按钮类组件
8.1.3数据类组件
8.1.4菜单栏与工具栏
8.2画图区
8.3界面布局方法
8.3.1盒子
8.3.2表格
8.3.3对位
8.3.4便签
第2部分实验篇
第9章实验系统介绍
9.1实验系统性能概括
9.2软件
9.2.1交叉编译工具链
9.2.2工具链安装
9.2.3嵌入式操作系统软件
9.3实验系统搭建
第10章嵌入式系统开发实验
10.1实验目的
10.2嵌入式系统开发过程
10.2.1串口设置(使用minicom)
10.2.2TFTP(简单文件传输协议)
10.2.3NFS服务器架设
10.2.4编译应用程序
10.3实验报告要求
第11章引导加载器
11.1实验目的
11.2BootLoader
11.2.1BootLoader的作用
11.2.2BootLoader程序结构框架
11.3实验内容
11.3.1获取U-Boot
11.3.2配置BootLoader选项
11.3.3制作TF卡
11.4实验报告要求
第12章内核配置和编译
12.1实验目的
12.2相关知识
12.2.1内核源代码目录结构
12.2.2内核配置的基本结构
12.2.3编译规则Makefile
12.3编译内核
12.3.1Makefile的选项参数
12.3.2内核配置项介绍
12.4实验内容
12.5实验报告要求
第13章根文件系统的构建
13.1实验目的
13.2Linux文件系统的类型
13.2.1EXT文件系统
13.2.2NFS文件系统
13.2.3JFFS2文件系统
13.2.4YAFFS2
13.2.5RAM Disk
13.3文件系统的制作
13.3.1BusyBox介绍
13.3.2BusyBox的编译
13.3.3配置文件系统
13.3.4制作ramdisk文件镜像
13.3.5制作init_ramfs
13.4实验内容
13.5实验报告要求
第14章图形用户接口
14.1实验目的
14.2原理概述
14.2.1帧缓冲设备
14.2.2帧缓冲与色彩
14.2.3LCD控制器
14.2.4帧缓冲设备操作
14.3实验内容
14.3.1实现基本画图功能
14.3.2合理的软件结构
14.4实验报告要求
第15章音频接口程序设计
15.1实验目的
15.2接口介绍
15.3应用软件设计
15.3.1OSS
15.3.2ALSA
15.4实验内容
15.5实验报告要求
第16章嵌入式系统中的IO接口驱动
16.1实验目的
16.2接口电路介绍
16.3IO端口地址映射
16.4LED控制
16.5实验内容
16.6实验报告要求
第17章触摸屏移植
17.1实验目的
17.2Linux系统的触摸屏支持
17.2.1触摸屏的基本原理
17.2.2内核配置
17.2.3触摸屏库tslib
17.2.4触摸屏库的安装和测试
17.3实验内容
17.4实验报告要求
第18章QtEmbedded移植
18.1实验目的
18.2QtEmbedded介绍
18.2.1QtEmbedded软件包结构
18.2.2编译环境设置
18.2.3编译过程
18.2.4QtEmbedded
|
內容試閱:
|
嵌入式系统几乎是伴随着微处理器同时发展的。根据维基百科介绍,诞生于20世纪60年代的阿波罗制导计算机被认为是最早的嵌入式系统之一。自进入21世纪以来,嵌入式在计算机领域已成为持续热门的话题。与通用计算机类似,嵌入式系统由软件和硬件组成。随着嵌入式处理器性能的不断提高,许多应用系统的实时性已经不成问题,越来越多的嵌入式系统开始直接使用通用计算机系统的软件。
例如,英国的树莓派基金会采用博通SoC处理器,开发出一系列的树莓派产品。Pi Zero是主频为700MHz的MHz ARM1176jzf-s核,价格定位在5美元;而在2017年年初发布的Pi 3 B 版本,更是具有4核64位CORTEX-A53(ARMv8指令集)的处理器,主频高达1.2GHz,与普通的笔记本电脑的性能相差无几,价格也不过三十几美元。它们都具有高性能的VC-4的图像处理单元(Graphics Processing Unit,GPU),可以流畅地运行一些图形桌面系统,播放高清视频。
在这样的背景下,采用通用计算机系统软件开发嵌入式系统,不仅大大缩短了开发周期、提高了开发效率,系统的可靠性也得到了提升。
在众多的软件中,以Linux为核心的操作系统以及大量的开源软件成为许多嵌入式系统的首选。Linux世界提供大量的自由软件,为开发人员提供了广泛的选择空间,同时也能得到许多无私的帮助。
本书基于嵌入式Linux系统,介绍其软件开发方法,重点介绍多任务、网络和设备驱动的编程。
本书分为基础篇和实验篇两个部分。
第1部分 基础篇
第1章介绍Linux系统的基本使用方法,重点介绍与嵌入式系统开发相关的命令。
第2章介绍Linux系统的主要开发工具,包括编译工具、GNU Make和版本控制系统的使用。
本章最后一节介绍了交叉编译工具的制作过程,供有兴趣的读者参考。
第3章介绍文件读写,重点介绍面向文件描述符的基本系统功能调用,它们是下面几章的基础。
第4章介绍多任务机制,重点介绍在Linux系统中实现多任务的两种主要形式(进程和多线程),以及在多任务程序设计中的一些基础问题。
第5章介绍网络套接字编程,重点介绍以套接字为基础的网络通信程序的基本编程方法。
第6章介绍模块与设备驱动,以个人计算机系统上的一个简单设备为模型,比较系统地介绍了Linux系统中字符设备驱动程序的开发方法。虽然研究对象是通用计算机系统中的一个设备,但其研究方法同样适用于嵌入式Linux中的设备。
第7章介绍嵌入式Linux系统的软件结构,概括地讨论了嵌入式系统的BootLoader、内核布局、文件系统和图形接口几个方面的问题。
第8章简要介绍基于GTK 库的图形接口应用编程基础,通过介绍一些常用组件的功能和界面设计方法,帮助读者了解Linux系统中图形界面的编程风格。在移植了图形库的嵌入式Linux系统中,可以比较方便地开发图形化应用程序。
第2部分 实验篇
实验篇以美国德州仪器公司的卡片式计算机Beagle Bone为实验对象,在此基础上进行嵌入式Linux开发,按照从底层基本系统建立到上层应用软件的移植和编写的顺序加以组织。
第9章是实验系统基本介绍。
第10章介绍嵌入式系统开发实验环境搭建。
第11章介绍BootLoader的编译和启动设备的制作。
第12章、第13章分别完成Linux内核的编译和根文件系统的制作。至此,一个完全由源码打造的基本Linux系统已经建立,它是后续实验的基础。
第14章、第15章学习嵌入式Linux环境下的程序开发方法,其中包括图形界面程序设计和音频接口程序设计。在实验过程中应建立软件层次的概念。
第16章学习Linux系统中简单设备驱动程序的编写。
第17~20章安排了一些软件移植实验,从简单的触摸屏库到较为复杂的GTK 图形库。通过以上逐层递进的实验,可以掌握在嵌入式平台上实现一种应用系统的方法。
鉴于实时操作系统在嵌入式应用中的地位,第21章介绍一款实时操作系统RTEMS在嵌入式平台上移植的过程。
实验篇的前3章为建立嵌入式Linux实验环境做初步准备。后续内容均可在此基础上以具体的应用形式实现,例如多进程的数据采集与回放、多线程的图形应用等。
本书假定读者系统地学习过C语言,并对Linux操作系统有初步的认识。针对当前嵌入式系统的应用特点,本书重点选取了多任务程序设计、网络通信、设备驱动等几个开发方面进行介绍。书中没有使用过多的C语言编程技巧,而着重于功能的实现。本书强调各种工具的使用。一些工具并不仅限于软件开发,在其他场合也能起到极大的帮助作用。例如版本控制系统,在撰写文稿、项目协作等工作中都是非常方便的工具。希望这些工具的介绍能对读者有所帮助。
本书内容作为嵌入式系统及实验课程的教材,已在南京大学电子信息类本科教学中实践多年。就笔者的经验来说,基础部分和实验部分每周各用3个课时是一个可行的方案。本书为任课教师免费提供配套电子课件、习题参考答案、程序代码等教学资源,请登录华信教育资源网(http:www.hxedu.com.cn)注册下载,也可联系编辑(wangxq@phei.com.cn,010-88254113)索取。
限于笔者的知识水平和认知能力,书中肯定存在不少错误及不当之处,恳请同行专家及读者批评指正。
编 著 者
|
|