您好,欢迎来到达州工业云! 平台首页 企业驾驶舱 帮助中心 企业登录 企业注册

HI,欢迎使用达州工业云平台!

账号必须大于2位

创新资源平台
服务平台首页>专利库>专利详情

ARM系列微处理器的软件体系架构工具(公开号:CN101551747B)

  • 申请号:CN200910057052.1 申请公布号: CN101551747B
  • 申请日: 2009-04-09 申请公布日: 2012-06-20
  • 申请(专利权)人: 专利代理机构:
  • 分类号:G06F9/44

专利介绍

本发明“ARM系列微处理器的软件体系架构工具”实现了各种ARM微处理/控制器件的嵌入式应用系统软件体系的快速构建,它以丰富的基于底层硬体的程序代码库和强大的嵌入式硬件体系适配能力,立足于嵌入式ARM硬件体系,通过简便易用的可视化人机交互,得到基于具体ARM型号微处理/控制器类型的实际配置,结合内嵌的广泛而丰富的代码数据库,经过逐级的适配与优化,向下形成由含有启动代码、系统初始化代码等在内的最小软件体系和所用外设和接口驱动程序组成的底层软件,向上形成由基于ARM指令集的直接软件体系或所选多任务实时操作系统的板级支持包、可调用的应用程序接口函数库和可以直接使用的应用程序框架组成的顶层软件。本软件架构工具应用于嵌入式系统设计,以最大限度地减少开发周期,降低研发成本和入门门坎,增强系统的可靠高效性,使直接展开功能性应用程序设计得以顺利实现,从而推动嵌入式产品快速上市。
1.一种ARM系列微处理器的软件体系架构工具,其特征在于,包括人机交互的实际配置部分、程序代码数据库部分、适配部分、优化部分及软件体系代码产生部分,其中:所述人机交互的实际配置部分通过可视化Windows对话框视窗完成人机交互,并形成描述具体嵌入式硬件应用体系环境和功能性应用程序的基于底层硬体的实际配置,所述实际配置用于下一步的适配与优化;所述适配部分,根据所述实际配置,逐一查找后台的程序代码数据库,获取初步的各个程序文件代码;所述优化部分,用以对所述初步的各个程序代码进行优化,缩小程序代码量;所述软件体系代码产生部分,经过所述适配和优化,产生针对ARM系列微处理器硬件平台上构建软件体系框架系统的代码;所述程序代码数据库部分,用于所述适配部分与优化部分的调用,并实现与其链接,所述程序代码数据库部分包括利用不同ARM指令集编写的启动汇编语言代码文件库,用C/C++语言编写的外设或接口的驱动程序文件库、异常/中断处理函数库、应用程序架框文件库、常用的E-RTOS之BSP库、及其多任务分配与通信函数库。
2.如权利要求1所述的ARM系列微处理器的软件体系架构工具,其特征在于,所述人机交互的实际配置部分中,人机交互的可视化Windows对话框视窗作为一个个子窗体出现,以完成从半导体厂商及其器件类型到具体器件型号的选择、实现时钟/存储器/电源的管理、异常中断的设置、栈/堆/接口分配的最小启动配置,形成最小的软件体系,初始化和操作所选各种片内外设或接口的驱动配置;还包括有ARM内核的选择、集成开发环境IDE/E-RTOS及其多任务分配与同步/通信的选择,API及其应用程序框架的选择。
3.如权利要求1所述的ARM系列微处理器的软件体系架构工具,其特征在于,所述程序代码数据库部分中,所述接口的驱动文件为根据相关总线的标准通信协议和常规的编程指导思想进行代码编写获得。
4.如权利要求3所述的ARM系列微处理器的软件体系架构工具,其特征在于,所述标准通信协议包括CAN总线传输或USB中断/批量/同步传输实现;所述编程指导思想包括主动数据发送,中断数据接收,DMA方式实现数据传输。
5.如权利要求1所述的ARM系列微处理器的软件体系架构工具,其特征在于,所述适配部分根据所述实际配置需求,按照启动代码、最小软件架构、底层外设/接口驱动、异常/中断/DMA、IDE或E-RTOS适配、BSP的形成、多任务分配与连接、GPIO配置、应用程序框架的顺序,由主到次,由硬件底层到软件上层,逐级逐步地进行适配,获取初步的各个程序文件代码。
6.如权利要求1所述的ARM系列微处理器的软件体系架构工具,其特征在于,所述适配部分与优化部分还包括:形成适应底层硬体的API函数,添加代码注释,选择和优化应用程序框架,以注释形式给出的各个用户增加代码的位置,产生使用指导文件。
7.如权利要求1所述的ARM系列微处理器的软件体系架构工具,其特征在于,所述软件体系代码产生部分包括:启动程序文件,异常/中断处理文件,各个外设/接口的驱动程序文件,应用程序框架文件,多任务分配及其同步与通信文件,适合该硬件体系的API函数库,相对所选E-RTOS的BSP。【技术领域】本发明展现了一种嵌入式应用软件体系快速设计的自动化软件工具,主要用于以各种ARM微处理/控制器为核心的嵌入式应用系统软件体系的快速构建,应用领域包括工业过程的检测与控制、语音/图像的处理与解压缩、仪表仪器、家用电器、便携式移动通讯、个人数字助理产品、消费电子、航空航天、军事等行业。嵌入式应用体系设计中,做好具体的ARM硬件体系后,就可以应用本软件架构工具快速产生所需的关键性的基于硬体的基本程序框架了,之后,就是在此框架下编写功能代码了,整个嵌入式系统的设计过程得以大大地简化,产品的研发周期也得以极大地缩短。本发明,不仅可以广泛适用于各级嵌入式软硬件设计人员的ARM单片机SCM(Singlexa0Chipxa0Microcomputer)或FPGA(Fieldxa0Programmablexa0GateArray)-SoPC(Systemxa0onxa0Programmalexa0Chip)的研发,也可以大量应用于各类高校/职校的嵌入式应用系统设计与机电一体化专业的学员的实践教育培训。【背景技术】嵌入式系统广泛应用,已经渗透到科学研究、工程设计、工业过程监控、交通管理、信息家电、智能家庭管理、环境监测、军事技术、气象探测、电子商务、各类产业和商业文化艺术、娱乐业以及人们的日常生活的方方面面中,从家用洗衣机、电冰箱,到作为交通工具的自行车、小汽车,再到办公室里的远程会议系统等等,处处都是可以使用嵌入式技术开发和改造的产品。在各类嵌入式应用产品中,普遍采用的是以各种ARM微处理/控制器为核心的嵌入式应用系统。精简指令集RSIC(Reducexa0Instructionxa0Setxa0Computing)的ARM微处理/控制器内核,以性能优良、可靠高效、经济实用,被广泛采用。很多知名半导体厂商都推出了以各种ARM内核为核心CPU(CentralProcessingxa0Unit)、附加各类常用外设和接口的单片高集成微处理/控制器。嵌入式应用产品的研发,主要是相关的嵌入式应用系统的设计,其中重要的嵌入式软件体系设计中必不可少的基本设计是嵌入式软件体系的架构。嵌入式软件体系架构,通常采用混合编程形式,以加速研发的实现,主要的设计语言多采用C/C++,部分含有Java虚拟机的ARM微处理/控制器的主要设计语言是Java。嵌入式软件体系框架中,需要设计的程序有基本的启动程序、异常/中断处理程序、所用外设与接口的初始化配置与操作驱动程序、主程序文件、嵌入式实时操作系统内核的最小选配或嵌入移植、多任务的分配与同步/通信程序、实时监控程序等的基于底层硬体的软件,其中启动代码部分和实时性要求较高的部分代码必须采用ARM指令集汇编语言编写。编制嵌入式ARM微处理/控制器软件体系框架,必须熟悉所选ARM内核的构造及其异常中断机制、存储体系构造、ARM汇编指令集,熟悉所用ARM系列微处理/控制器件的特点及其片内模块/外设/接口的构造与操作,熟悉所选嵌入式实时操作系统E-RTOS(Embeddedxa0Realxa0Timexa0Operationxa0System)的移植需求及其对底层硬体驱动的特殊实现要求。这里的“熟悉”,不是一般的所谓“了解”,而是透彻的“理解”,否则就不可能“用活”和“活用”。ARM指令集,有基本的ARM和Thumb指令集,有增强的双Thumb指令集和浮点运算指令集,更有针对不同内核的特殊指令集。有ARM7、ARM9、XScale等众多ARM内核,有Philips-NXP、Samsung、Atmel、Intel等知名半导体厂商在生产不同类型的各种ARM微处理/控制器件。每种型号的ARM微处理/控制器件都集成有或多或少的各类常用片内外设或接口。各类常用的片内外设或接口,多达几十个。各类常用E-RTOS,对底层硬体更有不同的依赖和要求。不同ARM内核、不同半导体厂商、不同的具体ARM微处理/控制器件,都有100个左右的配置、操作和状态寄存器,复杂的ARM微处理/控制器件则多达数百个。寄存器的二进制位数通常为8、16或32位,每个寄存器的单个或数个位又有不同的涵义。这些寄存器中,有些是关于ARM-CPU的,有些是关于微处理/控制器的片内外设和接口的。所以说,使用一款ARM微处理/控制器件,进行嵌入式软件体系设计,需要花费大部分时间进行嵌入式软件体系框架,并且需要不断的软件测试和调试,对设计人员能力的要求极高,很难一蹴而就。嵌入式软件体系框架,迫切需要在保证可靠、高效、精炼、易用的前提下做到智能化、自动化、标准化、模块化,以缩短产品研发时间和软件开发成本,加速软件设计效率。本发明“ARM系列微处理器软件架构工具”就是这种广泛迫切需求的产物。有了本软件体系架构工具,对所用ARM微处理/控制器件,就可以停留在“了解”而不是众多的“熟悉”了。【发明内容】本发明的目的,在于提供一种在保证可靠、高效、精炼、易用的前提下做到智能化、自动化、标准化、模块化的ARM系列微处理器的软件体系架构的简易途径,以快速有效地解决以下问题:怎样在一个硬件平台上建立并运行起一个最小的基本软件体系?怎样通过软件与系统的各种外围设备打交道?怎样通过系统的各种接口在软件上实现和外部通信?怎样建立针对具体IDE或E-RTOS的多任务应用软件框架并使之即稳定可靠又实时高效?嵌入式软件体系架构,与硬件密切相关,又称为硬体操作软件或者基于硬体的软件,其开发设计包括基本软件体系的构造、底层外设或接口驱动程序的设计、IDE/E-RTOS系统的建立等一系列繁琐的过程,也可以是这些部分的有机整合---可编程片上系统设计SoPC。为彻底简化这一过程,实现上述发明目的,本“ARM系列微处理器软件体系架构工具”,立足于嵌入式ARM硬件体系,通过简单易用的可视化人机交互进行“量体裁衣”的定制,得到基于具体ARM型号微处理/控制器类型的“实际配置”,结合内嵌的广泛而丰富的“代码数据库”,经过逐级的“适配与优化”,进而,向下形成由含有基本的启动代码、系统初始化代码在内的最小软件体系和所用外设和接口驱动程序组成的底层软件,向上形成由基于ARM指令集的直接软件体系或所选多任务E-RTOS的板级支持包BSP(Boardxa0Supportxa0Board)、可调用的应用程序接口API(Applicationxa0Programmablexa0Interface)函数库和可以直接使用的应用程序框架组成的顶层软件。有了具体的可靠高效的嵌入式ARM软件体系框架,软件工程师,就可以直接在此程序框架的各个“用户可以加入代码”的注释处,调用所产生的API函数,进行功能性应用程序设计了。嵌入式ARM应用系统,特别是其软件体系及其架构的设计层次与流程如图1所示。本ARM系列微处理/控制器软件架构工具,有中文和英文两个版本,其主要组成及其特征如下:1.可视化人机交互的“实际配置”可视化人机交互的“实际配置”,通过各种简单明了、界面友好、便于操作的可视化Windows对话框视窗完成人机交互,形成描述具体嵌入式硬件应用体系环境和功能性应用程序必需的基于底层硬体的“实际配置”。整个软件工具设计成“多文档界面MDI(Multi-documentxa0Interface)应用程序”,众多人机交互的可视化Windows对话框视窗作为一个个子窗体出现,用以完成从半导体厂商及其器件类型到具体器件型号的选择,实现时钟/存储器/电源的管理、异常中断的安排、栈/堆/接口分配的最小启动配置,形成最小的软件体系,初始化和操作所选各种片内外设或接口的驱动配置;还有ARM内核的选择、集成开发环境IDE(Integratedxa0DevelopmentEnvironment)/E-RTOS及其多任务分配与同步/通信的选择,API及其应用程序框架的选择,等。每个对话视窗,都对应一类配置,在窗口关闭时形成,记录在配置文件中。再次打开窗口,可以从该配置文件调出并显示上次的选择,以便于调整和修改。资源冲突的选择“配置”会按原半导体设计厂商的规定进行优化,在没有相关仲裁规则时会以弹出窗口的形式提示用户再次进行选择。人机交互窗口内的各项操作,都配有简单明了的提示或弹出“暗示”,复杂的操作则提供有相应的帮助文档。最终形成的“实际配置”文件,用于下一步的“适配与优化”。“选配”实现的大部分功能示意在图2中,其中PLL为锁相环(PhaseLockedxa0Logic),INTC为异常/中断控制器(Interruptxa0Controller)、EMIC为外部存储器接口控制器(Externalxa0Memoryxa0Interfacexa0Controller)、闪存控制器为(Flashxa0Memoryxa0Controller)、DMA为直接存储器访问(Directxa0Memoryxa0Access)、MMU/PMU为存储器/电源管理单元(Memoryxa0Managementxa0Unit/PowerManagementxa0Unit)、UART/SCI为通用异步收发器(Universalxa0AsynchronousReceiverxa0Transmitter)/串行通信接口(Serialxa0Communicationxa0Interface)、SPI为串行外设接口(Serialxa0Peripheralxa0Interface)、I2C为内部集成电路接口(Inter-Integratedxa0Circuit)、USB为主机/设备通用串行总线(Host/DeviceUniversalxa0Serialxa0Bus)、LCD为液晶显示器(Liquidxa0Crystalxa0Display)、I2S为数字音频总线(Inter-ICxa0Soundxa0Bus)、SD/MMC为安全数据卡/多媒体控制器(SecureDigitalxa0Card/Multimediaxa0Control)、EMAC为以太网接口控制器(EthernetMediaxa0Accessxa0Controller)、CAN为控制器局域网(Controllerxa0Areaxa0Network)、TSC为触摸屏控制器(Touchxa0Screenxa0Controller)、PWM为脉冲宽度调制(PulseWidthxa0Modulation)、WDT为看门狗定时器(Watchxa0Dogxa0Timer)、RTC为实时时钟(Realxa0Timexa0Clock)、ADC为模数转换器(Analogxa0Digitalxa0Converter)、DAC为数模转换器(Digitalxa0Analogxa0Converter)、GPIO为通用输入/输出接口(GeneralPurposexa0I/O),AHB指先进的高性能总线(Advancedxa0Highxa0performancexa0Bus),APB指先进的外设总线(Advancedxa0Peripheralxa0Bus)。可视化人机交互的“实际配置”,可以在几到十几分钟内快速完成,设计效率的提高,可想而知。2.广泛丰富的“程序代码数据库”要适合不同ARM内核及其不同半导体厂商的不同类型不同型号的微处理/控制器,必须具备广泛与丰富的而且经过调试与优化的“程序代码数据库”。本发明的软件架构工具,含有各类用不同ARM指令集编写的启动汇编语言代码文件库,用C/C++语言编写的各类常用外设或接口的驱动程序文件库、各种异常/中断中断处理函数库、常规的“应用程序架框”文件库、常用的E-RTOS之BSP库、及其多任务分配与通信函数库。对于具有Java虚拟机的ARM内核,还构建有大量的Java代码库,以支持以Java语言为主的嵌入式系统设计。各类接口的驱动文件,根据相关总线的标准通信协议和常规的编程指导思想,进行代码编写,通信协议如CAN总线传输,USB中断/批量/同步传输实现,等;编程指导思想如主动数据发送,中断数据接收,DMA方式实现大批量数据传输,等。代码数据库中的大部分程序文件都经过了实际调试,并进行了结构和执行效率上的优化,做到了模块化、标准化和易读易用。另外,还特别为代码数据库设计了特殊的链接接口,以便于应用中进一步的修改、完善和发展。广泛丰富的“程序代码数据库”为本软件架构工具提供了强有力的底层硬体适应性保障:本软件架构工具适用的常用ARM内核有:ARM7TDMI-S、ARM9xxT/E、CoretexM3、CoretexM1、XScale等。本软件架构工具适用的常用ARM系列微处理/控制器件有:Philips-NXP的LPC2000/LPC3000系列、Samsung的Mobile-SOC系列、Atmel的AT91ASM、Intel的PXA/IOP/IXP系列、Actel/Altera/Xilinx的各种CoretexM1-FPGA、ADI的ADuC70xx/ADu71xx系列、ST的STR71x/STR73x/ATR75x/ATR91x系列、TI的TMS470R1x系列、FreeScale的MAC71xx系列、OKI的ML67xxx系列等。本软件架构工具适用的常见片内外设或接口有:以PLL为中心的时钟发生/控制器、异常/中断控制器INTC、外存接口控制器EMIC、闪存控制器、DMA控制器、MMU/PMU、UART/SCI、SPI、I2C、USB主机/设备控制器、1394接口控制器、LCD控制器、I2S、SD/MMC、EMAC、CAN、TSC、8/16位定时/计数器(Timer/Counter)、PWM、WDT、RTC、ADC、DAC、GPIO、1-Wires总线接口控制器等。本软件架构工具适用的常见E-RTOS有:RTX、μC/OS-II、μCLinux/ARM-Linux、WinCE/XP、VxWorks、Nucleus、eC/OS等。“程序代码数据库”,由软件架构平台在“适配与优化”时调用,并实现与其的无缝的链接。3.逐级紧凑“适配”及其“优化”逐级紧凑“适配”及其“优化”,在可视化人机交互完成后,由用户单击软件架构工具中【代码发生】按钮,得以触发而执行。架构软件工具分析得到的“实际配置”需求,逐一查找后台的“代码数据库”,按照启动代码、最小软件架构、底层外设/接口驱动、异常/中断/DMA、IDE或E-RTOS适配、BSP的形成、多任务分配与连接、GPIO配置、应用程序框架发生等顺序,由主到次,由硬件底层到软件上层,逐级逐一地进行“适配”,得到初步的各个程序文件代码,这就是所谓的“逐级紧凑适配”。接下来,架构软件工具,对初步得到的各个程序文件代码进行优化。代码库中的程序,因需要适应很多硬件的实际情况,往往编写得面面俱到,如′′switch′′语句引起的众多“case”分支,而实际硬件平台常常是其中的一种情形,此时,十分需要“代码优化”,以缩小程序代码量,加速程序的执行效率,这对于资源有限和实时性要求高的嵌入式系统设计尤为重要。本阶段完成的任务还有:适应底层硬体的各个必需API函数的形成,代码注释的添加,必需的应用程序框架的选择与优化,以注释形式给出众多的用户增加代码的位置,各个使用指导文件的产生,等。逐级紧凑“适配”及其“优化”,过程虽然复杂,但通过计算机在后台完成,通常仅需要几分钟时间,就可以一蹴而就,程序设计效率非常之高。4.简明规范开放的“软件体系代码”针对具体硬件平台的ARM微处理/控制器系统的软件体系程序框架,在“适配与优化”的后期产生,它包括:启动程序文件,异常/中断处理文件,各个外设/接口的驱动程序文件,必需的应用程序框架文件,多任务分配及其同步与通信文件,适合该硬件体系的API函数库,相对所选E-RTOS的BSP,等等。产生的“软件体系框架代码”具有以下显著特点: ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="38"/>程序简洁明了程序代码严格遵循汇编语言和C/C++语言的程序编写风格和规范,同时在程序中做有大量的注释,可读性强,对于代码探索、分析、技术交流及其初级人员学习十分方便。对汇编代码、函数、函数的参数、全局/局部变量的功用、涉及的算法、“读/写”操作或“收/发”访问的编程思想,其注释更为详细。 ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="37"/>代码规范标准对程序代码,力求高度规范化、模块化、标准化。按功能类型把架构代码分为若干“对”程序文件,每“对”程序文件,划分为头文件(*.h、.*inc等)和程序体文件(*.c、*.cpp等),以便于项目的嵌套引用和重构组合。整个项目文件采用“树”状结构组织在一起。 ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="38"/>源码完全开放产生的各个程序文件,完全以源代码的形式给出,即便于应用、技术交流、编程学习,又便于软件架构工具本身的改进、完善和提高。 ntent="drawing" img-format="tif" inline="yes" orientation="portrait" wi="39"/>紧随嵌入式系统开发需求程序代码的编写上,尽可能采用低级语法规则给出,如在C/C++语言的使用上,就做到了尽可能使绝大多数代码为C语言,尽量避免使用C++语法,尽量不使用库函数或仅使用少量常规库函数,这样使程序代码对编译器几乎失去了依赖性,更加符合了嵌入式系统开发的需要。【附图说明】图1为本发明ARM系列微处理器软件体系架构工具的层次与流程框图。图2为以ARM系列微处理器为核心的嵌入式系统的通用选择配置缩略框图。图3为ARM单片机的厂商与器件选择框图。图4为LPC2138单片机的系统配置框图。图5为LPC2138单片机的系统管理窗口框图。图6为LPC2138单片机的中断配置窗口框图。图7为LPC2138单片机的中断异常代码架构选择窗口。图8为LPC2138单片机的中断异常代码架构选择窗口。图9为LPC2138单片机架构代码及其启动汇编代码浏览。图10为LPC2138单片机架构代码及其SPI片内外设C代码浏览。图11为LPC2138单片机架构代码及其主程序C代码浏览。图12为程序代码架构文件预览与输出窗口框图。图13为由项目工程文件直接打开的Realxa0Viewxa0MDK集成开发环境。【实施方式】本发明“ARM系列微处理/控制器软件体系架构工具”,实现了各种ARM微处理/控制器件的嵌入式应用系统软件体系的快速构建。具体实施中,关键环节的“程序代码库”和“适配与优化”,均在后台运行,面向用户的只是一系列的简易的“人机交互操作”,一直到最后得到其所需的嵌入式应用软件体系框架为止。下面以工业测量和控制场合广泛应用的Philips-NXP的LPC2000系列ARM7TDMI-S单片机,针对ARM公司的主流的集编辑、编辑、调试于一体的IED---Realxa0Viewxa0MDK,产生的嵌入式软件应用体系框架为例,说明本“软件架构工具”中文版的具体应用。这里选用的具体器件型号是:LPC2138。1.在Windows下运行本软件架构工具,选择厂商与器件型号,如图3所示。2.由此可打开图4所示的LPC2138程序代码架构框图。3.在图4中,单击亮橙色的各个按钮,即可打开对应的CPU管理窗口或片内外设配置窗口。在打开的窗口中可以通过人机对话的方式完成相应的寄存器配置和初始化、读写访问、中断等相关函数的选择。图5~8是对系统管理、中断管理与UART片内外设配置的窗口。4.打开所需的各个窗口进行各项选择后关闭窗口,即可完成对所需的寄存配置和代码API接口函数的选择。然后,回到项目管理主窗口,在主菜单或工具栏中单击【生成代码】项,软件工具在后台即可生成所希望的程序代码框架。在项目管理主窗口主菜单或工具栏中单击【代码浏览】项,可以打开程序代码架构文件,从中可以浏览所生成的程序代码,如图9~11,该代码是针对Realxa0Viewxa0MDK集成开发环境产生的,程序代码所对应的开发环境的选择可以在系统控制管理窗口的一般配置页面完成。5.在项目管理主窗口的菜单栏或工具栏中,单击【生成输出】项,可以将生成的程序代码输出到指定目录。如图12所示。6.点击所生成目录中的项目工程文件,如针对Realxa0Viewxa0MDK软件的.uv2文件,即可打开相应的IDE环境,如图13所示。7.如果需要修改程序架构代码,可以重新运行软件工具或在项目管理主窗口的菜单栏或工具栏中,单击【打开项目】项,选择以前建立项目的“.acf”文件,打开以前建立的项目,重新或者修改各个所需窗口中的选择项目,生成代码即可。