STM-CortexM3系列微处理器软件体系的自动架构

1 ARM系列微处理器软件架构工具介绍

1.1 技术背景

嵌入式系统广泛应用,已经渗透到科学研究、工程设计、工业过程监控、交通管理、信息家电、智能家庭管理、环境监测、军事技术、气象探测、电子商务、各类产业和商业文化艺术、娱乐业以及人们的日常生活的方方面面中,从家用洗衣机、电冰箱,到作为交通工具的自行车、小汽车,再到办公室里的远程会议系统等等,处处都是可以使用嵌入式技术开发和改造的产品。

在各类嵌入式应用产品中,普遍采用的是以各种ARM微处理/控制器为核心的嵌入式应用系统。精简指令集RSIC(Reduce Instruction Set Computing)ARM微处理/控制器内核,以性能优良、可靠高效、经济实用,被广泛采用。很多知名半导体厂商都推出了以各种ARM内核为核心CPU(Central Processing Unit)、附加各类常用外设和接口的单片高集成微处理/控制器。

嵌入式应用产品的研发,主要是相关的嵌入式应用系统的设计,其中重要的嵌入式软件体系设计中必不可少的基本设计是嵌入式软件体系的架构。嵌入式软件体系架构,通常采用混合编程形式,以加速研发的实现,主要的设计语言多采用C/C++,部分含有Java虚拟机的ARM微处理/控制器的主要设计语言是Java。嵌入式软件体系框架中,需要设计的程序有基本的启动程序、异常/中断处理程序、所用外设与接口的初始化配置与操作驱动程序、主程序文件、嵌入式实时操作系统内核的最小选配或嵌入移植、多任务的分配与同步/通信程序、实时监控程序等的基于底层硬体的软件,其中启动代码部分和实时性要求较高的部分代码必须采用ARM指令集汇编语言编写。

编制嵌入式ARM微处理/控制器软件体系框架,必须熟悉所选ARM内核的构造及其异常中断机制、存储体系构造、ARM/Thumb汇编指令集,熟悉所用ARM系列微处理/控制器件的特点及其片内模块/外设/接口的构造与操作,熟悉所选嵌入式实时操作系统E-RTOS(Embedded Real Time Operation System)的移植需求及其对底层硬体驱动的特殊实现要求。这里的熟悉,不是一般的所谓了解,而是透彻的理解,否则就不可能用活活用

ARM指令集,有基本的ARMThumb指令集,有增强的双Thumb指令集和浮点运算指令集,更有针对不同内核的特殊指令集。有ARMxCortex-MxCortex-Ax等众多ARM内核,有Philips-NXPSamsungSTMIntelSTM等知名半导体厂商在生产不同类型的各种ARM微处理/控制器件。每种型号的ARM微处理/控制器件都集成有或多或少的各类常用片内外设或接口。各类常用的片内外设或接口,多达几十个。各类常用E-RTOS,对底层硬体更有不同的依赖和要求。

不同ARM内核、不同半导体厂商、不同的具体ARM微处理/控制器件,都有100个左右的配置、操作和状态寄存器,复杂的ARM微处理/控制器件则多达数百个。寄存器的二进制位数通常为81632位,每个寄存器的单个或数个位又有不同的涵义。这些寄存器中,有些是关于ARM-CPU的,有些是关于微处理/控制器的片内外设和接口的。

所以说,使用一款ARM微处理/控制器件,进行嵌入式软件体系设计,需要花费大部分时间进行嵌入式软件体系框架,并且需要不断的软件测试和调试,对设计人员能力的要求极高,很难一蹴而就。

嵌入式软件体系框架,迫切需要在保证可靠、高效、精炼、易用的前提下做到智能化、自动化、标准化、模块化,以缩短产品研发时间和软件开发成本,加速软件设计效率。“ARM系列微处理器软件架构工具就是这种广泛迫切需求的产物。有了该软件体系架构工具,对所用ARM微处理/控制器件,就可以停留在了解而不是众多的熟悉了。

1.2 应用领域

ARM系列微处理器软件架构工具,展现了一种嵌入式应用软件体系的快速设计,主要用于以各种ARM微处理/控制器为核心的嵌入式应用系统软件体系的快速构建,应用领域包括工业过程的检测与控制、语音/图像的处理与解压缩、仪表仪器、家用电器、便携式移动通讯、个人数字助理产品、消费电子、航空航天、军事等行业。

嵌入式应用体系设计中,做好具体的ARM硬件体系后,就可以应用该软件架构工具快速产生所需的关键性的基于硬体的基本程序框架了,之后,就是在此框架下编写功能代码了,整个嵌入式系统的设计过程得以大大地简化,产品的研发周期也得以极大地缩短。

ARM系列微处理器软件架构工具,不仅可以广泛适用于各级嵌入式软硬件设计人员的ARM单片机SCM(Single Chip Microcomputer)FPGA(Field Programmable Gate Array)-SoPC(System on Programmale Chip)的研发,也可以大量应用于各类高校/职校的嵌入式应用系统设计与机电一体化专业的学员的实践教育培训。

1.3 内容简介

ARM系列微处理器软件架构工具的目的,在于提供一种在保证可靠、高效、精炼、易用的前提下做到智能化、自动化、标准化、模块化的ARM系列微处理器的软件体系架构的简易途径,以快速有效地解决以下问题:怎样在一个硬件平台上建立并运行起一个最小的基本软件体系?怎样通过软件与系统的各种外围设备打交道?怎样通过系统的各种接口在软件上实现和外部通信?怎样建立针对具体IDEE-RTOS的多任务应用软件框架并使之即稳定可靠又实时高效?

嵌入式软件体系架构,与硬件密切相关,又称为硬体操作软件或者基于硬体的软件,其开发设计包括基本软件体系的构造、底层外设或接口驱动程序的设计、IDE/E-RTOS系统的建立等一系列繁琐的过程,也可以是这些部分的有机整合---可编程片上系统设计SoPC。为彻底简化这一过程,实现上述目标,该“ARM系列微处理器软件体系架构工具,立足于嵌入式ARM硬件体系,通过简单易用的可视化人机交互进行量体裁衣的定制,得到基于具体ARM型号微处理/控制器类型的实际配置,结合内嵌的广泛而丰富的代码数据库,经过逐级的适配与优化,进而,向下形成由含有基本的启动代码、系统初始化代码在内的最小软件体系和所用外设和接口驱动程序组成的底层软件,向上形成由基于ARM指令集的直接软件体系或所选多任务E-RTOS的板级支持包BSP(Board Support Board)、可调用的应用程序接口API(Application Programmable Interface)函数库和可以直接使用的应用程序框架组成的顶层软件。有了具体的可靠高效的嵌入式ARM软件体系框架,软件工程师,就可以直接在此程序框架的各个用户可以加入代码的注释处,调用所产生的API函数,进行功能性应用程序设计了。嵌入式ARM应用系统,特别是其软件体系及其架构的设计层次与流程如图1所示。

1.4主要组成与特征

ARM系列微处理/控制器软件架构工具,有中文和英文两个版本,其主要组成及其特征如下:

1可视化人机交互的实际配置

可视化人机交互的实际配置,通过各种简单明了、界面友好、便于操作的可视化Windows对话框视窗完成人机交互,形成描述具体嵌入式硬件应用体系环境和功能性应用程序必需的基于底层硬体的实际配置

整个软件工具设计成多文档界面MDI(Multi-Document Interface)应用程序,众多人机交互的可视化Windows对话框视窗作为一个个子窗体出现,用以完成从半导体厂商及其器件类型到具体器件型号的选择,实现时钟/存储器/电源的管理、异常中断的安排、栈//接口分配的最小启动配置,形成最小的软件体系,初始化和操作所选各种片内外设或接口的驱动配置;还有ARM内核的选择、集成开发环境IDE(Integrated Development Environment)/E-RTOS及其多任务分配与同步/通信的选择,API及其应用程序框架的选择,等。每个对话视窗,都对应一类配置,在窗口关闭时形成,记录在配置文件中。再次打开窗口,可以从该配置文件调出并显示上次的选择,以便于调整和修改。资源冲突的选择配置会按原半导体设计厂商的规定进行优化,在没有相关仲裁规则时会以弹出窗口的形式提示用户再次进行选择。人机交互窗口内的各项操作,都配有简单明了的提示或弹出暗示,复杂的操作则提供有相应的帮助文档。最终形成的实际配置文件,用于下一步的适配与优化

选配实现的大部分功能示意在图2中,其中PLL为锁相环(Phase Locked Logic)INTC为异常/中断控制器(Interrupt Controller)EMIC为外部存储器接口控制器(External Memory Interface Controller)、闪存控制器为(Flash Memory Controller)DMA为直接存储器访问(Direct Memory Access)MMU/PMU为存储器/电源管理单元(Memory Management Unit/Power Management Unit)UART/SCI为通用异步收发器(Universal Asynchronous Receiver Transmitter)/串行通信接口(Serial Communication Interface)SPI为串行外设接口(Serial Peripheral Interface)I2C为内部集成电路接口(Inter-Integrated Circuit)USB为主机/设备通用串行总线(Host/Device Universal Serial Bus)LCD为液晶显示器(Liquid Crystal Display)I2S为数字音频总线(Inter-IC Sound Bus)SD/MMC为安全数据卡/多媒体控制器(Secure Digital Card/Multimedia Control)EMAC为以太网接口控制器 (Ethernet Media Access Controller)CAN为控制器局域网(Controller Area Network)TSC为触摸屏控制器(Touch Screen Controller)PWM为脉冲宽度调制(Pulse Width Modulation)WDT为看门狗定时器(Watch Dog Timer)RTC为实时时钟(Real Time Clock)ADC为模数转换器(Analog Digital Converter)DAC为数模转换器(Digital Analog Converter)GPIO为通用输入/输出接口(General Purpose I/O)AHB指先进的高性能总线(Advanced High performance Bus)APB指先进的外设总线(Advanced Peripheral Bus)

可视化人机交互的实际配置,可以在几到十几分钟内快速完成,设计效率的提高,可想而知。

2广泛丰富的程序代码数据库

要适合不同ARM内核及其不同半导体厂商的不同类型不同型号的微处理/控制器,必须具备广泛与丰富的而且经过调试与优化的程序代码数据库。本软件架构工具,含有各类用不同ARM指令集编写的启动汇编语言代码文件库,用C/C++语言编写的各类常用外设或接口的驱动程序文件库、各种异常/中断中断处理函数库、常规的应用程序架框文件库、常用的E-RTOSBSP库、及其多任务分配与通信函数库。对于具有Java虚拟机的ARM内核,还构建有大量的Java代码库,以支持以Java语言为主的嵌入式系统设计。各类接口的驱动文件,根据相关总线的标准通信协议和常规的编程指导思想,进行代码编写,通信协议如CAN总线传输,USB中断/批量/同步传输实现,等;编程指导思想如主动数据发送,中断数据接收,DMA方式实现大批量数据传输,等。代码数据库中的大部分程序文件都经过了实际调试,并进行了结构和执行效率上的优化,做到了模块化、标准化和易读易用。另外,还特别为代码数据库设计了特殊的链接接口,以便于应用中进一步的修改、完善和发展。

广泛丰富的程序代码数据库为本软件架构工具提供了强有力的底层硬体适应性保障:

本软件架构工具适用的常用ARM内核有:ARM7TDMI-SARM9xxT/ECoretexM3CoretexM1CoretexM0XScaleARM11Cortex-A8/A9CoretexM34等。

本软件架构工具适用的常用ARM系列微处理/控制器件有:Philips-NXPLPC2000/LPC3000系列、SamsungMobile-SOC系列、STMAT91ASMIntelPXA/IOP/IXP系列、Actel/Altera/Xilinx的各种CoretexM1-FPGAADIADuC70xx/ADu71xx系列、STSTR71x/STR73x/ATR75x/ATR91x/STM32系列、TILMxxxx/AMxxxx/OMAP35xx系列、FreeScaleMAC71xx系列、OKIML67xxx系列等。

本软件架构工具适用的常见片内外设或接口有:以PLL为中心的时钟发生/控制器、异常/中断控制器INTC、外存接口控制器EMIC、闪存控制器、DMA控制器、MMU/PMUUART/SCISPII2CUSB主机/设备控制器、1394接口控制器、LCD控制器、I2SSD/MMCEMACCANTSC8/16位定时/计数器(Timer/Counter)PWMWDTRTCADCDACGPIO1-Wires总线接口控制器等。

本软件架构工具适用的常见E-RTOS有:RTXμC/OS-IIμCLinux/ARM-LinuxWinCE/XPVxWorksNucleuseC/OS等。

程序代码数据库,由软件架构平台在适配与优化时调用,并实现与其的无缝的链接。

3逐级紧凑适配及其优化

逐级紧凑适配及其优化,在可视化人机交互完成后,由用户单击软件架构工具中【代码发生】按钮,得以触发而执行。

架构软件工具分析得到的实际配置需求,逐一查找后台的代码数据库,按照启动代码、最小软件架构、底层外设/接口驱动、异常/中断/DMAIDEE-RTOS适配、BSP的形成、多任务分配与连接、GPIO配置、应用程序框架发生等顺序,由主到次,由硬件底层到软件上层,逐级逐一地进行适配,得到初步的各个程序文件代码,这就是所谓的逐级紧凑适配

接下来,架构软件工具,对初步得到的各个程序文件代码进行优化。代码库中的程序,因需要适应很多硬件的实际情况,往往编写得面面俱到,如"switch"语句引起的众多“case”分支,而实际硬件平台常常是其中的一种情形,此时,十分需要代码优化,以缩小程序代码量,加速程序的执行效率,这对于资源有限和实时性要求高的嵌入式系统设计尤为重要。

本阶段完成的任务还有:适应底层硬体的各个必需API函数的形成,代码注释的添加,必需的应用程序框架的选择与优化,以注释形式给出众多的用户增加代码的位置,各个使用指导文件的产生,等。

逐级紧凑适配及其优化,过程虽然复杂,但通过计算机在后台完成,通常仅需要几分钟时间,就可以一蹴而就,程序设计效率非常之高。

4简明规范开放的软件体系代码

针对具体硬件平台的ARM微处理/控制器系统的软件体系程序框架,在适配与优化的后期产生,它包括:启动程序文件,异常/中断处理文件,各个外设/接口的驱动程序文件,必需的应用程序框架文件,多任务分配及其同步与通信文件,适合该硬件体系的API函数库,相对所选E-RTOSBSP,等等。

产生的软件体系框架代码具有以下显著特点:

Ø  程序简洁明了

程序代码严格遵循汇编语言和C/C++语言的程序编写风格和规范,同时在程序中做有大量的注释,可读性强,对于代码探索、分析、技术交流及其初级人员学习十分方便。对汇编代码、函数、函数的参数、全局/局部变量的功用、涉及的算法、/操作或/访问的编程思想,其注释更为详细。

Ø  代码规范标准

对程序代码,力求高度规范化、模块化、标准化。按功能类型把架构代码分为若干程序文件,每程序文件,划分为头文件(*.h.*inc)和程序体文件(*.c*.cpp),以便于项目的嵌套引用和重构组合。整个项目文件采用状结构组织在一起。

Ø  源码完全开放

产生的各个程序文件,完全以源代码的形式给出,即便于应用、技术交流、编程学习,又便于软件架构工具本身的改进、完善和提高。

Ø  紧随嵌入式系统开发需求

程序代码的编写上,尽可能采用低级语法规则给出,如在C/C++语言的使用上,就做到了尽可能使绝大多数代码为C语言,尽量避免使用C++语法,尽量不使用库函数或仅使用少量常规库函数,这样使程序代码对编译器几乎失去了依赖性,更加符合了嵌入式系统开发的需要。

2 STM-CortexM3微处理器软件架构实现

2.1简要介绍

STM-ARM系列微处理器件,以其功能丰富、价格低廉、稳定可靠等特征,独树一帜,在自动化控制、工农业生产、仪表仪器等领域中得到了广泛应用,特别是其推出的快速、高效、实时的STM-CortexM3系列微处理器件。

STM-CortexM3系列微处理器,ARM Coretex-M3内核,主频可达24-120MHz,内含16-1024KB闪存和4-96KB SRAM,集成的片内外设有: 16/32位定时器、24位看门狗定时器WDG/实时时钟RTC12位模数转换器ADC与数模转换器DAC、串行外设接口SPI、芯片间串行总线IIC、异步收发器UART(LIN/IrDA/ISO7816)、音频IIS通道、全速通用串行总线USB、全/高速通用串行总线OTG-USB、控制局域网总线CAN、安全数字输入输出卡SDIO、以太网控制器、消费电子串行控制接口CEC、短距离无线通信模块、触摸模块、多功能通用输入输出端口GPIO等众多外设,宽电源电压范围和温度工作范围,多种微型封装形式。

ARM系列微处理器软件架构工具的STM-CortexM3微处理器软件架构部分,用来快速构建以STM-CortexM3微处理器为核心的嵌入式应用体系,以供软件工程师在此基础上迅速展开功能性应用代码设计,其适应的器件系列有:STM32F100STM32F101STM32F102STM32F103STM32F105STM32F107STM32F205STM32F207STM32F215STM32F217STM32L100STM32L151STM32L152STM32L162STM32W108STM32TS60等十六类,近160款微控制器

使用可以STM-CortexM3系列微处理器软件架构工具,可以构建针对ARM-Keil通用集成开发环境Real View MDK的项目工程系统,可以构建针对ARM-Keil推出的最小、最简洁、最常用的嵌入式实时操作系统RTX的项目工程系统,也可以产生针对uC/OS-II等嵌入式操作系统的软件体系架构。

2.2应用举例

下面以STM32F103C8多功能开发板为例,应用该“STM-CortexM3系列微处理器软件架构工具”,产生具体的嵌入式应用软件体系。

2.2.1软硬件资源规划简要介绍

开发板外形如图3所示。

3 STM32F103C8多功能开发板实物图

用例涉及的软硬件资源规划如下:


1 微处理器STM32103C8,采用12MHz外部晶体,经过PLL经过锁相倍频,得到:72MHz系统时钟,18MHz外设APB1时钟,36MHzAPB2时钟,9MHz滴嗒tick时钟;

2 采用SW串行调试仿真:PA13-SWDPA14-SWCK

3 选用PA8输出MCO时钟,PLL/2,即36MHz

4 外部中断PA0PA1对应按钮输入;

5 采用PA4~7输出驱动四个LDE灯;

6 采用SPI1,波特率1.125MHz,主模式双线双工工作,查询发送,中断接收,使用第二功能引脚:PA15-NSSPB3-SCKPB4-MISOPB5-MOSI,避免冲突的第一功能引脚:PA4-NSSPA5-SCKPA6-MISOPA7-MOSI

7采用SPI2,波特率1.125MHz,从模式双线双工工作,中断发送,查询接收,使用引脚功能:PB12-NSSPB13SCKPB14-MISOPB15-MOSI

8 采用USART1工作在UART方式下,波特率115200bps,查询发送,中断接收,使用引脚功能:PA9-TXPA10-RX

9采用USART3工作在UART方式下,波特率115200bps,查询发送,中断接收,使用引脚功能:PB10-TXPB11-RX

10 采用全速USB设备,选用四个端点:1—中断发送、2—中断接收、3—批量双缓发送、4—批量双缓接收,使用低、高2级中断,引脚功能:PA11-DMPA12-DP

11 以滴嗒tick时钟为源,构成20ms精准延时函数。

2.2.2基本软件体系架构

1微处理器选型

Windows下运行STM-CortexM3系列微处理器软件架构工具,选择需要的厂商与器件系列,如图4所示。

4微处理器选型的窗口界面图

由此可打开图5所示的程序代码架构框图。在图5中,点击椭圆形或方形按钮,即可展开相应的基本系统或外设与接口的相应设置,其中,桔红色的按钮表示基本系统设置,多数情况下必须首先进行操作;各种亮黄色的按钮表示各类APB高低速外设或接口;亮绿色/浅蓝色的按钮表示高速总线阵列或AHP外设或接口。

5程序代码架构的总体窗口界面图

2基本系统设置

基本系统设置包括微处理器选择、堆栈设置、时钟管理与管理、开发环境的选择等,设置各种时钟是关键,特地给出了“时钟图示”。在图5中,点击方形桔黄色按钮,即可打开相应的窗口界面及其页面,展开相应的配置,如图6所示。

6系统基本配置窗口界面图

3异常与中断设置

异常与中断相关的设置如图7所示。

7系统异常与中断处理配置相关的窗口界面图

4IDE/E-RTOS及其多任务调度设置

相关集成开发环境IDE、嵌入式实时操作系统E-RTOS及其多任务调度的设置如图8所示。

8 IDE/E-RTOS及其多任务调度设置窗口界面图

2.2.3外设/接口驱动产生

STM-CortexM3微处理器的外设/接口,主要是片内集成的设备或接口控制器,部分高性能外设或接口直接挂在总线阵列上,其它多数外设或接口通常连接在高性能总线AHB和低速外设总线APB上。APB总线上的外设或接口又有高低速之分。片外的设备或接口,通常挂在微处理器的GPIO接口或外存控制器接口上,可通过对GPIO或外存控制器的操作来实现。在图5所示的软件总体架构窗口界面上,找到并点击所需的外设或接口按钮,即可打开相应的配置窗口,通过相应的选择或设置,进而完成相应的寄存器配置和底层硬件驱动操作的软件代码架构。

本例中用到了外部中断EINTUSARTSPI和全速USB2.0设备控制器、多功能GPIO。首先进行GPIO总体设置,包括复用功能等,然后针对各个所需模块进行设置。相关的设置与选择,如图9~12所示。

9 GPIO及其复用功能与外部中断配置窗口界面图

10 SPI/IIS总线接口配置的窗口界面图

11全速USB2.0设备控制器设置的窗口界面图

12 USART设置的窗口界面图

2.2.4软件项目体系架构

打开所需的各个窗口进行各项选择或配置后,分别将相应的窗口关闭,软件架构工具即可自动完成所需的寄存配置和代码API接口函数的选择。然后,回到项目管理主窗口,在主菜单或工具栏中单击【生成代码】项,软件架构工具在后台进而生成所希望的程序代码框架,包括必须的“.uv2”项目工程文件和“.sct”分散加载文件。

在项目管理主窗口主菜单或工具栏中,单击【代码浏览】项,可以打开程序代码架构文件,从中可以浏览所生成的各个程序代码,如图13~17所示。

13汇编启动代码的浏览窗口界面图

14全速USB2.0设备驱动的C/C++头文件代码浏览窗口界面图

15全速USB2.0设备驱动的C/C++程序体文件代码浏览窗口界面图

16主程序框架代码浏览窗口界面图

在项目管理主窗口的菜单栏或工具栏中,单击【生成输出】项,可以将生成的程序代码输出到指定目录。如图17所示。

17软件架构的程序代码输出

如果需要修改程序架构代码,可以重新运行软件架构工具或在项目管理主窗口的菜单栏或工具栏中,单击【打开项目】项,选择以前建立项目的“.acf”文件,即可打开以前建立的项目,进而重新设置或修改各个所需窗口中的选择项目,最后再重新生成代码即可。

2.2.5软件体系架构应用

安装相应的集成开发环境,如ARM-KeilReal View MDK软件,进入生成软件架构的目录中,点击其中的项目工程文件,如针对Real View MDK软件的.uvproj文件,即可打开相应的IDE环境,浏览条理清晰的工程文件树及其对应的各个文件,此时不做任何改动,直接进行项目编译,整个项目完全通过,并没有一处编译错误和警告提示,如图18所示。

18使用Real View MDK IDE的项目工程窗口界面图

打开IDE的选项窗口,可以看到通过软件架构工具得到的各个项目配置选项,已经正确地填入到了各个位置,如图19所示。

19软件架构工具自动设置项目工程选项的窗口界面图

关键性的文件,如Startup.sRTX_Config.cSysBase.cProject.sct等,涉及很多可能需要调整的全局参数,软件架构工具还能够自动产生支持其变动调整的人机交互窗口变化项,如图20所示。

20软件架构工具自动产生支持IDE环境可调人机交互变化项的窗口界面图

浏览软件架构工具所产生的程序代码,可以发现:

Ø  关键部分做有详细的注释,可供用户阅读并优化完善;

Ø  每个函数或子程序段,做有明确的功能说明,以方便用户调用;

Ø  各个程序文件中,用户可能加入功能性代码的地方,有“//用户可以加入的功能实现”等注释形式,以适合用户快速定位,展开功能性代码设计;

Ø  ……

发布了15 篇原创文章 · 获赞 0 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u010941124/article/details/16978641