STR71xF嵌入式系统设计和实践
μC/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它提供信号量、带互斥机制的信号量、事件标志、消息信箱、消息队列、内存管理、时钟管理、任务管理等服务,适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中),同时,该系统源代码开放、整洁、一致,注释详尽,适合系统开发。
3 嵌入式系统设计
3.1 硬件设计
该系统的硬件主要由STR710F微处理器,电源、复位、时钟电路,JTAG调试电路,基本的按键和LED显示等人机接口电路和时钟电路所组成。系统设计结构如图1所示。
在硬件上,系统包括基于STR710FZ2TB的ARM开发平台和时钟电路两大部分,其中ARM开发平台由电源部分,复位电路,时钟电路,JTAG调试电路,Boot模式配置电路,ADC接口等组成。
电源部分电路见图2所示。
其中LM1117是稳压集成电路,输入5V,输出3.3V。
复位芯片采用 IMP809S,系统主时钟为16MHz,ADC接口电路可外接模拟信号或用板上模拟电压。
3.2 软件设计
3.2.1 BootLoader设计
简单地说,BootLoader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,Boot Loader 是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的 Boot Loader 几乎是不可能的。另外,由于 Boot Loader 的实现依赖于 CPU 的体系结构,因此大多数 Boot Loader 都分为 stage1 和 stage2 两大部分。依赖于 CPU 体系结构的代码,比如设备初始化代码等,通常都放在 stage1 中,而且通常都用汇编语言来实现,以达到短小精悍的目的。而 stage2 则通常用C语言来实现,这样可以实现给复杂的功能,而且代码会具有更好的可读性和可移植性。
Boot Loader 的 stage1 通常包括以下步骤(以执行的先后顺序):
硬件设备初始化。
为加载 Boot Loader 的 stage2 准备 RAM 空间。
拷贝 Boot Loader 的 stage2 到 RAM 空间中。
设置好堆栈。
跳转到 stage2 的 C 入口点。
Boot Loader 的 stage2 通常包括以下步骤(以执行的先后顺序):
初始化本阶段要使用到的硬件设备。
检测系统内存映射(memory map)。
将 kernel 映像和根文件系统映像从 flash 上读到 RAM 空间中。
为内核设置启动参数。
调用内核。
3.2.2 应用程序设计
本实例主要用FIQ来设计一个时钟,实现一小时计时,由于需要4个7段数码管,考虑到I/O口的数量,所以采用动态显示方式。要点是要掌握ARM7TDMI的快速中断原理和定时器原理,能正确地分配时钟。程序流程图如图8 所示。
图8 时钟程序流程框图
4 开发环境介绍
硬件开发主要采用Protel 99se。软件开发主要采用ADS1.2集成开发环境和EMBEST PowerICE For ARM仿真器。下面着重对ADS1.2集成开发环境进行介绍。
ADS 集成开发环境是ARM 公司推出的ARM 核微控制器集成开发工具,英文全称为ARM Developer Suite,成熟版本为ADS1.2。ADS1.2 支持ARM10 之前的所有ARM 系列微控制器,支持软件调试及JTAG 硬件仿真调试,支持汇编、C、C++源程序,具有编译效率高、系统库功能强等特点,可以在Windows98、Windows XP、Windows2000 以及RedHat Linux上运行。
ADS 1.2 由6 个部分组成,如表1 所示
表1 ADS 1.2 的组成部分
5 结束语
本次设计基本完成预期目标,时钟计时精确稳定可靠。通过本次设计实践,使嵌入式系统课程知识得到了回顾,加深了理解,基本掌握了ARM系统的软硬件开发流程,无论是;理论知识还是实际动手能力都到了较大提高。
参考文献
[1] 田泽.嵌入式系统开发和应用教程[M].北京:北京航空航天大学出版社,2005:1-9.
[2] STR71xF 参考指南(意法半导体公司);
[3] 嵌入式实时操作系统uC/OS-II(第2版) 2003.5 北京航空航天大学出版社 邵贝贝;
[4] 张锡鹤 盛鸿宇.印制电路板电路设计实训教程[M].北京:科学出版社,2005。
[5] Samuel P.Harbison III, Guy L.Steele Jr.C:A Reference Manual Fifth Edition.China Machine Press,2003.
- 实践中搜集整理的PLC编程经验(12-15)
- 轻量级内核虚拟化技术LXC安装部署实践(09-12)
- 应用真空断路器改造少油断路器工程实践(01-16)
- 实践之Qt在Blackfin平台的移植应用(09-14)
- DCS系统的实践应用(06-28)
- 基于FPGA的DSP设计方法(08-26)