STM32嵌入式系统开发实战指南:FreeRTOS与LwIP联合移植 (单片机与嵌入式) (李志明;檀永;徐石明) (z-library.sk, 1lib.sk, z-lib.sk)
Author: 李志明;檀永;徐石明
技术
No Description
📄 File Format:
PDF
💾 File Size:
8.3 MB
12
Views
0
Downloads
0.00
Total Donations
📄 Text Preview (First 20 pages)
ℹ️
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
📄 Page
1
(This page has no text content)
📄 Page
2
STM32嵌入式系统开发实战指南 ——FreeRTOS与LwIP联合移植 李志明 等编著 ISBN:978-7-111-41716-3 本书纸版由机械工业出版社于2013年出版,电子版由华章分社(北京 华章图文信息有限公司)全球范围内制作与发行。 版权所有,侵权必究 客服热线:+ 86-10-68995265 客服信箱:service@bbbvip.com 官方网址:www.hzmedia.com.cn 新浪微博 @研发书局 腾讯微博 @yanfabook
📄 Page
3
目录 序言 前言 本书内容及读者对象 致谢 第一篇 平台篇 第1章 ARM处理器简介 1.1 ARM内核处理器沿革 1.2 Cortex内核系列处理器技术特点 1.3 STM32互联型嵌入式控制器 1.4 微控制器选型 第2章 基于STM32F107的开发板 2.1 STM32F107开发板 2.2 主要板载资源 2.3 硬件设计要点 第3章 开发环境 3.1 开发环境及搭建 3.2 相关开发工具 3.3 创建工程 第4章 编程规范
📄 Page
4
4.1 ST固件库编程规范 4.2 基于C语言的嵌入式编程规范 第5章 项目规划 5.1 概述 5.2 系统分析 5.3 系统设计 5.4 系统制造 5.5 系统运用及反馈 5.6 开发团队 第二篇 RTOS篇 第6章 操作系统原理基础知识 6.1 前后台模式应用程序 6.2 嵌入式操作系统 第7章 FreeRTOS嵌入式操作系统 7.1 FreeRTOS特色 7.2 任务管理 7.3 队列管理 7.4 中断管理 7.5 资源管理 7.6 内存管理 7.7 常见错误
📄 Page
5
第8章 基于STM32F107的FreeRTOS移植 8.1 概述 8.2 FreeRTOS移植 8.3 创建测试任务 第三篇 LwIP篇 第9章 TCP/IP协议栈介绍 9.1 引言 9.2 网络分层 9.3 IP协议 9.4 ARP协议与RARP协议 9.5 ICMP 9.6 TCP协议 9.7 UDP协议 9.8 FTP协议 第10章 LwIP轻量级TCP/IP协议栈 10.1 LwIP进程模型 10.2 LwIP缓冲与内存管理 10.3 LwIP网络接口 10.4 LwIP的ARP处理 10.5 LwIP的IP处理 10.6 LwIP的ICMP处理
📄 Page
6
10.7 LwIP的UDP处理 10.8 LwIP的TCP处理 10.9 LwIP的应用程序接口简介 第11章 基于STM32F107的LwIP移植 11.1 ethernetif.c文件的移植 11.2 网络驱动移植 11.3 基于RAW API接口的HelloWorld例程 第四篇 移植篇 第12章 基于FreeRTOS的LwIP协议栈移植 12.1 概述 12.2 FreeRTOS下以太网驱动程序的移植 12.3 LwIP程序移植 第13章 工业通信网关解析 13.1 概述 13.2 编码实现 13.3 通信测试 附录A 开发板原理图 附录B 专业术语 参考文献 配套STM32硬件平台 光盘内容
📄 Page
7
序言 嵌入式系统起源于微型机时代,伴随着网络、通信、多媒体技术 的发展,嵌入式系统的应用已经深入社会生活的各个领域,业已成为 继个人计算机和互联网之后,信息技术领域技术的新热点。 测量与控制的需求一直伴随着人类社会的进步,在人类进入现代 化工业社会后,人们对这种需求有了更高的要求和期待。从以蒸汽机 的发明为标志的工业革命开始,人们对控制有了全新的认识。最初, 人们运用机械原理实现复杂程度不一的机械结构来满足对工程控制的 需求,随着电子技术的发展及其展现的优点,人们又逐渐采用模拟、 数字或混合式的电子控制方式来完成既定的测量控制需求。直到20世 纪70年代,新型的微型计算机凭借其体积小、功耗低、结构简单、可 靠性高、使用方便、性能价格比高等一系列优点,及其表现出的智能 化水平迅速获得了控制专业人士的青睐。例如,将微型计算机经适当 的机械加固和电气改造,并配置相应外围接口电路,即可实现各种复 杂的工程应用,如工况监测、实时控制等。在微型计算机诞生后相当 长的时期,这种将微型计算机嵌入一个对象体系中,实现对象体系的 智能化控制得到了广泛的工程应用。
📄 Page
8
但微型计算机的设计是以商业应用为初衷的,微型计算机的体 积、价位和可靠性都无法满足广大对象系统的嵌入式应用要求。半导 体厂商逐渐意识到嵌入式系统的潜在市场需求,并陆续推出了各具特 色的微型化控制芯片。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拥有更快的运行速 度,可以实现复杂的高速逻辑运算,其具有设计灵活、高集成度、高
📄 Page
9
速、高可靠性、开发周期短、前期投资风险小等优点,在芯片内部可 实现板级电路的功能,能有效提高设计的效率和可靠性。此外,随着 FPGA芯片供应商和第三方公司对应用开发支持的进一步完善,芯片的 设计周期和成本得以进一步压缩。 自嵌入式处理器诞生后的40多年历史中,面向各种不同应用领 域、特色各异的嵌入式处理器件不断出现、升级和换代,广泛应用于 人类的社会生活,也极大地改善了人类的生活。特别在20世纪90年代 后,在网络、通信、多媒体技术应用需求的驱动下,嵌入式处理器经 历了高度的发展和工程应用。随着32位微处理器和32位微控制器成本 大幅下降,它们已经逐渐取代了传统8位、16位微控制器。与此同时, 由于面向嵌入式系统的高端应用的工作速度快,外部设备资源丰富, 加上应用本身的复杂性、可靠性要求等,软件开发的复杂性逐渐提 升,如网络通信设备、电力二次设备、手持终端、多媒体设备、机顶 盒等。这促使嵌入式软件开发工程师渴望摆脱繁重的底层软件开发, 将更多的精力集中于应用层面的开发。嵌入式软件开发工程师希望能 够提供一种类似于微型计算机操作系统的平台,只需根据实际采用的 硬件平台做少量的移植工作即可完成嵌入式系统资源的管理和任务调 度,在此基础上将主要精力集中于任务级代码的实现。 嵌入式系统最初的应用是基于单片机的,大多数以可编程控制器 的形式出现,具有监测、控制、工况指示等功能,在工业和军事应用
📄 Page
10
领域最为普遍。由于受限于系统资源,通常没有获得操作系统的支 持,只能通过汇编语言对系统进行直接控制,所以只能使用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等。 实时操作系统是一种能够在既定时间内完成系统功能,对外部和 内部事件在同步或者异步时间内做出及时响应,并控制所有实时任务 协调一致运行的系统。在实时操作系统中,操作的正确性不仅依赖于 逻辑设计的正确程度,而且与系统任务级时序密切相关。因而,实时 系统具有及时响应和高可靠性等主要特点。通常,实时操作系统有硬 实时和软实时之分,硬实时要求在规定的时间内必须完成既定的操
📄 Page
11
作,否则有可能造成灾难性后果;软实时则只要按照任务的优先级, 尽可能快地完成操作即可,广泛应用于消费类电子产品,这类操作系 统对事件响应没有严格要求,较为关注事件响应的正确性和用户体验 的舒适度,如产品的按键操作应不致使用户产生“反应迟钝”的感 受。当然,上述这种划分仅具有概念上的意义,实时性对不同应用有 着不同的界定,而且大多数嵌入式系统允许软硬两种实时性同时存 在,对系统产生关键影响的事件一般具有严格的时限要求,是硬实时 的,另外一些事件的时限要求则是软实时的,诸如人机交互。也有业 内人士根据系统对任务的响应时间将实时操作系统分为弱实时系统、 一般实时系统和强实时系统。无论如何划分,其本质是对系统事件响 应时间的一种要求和评判。嵌入式软件开发工程师在项目规划时需根 据工程实际需求,在硬件配置、实时操作系统选择和项目成本之间进 行一定的统筹和折中,结合应用层代码开发策略和技巧,完成系统的 实时性要求。 大多数嵌入式实时操作系统采用了微内核结构,即内核只提供诸 如资源管理、内存管理和任务调度等基本功能,而网络通信功能、文 件系统、GUI系统等应用组件均驻留于用户进程(任务)中,或以函数 调用的方式工作。用户可以根据实际工程的需求适当裁剪,选用相应 的组件。嵌入式操作系统与通用操作系统类似,具有管理系统资源、 物理层抽象的功能,能够提供库函数、驱动程序、开发工具集等。但 与通用操作系统相比,嵌入式操作系统在系统实时性、硬件依赖性、
📄 Page
12
软件固化性以及应用专用性等方面,具有更加鲜明的特点。目前,嵌 入式系统的主流趋势是32位嵌入式微处理器或微控制器与实时多任务 操作系统的结合,嵌入式系统往往指的是包含这种资源的系统。 需要指出的是,本书中涉及的“微处理器”和“微控制器”虽无 本质上的区别,但从其组成要素及设计特色来讲,可以总结为如下几 点: ❑硬件结构 微处理器是一个单芯片的处理器,而微控制器则在一块集成电路 芯片中集成了处理器和其他片内外设,功能相对健全,基本构成了一 个完整的微型计算机系统。片内外设通常包括RAM、ROM、串行接口、 并行接口、计时器和中断管理等。微控制器具有体积小、功耗低、结 构简单、可靠性高、使用方便等特点,应用领域遍及国防、工业、汽 车、医疗设备和消费电子等几乎所有的行业和领域。此外,作为面向 控制的设备,为了保证系统的实时性,微控制器必须拥有强大的中断 功能,能够及时响应外界的激励,快速执行上下文切换,因此微控制 器在片上集成了所有处理中断必需的电路。 ❑应用领域 微处理器以微型计算机系统应用为设计初衷,适用于在计算机系 统中处理信息。这也是微处理器的优势所在。微控制器通常用于面向
📄 Page
13
控制的应用,其系统设计追求小型化、低功耗,系统设计时尽可能减 少元器件数量,适用于那些以极少的元件实现对输入/输出设备进行控 制的场合。 ❑指令集特征 由于应用场合不同,微控制器和微处理器的指令集也有所不同。 微处理器的指令集增强了处理功能,使其拥有强大的寻址模式和适于 操作大规模数据的指令。另外,微处理器还具有其他特点,如用户程 序中无法使用特权指令等。微控制器的指令集适用于输入/输出控制。 许多输入/输出的接口是以位为单位寻址的。而微处理器通常不具备这 些强大的位操作能力,因为设计者在设计微处理器时,仅考虑以字节 或更大的单位来操作数据。 ❑处理能力 就处理能力而言,微处理器要远高于微控制器的处理水平,微控 制器以牺牲处理能力来实现其他片内外设和功能。微控制器受限于片 内资源(ROM、RAM),它的指令必须非常精简,大部分指令的长度都 短于1个字节。微控制器指令集的基本特点就是具有精简的编码方案。 而微处理器庞大的指令集使得其编码要远比微控制器复杂。 本书基于意法半导体公司的32位嵌入式微控制器,以FreeRTOS为 嵌入式实时操作系统,讲述了FreeRTOS的移植及工程应用开发的全过
📄 Page
14
程。本书定位于已熟悉STM32寄存器的操作,掌握了基于STM32官方驱 动库的前后台模式应用软件开发的读者或初级嵌入式软件开发工程 师,并希望在此基础上向读者展示嵌入式操作系统和TCP/IP协议的移 植方法和要点。本书第四篇以一个完整工程项目为导引,向读者展示 一个基于STM32F107硬件平台的嵌入式实时操作系统移植开发过程。读 者在学习完本书内容后,将能够独立进行基于嵌入式实时操作系统和 TCP/IP协议的移植和应用系统开发,并能够完成从初级软件开发者到 高级开发者的转变。
📄 Page
15
前言 自20世纪90年代,鉴于多任务支持、开发便捷、便于维护等特 性,同时能够提高系统的稳定性和可靠性,嵌入式实时操作系统 (RTOS)逐渐为广大嵌入式从业人员所接受和认可,越来越多的工程 师加入使用RTOS的队伍。 与此同时,半导体技术的快速发展及市场需求的多样化对RTOS提 出了更高的要求。一方面,新型处理器的大量涌现要求RTOS自身结构 的设计应易于移植,以适应不同硬件架构平台的应用。另一方面,人 们在使用RTOS进行系统设计的同时,不仅希望得到供应商的技术支 持,而且希望获得RTOS的源代码,以便对RTOS做出符合工程实际需求 的裁剪,并降低硬件平台的构建成本。如通常裁剪后的内核对ROM、 RAM的容量占用量更小,用户可以选择更小容量的存储器以降低成本。 为了适应这种市场需求,许多RTOS提供商在出售RTOS时附加了源程序 的代码,在众多的RTOS供应商中也不乏免费开放源代码的RTOS。本书 以一款轻量级开源RTOS为样本,通过适当的例程阐述了嵌入式实时操 作系统任务管理、时间管理、资源共享、内存管理等机制,介绍了 RTOS内核及TCP/IP协议栈的移植和具体使用方法。 本书内容及读者对象
📄 Page
16
全书分为四篇,共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协议栈的移植方法和 要点,并从系统工程的角度简要介绍了嵌入式工程开发的一般步骤和 方法。
📄 Page
17
致谢 本书的顺利完稿与出版离不开本书的编辑张国强先生的鼓励与支 持,他对书稿提出的专业而宝贵的建议使得成书的质量更进一步。笔 者对他在书稿审阅和校对过程中付出的辛勤劳动表示衷心的感谢。本 书在编写过程中参考了大量书籍和资料,参考文献中未能将其一一列 出,在此对书中参考资料的作者一并表示感谢。最后,感谢广大的读 者朋友,感谢您花费时间和精力阅读本书,由于水平有限书中难免存 在疏漏与错误,诚恳地希望您批评指正。
📄 Page
18
第一篇 平台篇 本篇主要介绍基于STM32的硬件平台、开发环境的搭建及在工程应 用中的选型等要点。 ❑第1章 ARM处理器简介 ❑第2章 基于STM32F107的开发板 ❑第3章 开发环境 ❑第4章 编程规范 ❑第5章 项目规划 第1章 ARM处理器简介 本章主要讲述ARM系列处理器的发展沿革,从处理器技术特点的角 度对各系列处理器进行介绍,着重讲述了Cortex内核处理器的技术特 点。最后,简要介绍了意法半导体公司的以Cortex-M3为内核的互联型 控制器。 1.1 ARM内核处理器沿革
📄 Page
19
ARM(Advanced RISC Machines)是微处理器行业的一家知名企 业,1991成立于英国剑桥,该公司主要出售芯片设计技术的授权。人 们将采用ARM技术知识产权(IP)核的微处理器称为ARM微处理器。ARM 公司利用独特的商业模式在全球范围内拥有极其广泛的合作伙伴。ARM 公司将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个 厂商得到的都是ARM公司提供的一套独一无二的ARM相关技术及服务, 这些合作伙伴又保证了大量的开发工具和丰富的第三方资源。利用这 种合作关系,ARM公司很快成为许多全球性RISC标准的缔造者。 以ARM为处理器的应用领域已遍及工业控制、消费类电子产品、通 信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理 器应用约占据了32位RISC微处理器75%以上的市场份额。世界上的主流 半导体厂商已先后发布了基于ARMv4、ARMv5、ARMv6、ARMv7四个架构 的10多个家族的主流嵌入式微控制器和微处理器产品,其中包括以经 典的ARM7、ARM9、ARM11为内核的和以最新发布的Cortex为内核的种类 繁多的微控制器和微处理器,如图1.1所示。目前,以ARM为内核的处 理器大概有上千种,接下来简要介绍ARM处理器中的几个重要内核版 本。
📄 Page
20
图 1.1 ARM处理器及内核 提示 为方便起见,若无特别说明,后面内容对处理器和控制器 不做详细区分,读者可根据上下文含义理解。对于二者的区别前文有 简要的论述,读者可参阅。 1.1.1 传统ARM处理器 1.ARM7处理器 ARM7处理器采用了ARMv4T(冯·诺依曼)体系结构。这种体系结 构将程序指令存储器和数据存储器合并在一起。主要特点就是程序和 数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一
The above is a preview of the first 20 pages. Register to read the complete e-book.
Recommended for You
Loading recommended books...
Failed to load, please try again later