首页>参考读物>计算机科学与技术>综合

STM32嵌入式系统开发实战指南:FreeRTOS与LwIP联合移植
作者 : 李志明 檀永 徐石明 等编著
出版日期 : 2013-05-02
ISBN : 978-7-111-41716-3
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 335
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书定位给已熟悉STM32寄存器的操作、掌握了基于STM32官方库的前后台模式应用软件的开发方法,并希望在此基础上向读者展示嵌入式操作系统和TCP/IP协议的移植方法和要点。第四篇以一个完整工程项目为导引,向读者提一个基于Open107V开发板的工程实例开发全过程。读者在学习完本书内容后,将能够独立进行基于嵌入式实时操作系统和TCP/IP协议的移植和应用系统开发。并希望能够引导读者完成从初级软件开发者到高级开发者的转变。

图书特色

首本从系统视角讲解STM32开发规范和编码规范的书,学习嵌入式系统开发必读。
全方位讲解在STM32F107开发板上移植FreeRTOS和LwIP的全过程。
配套极具性价比的硬件开发平台,并提供完整工程文件和源代码,极具可操作性。

STM32嵌入式系统开发实战指南
FreeRTOS与LwIP联合移植
李志明 檀永 徐石明 等编著

对于现在的高校高年级学生而言,能够用C语言实现简单的嵌入式开发已不再是困难的事情。但普遍存在的问题是编码质量不高,缺乏系统性的规划,并且大多停留在简单实现特定功能的层面。本书为具有一定嵌入式开发基础的学生及初涉嵌入式领域的工程师系统性地介绍了嵌入式系统开发的一般过程和注意事项,并着重引荐了国外的一种开源嵌入式实时操作系统内核及TCP/IP协议栈,详述了移植、设计的一般步骤和方法,内容详实全面,特此向广大从事嵌入式开发工作的读者推荐。
—— 东南大学仪器科学与工程学院机器人传感与控制技术研究所 徐宝国老师
RTOS使从事嵌入式软件开发的广大工程师摆脱了繁重复杂的底层开发工作,而将精力集中于应用层软件的开发及系统的稳定性和实时性。或许,很多朋友对微内核的RTOS的稳定性会产生怀疑。事实表明,任何一个健壮的系统都源于严谨、规范化的设计和测试验证,如果没有对设计开发行为的良好规范和约束,最终的产品或系统实现将潜伏无数隐患。本书旨在引导广大读者朋友从系统性开发的角度出发着手具体的工作。本书讲述了嵌入式开发项目始末的一般过程和注意事项,重点介绍了RTOS的移植开发过程和方法,并在此基础上引入TCP/IP协议栈的移植和应用。在此,真诚愿广大读者朋友从中汲取各自成长所需的养分。 
—— 中国电子科技集团公司第二十八研究所高级工程师,IEEE会员 崔桐
如今,某一行业的嵌入式应用水准也从某种意义上反映了相应行业的装备信息化水平。因此,提升嵌入式从业人员的专业技能和素养也是振兴我国各行各业的基础。本书不但为大家介绍了基于RTOS的嵌入式系统开发的一般方法和技巧,而且从嵌入式开发系统工程的角度开拓了读者视野,为有志于提升嵌入式开发水平,培养全面专业素养的读者朋友提供了一种值得借鉴或学习的方法。在此,也希望本书能引起广大嵌入式从业人员的有益思考。
—— 西安交通大学电气工程学院,IEEE会员,刘凌老师
使用过RTOS的朋友应该都会有这样的感受:一旦熟悉了某个RTOS,并掌握了其使用方法,就更容易依赖上它。这是因为RTOS能够使程序构建得更有逻辑性,而不必在一个轮询的死循环中精心构思设计方法和模式。RTOS可以将应用程序分解成多个具体的任务,每个任务完成相对独立的功能,任务间通过内核提供的某种机制进行通信或资源共享,这样就使得程序开发变得更加容易,提高了开发效率,缩短了开发周期,也便于维护。更为重要的是,RTOS能够对外部事件在确定的时限内予以响应,即RTOS的实时特性。这也是嵌入式实时系统最重要的特性之一。然而,RTOS的复杂性往往容易使初学者望而生畏。为此,本书通过介绍一款简洁易用的轻量级开源RTOS,展示了基于RTOS的嵌入式系统开发方法及要领,并在此基础上进行了TCP/IP协议栈的移植,着重讲述了移植的过程、方法和注意事项。此外,本书还讲述了在项目论证、编码实现环节中的注意事项。
—— FreeRTOS中国站长 杨波

前:
随着物联网时代的到来,嵌入式系统呈现两个典型特征:首先是用户需求更新速度加快,产品上市周期越来越短;其次是产品联网的需求越来越强烈。
嵌入式实时操作系统可以将产品的应用开发和底层开发有效分层,这样在产品更新的过程中,仅仅需要更改底层接口。这样做不仅可以增强代码可读性,而且可以加快产品的开发周期。因此,掌握嵌入式实时操作系统和网络应用开发相关技术已经迫在眉睫。
本书以业界最流行的微处理器STM32为平台,详细剖析了开源嵌入式实时操作系统FreeRTOS和TCP/IP开源协议栈LwIP的移植过程,为想要学习嵌入式系统开发的读者扫清了学习这两门关键技术的障碍。

李志明 研发工程师,毕业于东南大学仪器科学与工程学院。现任职于中国电力科学研究院,主要从事科研项目的研究与开发,并参与相关行业标准、企业标准的制定工作。先后参与多项国家“863”计划、国家能源局和国家电网公司重大科技项目。研究领域涉及智能用电及检测技术、嵌入式软硬件开发等。
檀  永 研发工程师,毕业于苏州大学电子信息学院通信工程系,现任职于国电南瑞科技股份公司研发中心。长期从事电力二次监控设备的研发工作,对嵌入式软硬件开发有着丰富的经验,对嵌入式操作系统及TCP/IP协议栈有着深入的研究和丰富的实践经验。
徐石明 教授级高级工程师,九三学社成员,毕业于哈尔滨工业大学电磁测量及仪表专业。先后任国电自动化研究院配电公司副总经理、国电南瑞科技股份公司研发中心主任,现担任中国电力科学研究院用电与能效研究所所长,兼任中国电机工程学会供用电专委会委员,电力系统控制及通信标准化技术委员会变电站工作组成员,电力行业标准的起草人之一,IEC/TC57 WG12工作组成员。先后主持或参与多项国家“863”计划、国家能源局和国家电网公司重大科技项目,并获多项国家科技进步奖和省部级科技奖。
丁孝华 中国电力科学研究院用电与能效研究所副所长,研究员级高级工程师。长期从事用电自动化、电动汽车充换电、配电自动化、广域同步相量测量技术等领域的研究工作。承担和参与多项国家“863”计划、国家能源局和国家电网公司重大科技项目,并参与相关国家标准、行业标准和企业标准的制定工作,先后获得多项省部级科技奖。
桑  林 高级工程师,长期从事电力系统自动化产品的设计开发、技术支撑、工程服务,从事智能用电相关试验验证能力建设,承担参与相关行业标准、企业标准的制定工作。参与多项国家“863”计划、国家能源局和国家电网公司重大科技项目,先后获得多项科技奖。

图书前言

自20世纪90年代,鉴于多任务支持、开发便捷、便于维护等特性,同时能够提高系统的稳定性和可靠性,嵌入式实时操作系统(RTOS)逐渐为广大嵌入式从业人员所接受和认可,越来越多的工程师加入使用RTOS的队伍。
  与此同时,半导体技术的快速发展及市场需求的多样化对RTOS提出了更高的要求。一方面,新型处理器的大量涌现要求RTOS自身结构的设计应易于移植,以适应不同硬件架构平台的应用。另一方面,人们在使用RTOS进行系统设计的同时,不仅希望得到供应商的技术支持,而且希望获得RTOS的源代码,以便对RTOS做出符合工程实际需求的裁剪,并降低硬件平台的构建成本。如通常裁剪后的内核对ROM、RAM的容量占用量更小,用户可以选择更小容量的存储器以降低成本。为了适应这种市场需求,许多RTOS提供商在出售RTOS时附加了源程序的代码,在众多的RTOS供应商中也不乏免费开放源代码的RTOS。本书以一款轻量级开源RTOS为样本,通过适当的例程阐述了嵌入式实时操作系统任务管理、时间管理、资源共享、内存管理等机制,介绍了RTOS内核及TCP/IP协议栈的移植和具体使用方法。
本书内容及读者对象
  全书分为四篇,共13章。第一篇(第1~5章)讲述了ARM处理器的发展沿革及技术特点、基于STM32的硬件平台、开发环境的搭建及在工程应用中的选型要点。同时,结合笔者的工程开发经验,简要介绍了成为一名合格嵌入式软件开发工程师应该具备的工程素养。对于已熟悉ARM硬件知识的读者,可跳过第1~3章的内容。第二篇(第6~8章)简要介绍了嵌入式实时操作系统的基本概念,重点讲述了一个轻量级嵌入式实时操作系统的使用方法,并给出了基于STM32微控制器的移植代码实现。第三篇(第9~11章)结合TCP/IP原理介绍LwIP开源轻量级协议栈的基本原理及常见应用模式,第11章实现了前后台模式下的TCP/IP协议栈移植,并给出了源代码。第四篇(第12~13章)首先介绍了在STM32F107微控制器上移植FreeRTOS和LwIP的全过程,随后介绍了工业通信网关的一般实现方式,作为示例,简要实现了以太网实现通信报文的转发和板载资源的控制。
  本书以已熟悉STM32寄存器的操作、掌握基于STM32官方驱动库的前后台模式应用软件开发的读者或初级嵌入式软件开发工程师为对象,向读者讲述了嵌入式实时操作系统和TCP/IP协议栈的移植方法和要点,并从系统工程的角度简要介绍了嵌入式工程开发的一般步骤和方法。
致谢
  本书的顺利完稿与出版离不开本书的编辑张国强先生的鼓励与支持,他对书稿提出的专业而宝贵的建议使得成书的质量更进一步。笔者对他在书稿审阅和校对过程中付出的辛勤劳动表示衷心的感谢。本书在编写过程中参考了大量书籍和资料,参考文献中未能将其一一列出,在此对书中参考资料的作者一并表示感谢。最后,感谢广大的读者朋友,感谢您花费时间和精力阅读本书,由于水平有限书中难免存在疏漏与错误,诚恳地希望您批评指正。

上架指导

嵌入式

封底文字

对于现在的高校高年级学生而言,能够用C语言实现简单的嵌入式开发应用已不再是困难的事情。但普遍存在的问题是编码质量通常不高,缺乏系统性的规划和开发,大多停留在特定功能简单实现的层面。本书为具有一定嵌入式开发基础的学生及初涉嵌入式领域的工程师而编写,系统性地介绍了嵌入式系统开发的一般过程和注意事项,并着重为大家引荐了一种国外的开源嵌入式实时操作系统内核及TCP/IP协议栈,详述了移植、设计的一般步骤和方法,内容翔实全面。

——东南大学仪器科学与工程学院机器人传感与控制技术研究所 徐宝国老师

RTOS使广大从事嵌入式软件开发的工程师朋友摆脱了繁重复杂的底层开发工作,而将精力集中于应用层软件的开发及系统的稳定性和实时性。或许,很多朋友对微内核的RTOS的稳定性会产生怀疑。事实表明,任何一个健壮的系统都源于严谨、规范化的设计和测试验证,如果没有对设计开发行为的良好规范和约束,最终的产品或系统实现将潜伏无数的隐患。本书为广大读者提供了这样一个导向,旨在引导广大读者朋友从系统性开发的角度出发着手具体的工作。该书讲述了嵌入式开发项目始末的一般过程和注意事项,重点介绍了RTOS的移植开发过程和方法,并在此基础上的引入TCP/IP协议栈的移植和应用。在此,真诚祝愿广大读者朋友从中汲取各自成长所需的养分。 

——中国电子科技集团公司第二十八研究所高级工程师,IEEE会员 崔桐

如今,某一行业的嵌入式应用水准也从某种意义上反映了相应行业的装备信息化水平。因此,提升嵌入式从业人员的专业技能和素养也是振兴我国各行各业的基础。这本书不但为大家介绍了基于RTOS的嵌入式系统开发的一般方法和技巧,也从嵌入式开发系统工程的角度开拓了读者视野,为有志于提升嵌入式开发水平,培养全面专业素养的读者朋友提供了一种值得借鉴或学习的方法。在此,也希望该书能引起广大嵌入式从业人员的有益思考。

——西安交通大学电气工程学院,IEEE会员,刘凌老师

使用过RTOS的朋友应该都会有这样的感受:一旦你熟悉了某个RTOS,并掌握了其使用方法,就更容易依赖上它。RTOS能够使程序构建得更有逻辑性,而不必在一个轮询的死循环中精心构思设计方法和模式。RTOS可以将应用程序分解成多个具体的任务,每个任务完成相对独立的功能,任务间通过内核提供的某种机制进行通信或资源共享,这样就使得程序开发变得更加容易,提高了开发效率,缩短了开发周期,也便于维护。最为重要的是,RTOS能够对外部事件在确定的时限内予以响应,即RTOS的实时特性。这也是嵌入式实时系统最重要的特性之一。然而,RTOS的复杂性往往使初学者望而生畏。为此,本书通过介绍一款简洁易用的轻量级开源RTOS,向读者展示基于RTOS的嵌入式系统开发方法及要领,并以在此基础上进行TCP/IP协议栈的移植,着重讲述移植的过程、方法和注意事项。此外,本书还讲述了在项目论证、编码实现环节中的注意事项。

——FreeRTOS中国站长 杨波

图书序言

嵌入式系统起源于微型机时代,伴随着网络、通信、多媒体技术的发展,嵌入式系统的应用已经深入社会生活的各个领域,业已成为继个人计算机和互联网之后,信息技术领域技术的新热点。
  测量与控制的需求一直伴随着人类社会的进步,在人类进入现代化工业社会后,人们对这种需求有了更高的要求和期待。从以蒸汽机的发明为标志的工业革命开始,人们对控制有了全新的认识。最初,人们运用机械原理实现复杂程度不一的机械结构来满足对工程控制的需求,随着电子技术的发展及其展现的优点,人们又逐渐采用模拟、数字或混合式的电子控制方式来完成既定的测量控制需求。直到20世纪70年代,新型的微型计算机凭借其体积小、功耗低、结构简单、可靠性高、使用方便、性能价格比高等一系列优点,及其表现出的智能化水平迅速获得了控制专业人士的青睐。例如,将微型计算机经适当的机械加固和电气改造,并配置相应外围接口电路,即可实现各种复杂的工程应用,如工况监测、实时控制等。在微型计算机诞生后相当长的时期,这种将微型计算机嵌入一个对象体系中,实现对象体系的智能化控制得到了广泛的工程应用。
  但微型计算机的设计是以商业应用为初衷的,微型计算机的体积、价位和可靠性都无法满足广大对象系统的嵌入式应用要求。半导体厂商逐渐意识到嵌入式系统的潜在市场需求,并陆续推出了各具特色的微型化控制芯片。1976年,Intel公司推出了MCS-48单片机,开创了将微处理机系统的各种CPU以外的资源集成到CPU硅片上的时代。1980年,Intel公司对MCS-48单片机进行了全面完善,推出了8位MCS-51单片机,并获得巨大成功,奠定了嵌入式系统的单片机应用模式。1984年,Intel公司又推出了16位8096系列并将其称为嵌入式微控制器,“嵌入式”一词第一次在微处理机领域出现,这标志嵌入式应用的兴起与快速发展的时代来临。
  随着半导体制造工艺的进步,为了满足高速、实时信号处理的市场需求,数字信号处理芯片(DSP)及可编程逻辑器件(PLD、CPLD、FPGA)等高速嵌入式处理器件应运而生。DSP是将模拟信号转换成数字信号以后进行高速实时处理的专业处理器,在其诞生的最初只能完成既定的逻辑算术运算,但其处理速度已远远超越当时的微控制器。随着集成电路技术的发展,DSP处理能力得到了不断提升,当前基于DSP的工程应用主要着眼于算法设计和实现,已广泛应用于数字通信、测量控制、图像处理等领域。可编程逻辑器件的发展始于20世纪70年代,在经历了40多年的发展后,已形成了以现场可编程门阵列器件为代表的特色各异的信号处理器件。FPGA通常比DSP拥有更快的运行速度,可以实现复杂的高速逻辑运算,其具有设计灵活、高集成度、高速、高可靠性、开发周期短、前期投资风险小等优点,在芯片内部可实现板级电路的功能,能有效提高设计的效率和可靠性。此外,随着FPGA芯片供应商和第三方公司对应用开发支持的进一步完善,芯片的设计周期和成本得以进一步压缩。
  自嵌入式处理器诞生后的40多年历史中,面向各种不同应用领域、特色各异的嵌入式处理器件不断出现、升级和换代,广泛应用于人类的社会生活,也极大地改善了人类的生活。特别在20世纪90年代后,在网络、通信、多媒体技术应用需求的驱动下,嵌入式处理器经历了高度的发展和工程应用。随着32位微处理器和32位微控制器成本大幅下降,它们已经逐渐取代了传统8位、16位微控制器。与此同时,由于面向嵌入式系统的高端应用的工作速度快,外部设备资源丰富,加上应用本身的复杂性、可靠性要求等,软件开发的复杂性逐渐提升,如网络通信设备、电力二次设备、手持终端、多媒体设备、机顶盒等。这促使嵌入式软件开发工程师渴望摆脱繁重的底层软件开发,将更多的精力集中于应用层面的开发。嵌入式软件开发工程师希望能够提供一种类似于微型计算机操作系统的平台,只需根据实际采用的硬件平台做少量的移植工作即可完成嵌入式系统资源的管理和任务调度,在此基础上将主要精力集中于任务级代码的实现。
  嵌入式系统最初的应用是基于单片机的,大多数以可编程控制器的形式出现,具有监测、控制、工况指示等功能,在工业和军事应用领域最为普遍。由于受限于系统资源,通常没有获得操作系统的支持,只能通过汇编语言对系统进行直接控制,所以只能使用8位的单片机芯片来运行一些单线程的程序。20世纪80年代,随着I/O接口、串行接口以及RAM、ROM等外设部件集成在芯片微处理器中,芯片制造商推出了面向I/O设计的微控制器,一经推出便迅速得到了市场和专业人士的认可。与此同时,业界出现了功能较为简单的“操作系统”雏形,使得开发周期和效率得到了一定的提升。直到20世纪90年代,在分布控制、柔性制造、网络通信和信息家电等巨大需求的驱动下,嵌入式系统进一步飞速发展,而面向实时信号处理的嵌入式处理器也向高速度、高精度、低功耗的方向发展。随着硬件实时性要求的提高,嵌入式系统的软件规模不断扩大,复杂程度也逐渐提高,实时多任务操作系统(Real-Time Operating System,RTOS)诞生,并开始成为嵌入式系统的主流,例如WindRiver公司的VxWorks、QNX系统软件公司的QNX、嵌入式Linux、微软公司的Windows CE、美国系统集成公司的pSOS、Micrium公司的uC/OS、 FreeRTOS、RT-thread等。
  实时操作系统是一种能够在既定时间内完成系统功能,对外部和内部事件在同步或者异步时间内做出及时响应,并控制所有实时任务协调一致运行的系统。在实时操作系统中,操作的正确性不仅依赖于逻辑设计的正确程度,而且与系统任务级时序密切相关。因而,实时系统具有及时响应和高可靠性等主要特点。通常,实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成既定的操作,否则有可能造成灾难性后果;软实时则只要按照任务的优先级,尽可能快地完成操作即可,广泛应用于消费类电子产品,这类操作系统对事件响应没有严格要求,较为关注事件响应的正确性和用户体验的舒适度,如产品的按键操作应不致使用户产生“反应迟钝”的感受。当然,上述这种划分仅具有概念上的意义,实时性对不同应用有着不同的界定,而且大多数嵌入式系统允许软硬两种实时性同时存在,对系统产生关键影响的事件一般具有严格的时限要求,是硬实时的,另外一些事件的时限要求则是软实时的,诸如人机交互。也有业内人士根据系统对任务的响应时间将实时操作系统分为弱实时系统、一般实时系统和强实时系统。无论如何划分,其本质是对系统事件响应时间的一种要求和评判。嵌入式软件开发工程师在项目规划时需根据工程实际需求,在硬件配置、实时操作系统选择和项目成本之间进行一定的统筹和折中,结合应用层代码开发策略和技巧,完成系统的实时性要求。
  大多数嵌入式实时操作系统采用了微内核结构,即内核只提供诸如资源管理、内存管理和任务调度等基本功能,而网络通信功能、文件系统、GUI系统等应用组件均驻留于用户进程(任务)中,或以函数调用的方式工作。用户可以根据实际工程的需求适当裁剪,选用相应的组件。嵌入式操作系统与通用操作系统类似,具有管理系统资源、物理层抽象的功能,能够提供库函数、驱动程序、开发工具集等。但与通用操作系统相比,嵌入式操作系统在系统实时性、硬件依赖性、软件固化性以及应用专用性等方面,具有更加鲜明的特点。目前,嵌入式系统的主流趋势是32位嵌入式微处理器或微控制器与实时多任务操作系统的结合,嵌入式系统往往指的是包含这种资源的系统。
  需要指出的是,本书中涉及的“微处理器”和“微控制器”虽无本质上的区别,但从其组成要素及设计特色来讲,可以总结为如下几点:
  硬件结构
  微处理器是一个单芯片的处理器,而微控制器则在一块集成电路芯片中集成了处理器和其他片内外设,功能相对健全,基本构成了一个完整的微型计算机系统。片内外设通常包括RAM、ROM、串行接口、并行接口、计时器和中断管理等。微控制器具有体积小、功耗低、结构简单、可靠性高、使用方便等特点,应用领域遍及国防、工业、汽车、医疗设备和消费电子等几乎所有的行业和领域。此外,作为面向控制的设备,为了保证系统的实时性,微控制器必须拥有强大的中断功能,能够及时响应外界的激励,快速执行上下文切换,因此微控制器在片上集成了所有处理中断必需的电路。
  应用领域
  微处理器以微型计算机系统应用为设计初衷,适用于在计算机系统中处理信息。这也是微处理器的优势所在。微控制器通常用于面向控制的应用,其系统设计追求小型化、低功耗,系统设计时尽可能减少元器件数量,适用于那些以极少的元件实现对输入/输出设备进行控制的场合。
  指令集特征
  由于应用场合不同,微控制器和微处理器的指令集也有所不同。微处理器的指令集增强了处理功能,使其拥有强大的寻址模式和适于操作大规模数据的指令。另外,微处理器还具有其他特点,如用户程序中无法使用特权指令等。微控制器的指令集适用于输入/输出控制。许多输入/输出的接口是以位为单位寻址的。而微处理器通常不具备这些强大的位操作能力,因为设计者在设计微处理器时,仅考虑以字节或更大的单位来操作数据。
  处理能力
  就处理能力而言,微处理器要远高于微控制器的处理水平,微控制器以牺牲处理能力来实现其他片内外设和功能。微控制器受限于片内资源(ROM、RAM),它的指令必须非常精简,大部分指令的长度都短于1个字节。微控制器指令集的基本特点就是具有精简的编码方案。而微处理器庞大的指令集使得其编码要远比微控制器复杂。
  本书基于意法半导体公司的32位嵌入式微控制器,以FreeRTOS为嵌入式实时操作系统,讲述了FreeRTOS的移植及工程应用开发的全过程。本书定位于已熟悉STM32寄存器的操作,掌握了基于STM32官方驱动库的前后台模式应用软件开发的读者或初级嵌入式软件开发工程师,并希望在此基础上向读者展示嵌入式操作系统和TCP/IP协议的移植方法和要点。本书第四篇以一个完整工程项目为导引,向读者展示一个基于STM32F107硬件平台的嵌入式实时操作系统移植开发过程。读者在学习完本书内容后,将能够独立进行基于嵌入式实时操作系统和TCP/IP协议的移植和应用系统开发,并能够完成从初级软件开发者到高级开发者的转变。

作者简介

李志明 檀永 徐石明 等编著:李志明,研发工程师,毕业于东南大学仪器科学与工程学院。现任职于中国电力科学研究院,主要从事科研项目的研究与开发,并参与相关行业标准、企业标准的制定工作。先后参与了多项国家“863计划”、国家能源局和国家电网公司重大科技项目。研究领域涉及智能用电及检测技术、嵌入式软硬件开发等。 檀永,研发工程师,毕业于苏州大学电子信息学院通信工程系,现任职于国电南瑞科技股份有限公司研发中心。长期从事电力二次监控设备的研发工作,对嵌入式软硬件开发拥有丰富经验,对嵌入式操作系统及TCP/IP协议栈有深入的研究和丰富的实践经验。 徐石明,教授级高级工程师,九三学社成员,毕业于哈尔滨工业大学电磁测量及仪表专业。先后任国电自动化研究院配电公司副总经理、国电南瑞科技股份公司研发中心主任,现担任中国电力科学研究院用电与能效研究所所长,兼任中国电机工程学会供用电专委会委员,电力系统控制及通信标准化技术委员会变电站工作组成员,电力行业标准的起草人之一,IEC/TC57 WG12工作组成员。先后主持或参与了多项国家“863计划”、国家能源局和国家电网公司重大科技项目,并获多项国家科技进步奖和省部级科技奖。 丁孝华,中国电力科学研究院用电与能效研究所副所长,研究员级高级工程师。长期从事用电自动化、电动汽车充换电、配电自动化、广域同步相量测量技术等领域的研究工作。承担和参与了多项国家“863计划”、国家能源局和国家电网公司重大科技项目,并参与相关国家标准、行业标准和企业标准的制定工作,先后获得多项省部级科技奖项。 桑林,高级工程师,长期从事电力系统自动化产品的设计开发、技术支撑、工程服务,从事智能用电相关试验验证能力建设,参与相关行业标准、企业标准的制定工作。参与了多项国家“863计划”、国家能源局和国家电网公司重大科技项目,先后获得多项科技奖励。

图书目录

序 言
前 言
第一篇 平台篇
第1章 ARM处理器简介 2
1.1 ARM内核处理器沿革 2
1.1.1 传统ARM处理器 3
1.1.2 Cortex内核处理器 4
1.2 Cortex内核系列处理器技术特点 8
1.2.1 ARM Cortex-M系列处理器 8
1.2.2 ARM Cortex-R系列处理器 10
1.2.3 ARM Cortex-A系列处理器 11
1.3 STM32互联型嵌入式控制器 12
1.4 微控制器选型 14
1.4.1 选型因素 14
1.4.2 选型示例 17
第2章 基于STM32F107的开发板 18
2.1 STM32F107开发板 18
2.2 主要板载资源 19
2.2.1 10/100M以太网接口 19
2.2.2 CAN总线接口 27
2.2.3 RS485总线接口 35
2.2.4 其他总线接口 37
2.3 硬件设计要点 44
2.3.1 电磁兼容问题 44
2.3.2 信号完整性 45
2.3.3 电源完整性 47
第3章 开发环境 50
3.1 开发环境及搭建 50
3.1.1 常见开发环境 50
3.1.2 IAR EWARM安装 52
3.1.3 RealView MDK安装 54
3.2 相关开发工具 57
3.3 创建工程 58
第4章 编程规范 72
4.1 ST固件库编程规范 72
4.1.1 缩写 72
4.1.2 命名规则 73
4.1.3 编码规则 73
4.2 基于C语言的嵌入式编程规范 77
4.2.1 源代码的排版 77
4.2.2 源代码的注释 80
4.2.3 标识符命名 86
4.2.4 代码可读性 88
4.2.5 变量、结构 90
4.2.6 函数、过程 94
4.2.7 可测性 102
4.2.8 程序效率 106
4.2.9 质量保证 109
4.2.10 代码编辑、编译、审查 115
4.2.11 测试与维护 116
4.2.12 宏定义 116
第5章 项目规划 118
5.1 概述 118
5.2 系统分析 118
5.3 系统设计 119
5.4 系统制造 119
5.5 系统运用及反馈 120
5.6 开发团队 120
5.6.1 团队负责人 120
5.6.2 调研人员 121
5.6.3 开发人员 122
第二篇 RTOS篇
第6章 操作系统原理基础知识 126
6.1 前后台模式应用程序 126
6.2 嵌入式操作系统 126
6.2.1 相关基本概念 126
6.2.2 系统调用 127
6.2.3 操作系统结构 127
6.2.4 进程与任务 129
6.2.5 进程间的通信 129
6.2.6 进程调度 129
6.2.7 存储管理 130
第7章 FreeRTOS嵌入式操作系统 131
7.1 FreeRTOS特色 131
7.2 任务管理 131
7.2.1 任务函数 131
7.2.2 基本任务状态 132
7.2.3 任务创建 133
7.2.4 任务的优先级 138
7.2.5 非运行状态 141
7.2.6 空闲任务及回调函数 147
7.2.7 改变任务优先级 148
7.2.8 删除任务 151
7.2.9 调度算法概述 153
7.3 队列管理 155
7.3.1 概述 155
7.3.2 使用队列 157
7.3.3 大型数据单元传输 168
7.4 中断管理 169
7.4.1 延迟中断处理 169
7.4.2 计数信号量 175
7.4.3 在中断服务例程中使用队列 179
7.4.4 中断嵌套 184
7.5 资源管理 185
7.5.1 基本概念 185
7.5.2 临界区与挂起调度器 187
7.5.3 互斥量 189
7.5.4 互斥的另一种实现 195
7.6 内存管理 199
7.6.1 概述 199
7.6.2 内存分配方案范例 199
7.7 常见错误 202
7.7.1 概述 202
7.7.2 栈溢出 202
7.7.3 其他常见错误 204
第8章 基于STM32F107的FreeRTOS移植 206
8.1 概述 206
8.2 FreeRTOS移植 206
8.2.1 portmacro.h头文件 206
8.2.2 port.c源文件 209
8.2.3 portasm.s汇编源文件 211
8.2.4 其他问题 215
8.3 创建测试任务 215
第三篇 LwIP篇
第9章 TCP/IP协议栈介绍 220
9.1 引言 220
9.2 网络分层 220
9.2.1 OSI七层参考模型 220
9.2.2 TCP/IP分层 222
9.2.3 TCP/IP协议簇的协议 223
9.3 IP协议 224
9.4 ARP协议与RARP协议 225
9.5 ICMP 226
9.6 TCP协议 227
9.7 UDP协议 229
9.8 FTP协议 230
第10章 LwIP轻量级TCP/IP协议栈 232
10.1 LwIP进程模型 232
10.2 LwIP缓冲与内存管理 233
10.2.1 LwIP动态内存管理机制 233
10.2.2 LwIP的缓冲管理机制 236
10.3 LwIP网络接口 240
10.4 LwIP的ARP处理 245
10.5 LwIP的IP处理 248
10.6 LwIP的ICMP处理 251
10.7 LwIP的UDP处理 252
10.8 LwIP的TCP处理 254
10.8.1 TCP处理流程概述 254
10.8.2 TCP控制块 255
10.8.3 LwIP的TCP滑动窗口 259
10.8.4 LwIP的TCP超时与重传 260
10.8.5 LwIP的TCP拥塞控制 262
10.8.6 LwIP的TCP定时器 263
10.9 LwIP的应用程序接口简介 264
10.9.1 RAW API接口 264
10.9.2 Sequential API接口 267
第11章 基于STM32F107的LwIP移植 274
11.1 ethernetif.c文件的移植 274
11.1.1 ethernetif_init函数 274
11.1.2 low_level_init函数 274
11.1.3 ethernetif_input函数 276
11.1.4 low_level_input函数 276
11.1.5 low_level_output函数 277
11.2 网络驱动移植 278
11.2.1 以太网控制器概述 278
11.2.2 以太网控制器硬件配置 279
11.2.3 以太网控制器硬件的引脚配置 282
11.2.4 以太网驱动之接收 283
11.2.5 以太网驱动之发送 284
11.2.6 其他注意事项 285
11.3 基于RAW API接口的HelloWorld例程 287
第四篇 移植篇
第12章 基于FreeRTOS的LwIP协议栈移植 294
12.1 概述 294
12.2 FreeRTOS下以太网驱动程序的移植 295
12.3 LwIP程序移植 296
12.3.1 以太网接口文件ethernetif.c的移植 296
12.3.2 操作系统模拟层文件sys_arch.c的移植 298
第13章 工业通信网关解析 306
13.1 概述 306
13.2 编码实现 306
13.3 通信测试 310
附录A 开发板原理图 313
附录B 专业术语 319
参考文献 321

教学资源推荐
作者: (美)William Stallings 著
作者: 黄宜华 主编 苗凯翔 副主编
作者: [美]詹森 D.巴克斯(Jason D. Bakos)著
作者: [美]肯尼思 H. 罗森(Kenneth H. Rosen)著
参考读物推荐
作者: 林源渠 李正元 周民强
作者: (美) Johnson M. Hart 著
作者: [美]马尔奇·哈弗贝克(Marijn Haverbeke) 著
作者: 张璇等著