本书以物联网嵌入式程序开发基础知识为出发点,旨在让读者更清楚地了解物联网嵌入式程序开发的原理和各种与其相关的技术。
本书深入讲解了ARM嵌入式应用程序开发的基本原理及ARM Linux下的Makefile编写、交叉编译、进程开发、线程开发、网络编程,并使用相关技术搭建起物联网嵌入式开发应用平台,完整地体现了物联网嵌入式程序开发的体系和整体结构。
本书分为两个部分:ARM基础与开发环境搭建和Linux下的嵌入式应用开发。共有11个单元,分别讲解了:ARM背景知识、ARM开发环境搭建、ARM基础功能实现、Linux的基本操作、Linux下编译系统、Linux文件I/O编程、进程控制开发、进程间通信、多线程编程、网络编程、应用开发。
本书采用理论与实践相结合的方法,将无线传感器网络技术运用于实践中,为物联网的学习奠定了基础。本书适用面广,可作为物联网工程、电子信息工程、自动化、计算机科学与技术等专业的教材。
本书配有电子课件及源代码,选用本书作为教材的教师可登录机械工业出版社教育服务网(www.cmpedu.com)免费注册后下载或联系编辑(010-88379194)索取。
图书在版编目(CIP)数据
物联网被看成继计算机、互联网与移动通信之后的又一次信息产业浪潮,将成为未来带动中国经济发展的生力军。2009年,在美国总统奥巴马与工商业领袖举办的圆桌会议上,IBM首席执行官首次提出了“智慧地球”(Smart Earth)的构想,同年,欧盟发布了物联网研究战略路线图(Internet of Things Strategic Research Roadmap)。在我国,物联网同样得到了高度重视,在2010年“两会”期间物联网已经被写入政府工作报告,确立为国家战略性新兴产业之一。在2016年国务院印发的《“十三五”国家信息化规划》中特别提出要加快信息化和生态文明建设深度融合,利用新一代信息技术,促进产业链接循环化。推进物联网感知设施规划布局,发展物联网开环应用;实施物联网重大应用示范工程,推进物联网应用区域试点,建立城市级物联网接入管理与数据汇聚平台,深化物联网在城市基础设施、生产经营等环节中的应用。
本书编者总结了多年的物联网专业教学和指导学生参加竞赛的经验,精心选择物联网方面典型的应用开发项目展开分析,根据需求设计工作任务,按照工作任务所需的知识和技能对内容进行重构,使应用开发项目、任务、内容浑然一体,体现了 “教、学、做”一体化教学的特色。全书内容以应用开发项目为主线,以ARM嵌入式开发知识和技能为支点,深入浅出地阐述了物联网嵌入式项目开发的过程和方法,使读者能够快速奠定物联网嵌入式开发的编程基础。本书内容包括:ARM基础与开发环境搭建和Linux下的嵌入式应用开发两大部分。ARM基础与开发环境搭建部分重点介绍ARM处理器开发环境的安装与设置、裸机程序的开发等。Linux下的嵌入式应用开发部分从Linux的安装过程、基本操作命令讲起,为Linux初学者快速入门提供了保证;嵌入式Linux编译系统以及嵌入式Linux I/O与文件系统的开发、进程控制开发、进程间通信开发、网络应用开发、与物联网相关的实际应用开发等为读者深入理解、应用物联网嵌入式开发的基本技能指明了实践方向;丰富的实验内容使读者能够边学边用,更快更好地领会物联网嵌入式程序开发知识并掌握开发技能。
本书的特点如下:
1)理论与实践相结合。将ARM的技术融入若干个任务之中,通过任务驱动的方式,让读者在动手实践的过程中自然地理解嵌入式程序开发相关的知识点。
2)技术剖析深入浅出。本书寓知识、技能学习于开发实践中,对任务进行了细致的分解,按照由易到难的顺序展开训练,让读者在完成任务的同时,通过必要的反思学习,达到“知其然,也知其所以然”的效果。
本书由寻桂莲担任主编,卞孝丽、贾正松、胡钢、杨燕、陈梅和林晓鹏担任副主编,张继辉、李巍、苏清城、骆旭坤、刘鹏鹏、季云峰和孙光明参加编写。
本书得到了北京新大陆时代教育科技有限公司相关人员的大力帮助和支持,在此表示感谢。
由于编者水平有限,书中难免有不妥之处,恳请广大读者提出批评和建议,以便进一步完善。
前言
第一部分 ARM基础与开发环境搭建
第一单元 ARM背景知识2
任务一 ARM处理器3
任务二 ARM920T内核5
任务三 S3C2451处理器7
任务四 NEWLab实验箱与ARM核心模块9
第二单元 ARM开发环境搭建13
任务一 开发工具的安装和使用14
任务二 虚拟机的安装24
任务三 交叉编译环境搭建36
任务四 NFS服务器搭建40
第三单元 ARM基础功能实现44
任务一 GPIO接口实验45
任务二 UART接口实验50
任务三 中断实验56
任务四 RTC读写时间64
任务五 按键实验77
第二部分 Linux下的嵌入式应用开发
第四单元 Linux的基本操作84
任务一 Linux系统常用命令85
任务二 全屏编辑器vi87
任务三 Linux Shell91
任务四 Shell编程举例93
第五单元 Linux下编译系统98
任务一 认识GCC交叉编译器99
任务二 认识GDB调试器100
任务三 认识Makefile工程管理器103
任务四 使用autotools工具集108
第六单元 Linux文件I/O编程113
任务一 Linux系统调用及应用程序接口API114
任务二 不带缓存的文件I/O操作116
任务三 Linux串口应用编程123
任务四 标准I/O开发130
第七单元 进程控制开发137
任务一 Linux系统进程概述138
任务二 Linux进程控制编程141
任务三 Linux守护进程152
第八单元 进程间通信159
任务一 管道通信160
任务二 信号通信167
任务三 共享内存176
任务四 消息队列178
第九单元 多线程编程182
任务一 Linux下线程概述183
任务二 生产者消费者问题195
第十单元 网络编程199
任务一 认识TCP/IP200
任务二 TCP程序设计207
任务三 UDP程序设计210
第十一单元 应用开发213
任务一 应用程序设计基础214
任务二 键盘模板应用215
任务三 GPRS模块应用220
任务四 3G/4G模块应用227
任务五 条码识读模块应用235
任务六 液晶模块应用240
任务七 IC/SAM卡模块应用244
任务八 Wi-Fi模块应用251
任务九 蓝牙模块应用256