基于MicroBlaze软核的嵌入式最小系统

2014-08-03 03:45孙丰祥程玉伟胡恩俊郑昌露
化工自动化及仪表 2014年8期
关键词:看门狗串口嵌入式

孙丰祥 程玉伟 胡恩俊 郑昌露

(国电南京自动化股份有限公司,南京 210061)

Xilinx首创了现场可编程逻辑阵列(FPGA)这一创新性的技术,随着FPGA技术的发展,其逻辑容量逐步增大而成本却越来越低。在这种趋势下,FPGA可以代替系统中越来越多的器件,并且发展到FPGA片上系统。Xilinx推出了32位软核MicroBlaze,用来替代片上的微控制器,有效地缩小了PCB板的面积和器件数量,降低了整个系统的成本。MicroBlaze采用 32 位哈佛RISC 架构,32位独立的地址总线和数据总线。对于简单的设计,可以将代码直接放入片上的BRAM中;也可以将复杂设计的Bootloader放在片上的BRAM中。用户IP可以通过总线或快速点对点连接接入系统。由于FPGA有设计灵活等诸多优点,因此设计一个基于MicroBlaze软核的嵌入式最小系统十分必要,对于不同需求的产品只需在该最小系统上导入需要的IP核扩展接口,这样既减少了开发时间,又降低了开发成本。

1 最小系统的硬件平台①

嵌入式最小系统的硬件平台选用的是Xilinx的SPARTAN6芯片,此款芯片资源丰富、性能可靠,具有PFGA所特有的可灵活配置的特性,各项指标满足在产品中应用。首先要搭建起底层的物理平台,使用厂家提供的开发软件中的XPS(Xilinx Platform Studio)开发工具创建硬件工程平台。主要完成两部分的工作:使用基本系统向导BSB(Base System Builder)搭建MicroBlaze平台和根据项目需要定制自己需要的IP核。

使用基本系统向导BSB搭建MicroBlaze平台依次需要选择系统总线种类、FPGA芯片型号与参数、系统时钟大小和Local Memory的大小[1]。本设计中选用AXI总线,主芯片选择使用Xilinx的SPARTAN6,系统时钟设置为100MHz,Local Memory设置为16KByte。完成上述设置后需要添加外设,Xilinx开发环境中为用户提供了丰富的IP核,用户可根据需要选用。本设计中根据目标版实际硬件设计选择DDR2控制器的IP核,并为其分别分配大小为2KByte的数据Cache和大小为2KByte的指令Cache;根据需要自主设计了带中断的定时器IP核、SPI控制器IP核与效率更高、更节省资源的串口控制器IP核。完成上述工作后还要对系统的一些细节参数重新配置,打开Project->Project Options 确认芯片的封装形式;在MCB_DDR2右键ConfigIP对DDR2控制器手动配置;对ucf文件按照目标实际设计为每个模块配置管脚,并编译生成硬件比特流文件。

本最小系统设计中考虑到后期要在目标板上集成μCOSII操作系统,需要带中断信号的定时器为操作系统提供时钟标记。同时需要串口下载应用程序,并实现内部规约通信的接口;因此在最小系统设计中,自己定制了串口控制器IP核和定时器IP核;在XPS中定制用户IP使用时挂接在AXI总线上,实现与MicroBlaze的通信。XPS提供自定义IP核的生成向导,按照向导创建IP核过程中,设置好IP核中需要的IO管脚、中断触发方式及所需寄存器的个数等信息;系统会自动生成一个IP核代码框架;生成的User_Logic文件是需要用户进行手动添加自定义逻辑代码的地方,在这里用户只需关注自己需要实现的功能,不用考虑它们与MicroBlaze之间的通信连接[2]。本设计中User_Logic采用Verilog语言编写;串口IP核结构框图如图1所示。

图1 串口控制其IP核结构框图

与串口IP核实现方法类似,SPI的IP核与带中断信号的定时器IP、IO核按照上述流程进行设计后导入之前创建好的工程;将所有的IP核挂在AXI总线上,与之前加入的IP核一起统一进行地址分配。重新编译生成硬件比特流文件,用系统提供的IPACT工具配合仿真器将硬件比特流文件烧写到FPGA中。配置好的硬件工程主窗口如图2所示。图2中显示了挂接在AXI总线上的各个模块,包括系统提供的DDR2核中断控制器核、485串口核用于控制串行 SPI FLASH的SPI核等。此外在AXI总线上还挂接每个系统都必须有的时钟管理及接地管理等必备模块。

图2 硬件系统配置完成主界面

2 最小系统的软件

在构建起的硬件平台上编写软件应用程序,包括应用程序代码及驱动程序等;使用Xilinx提供的SDK(Software Development Kit)新建软件工程,系统会自动生成各个IP核相关的宏文件,里面定义好了每个IP核的首地址等信息。但是自己定值额度IP核的驱动需要根据IP核的编写方法自主编写调试。最后将硬件的比特流配置文件和软件的可执行位文件进行合并形成最终的文件,通过串口配合XModem协议将可执行的文件下载到SPI FLASH中。系统配置完成后由Bootloader程序(图3)将Flash中的应用程序拷贝到片外的DDR RAM中运行。

图3 Bootloader程序流程

当系统上电后自动运行Bootloader主函数,首先初始化串口;并读看门狗状态,当看门狗状态为0时,表示看门狗被禁止,此时允许下载程序;然后使用超级终端选用Xmodem协议将程序下载到SPI FLASH。拔掉目标板上看门狗短接帽,看门狗会复位系统,重新执行主函数,这样将重新读取看门狗状态,此时状态为1;当看门狗状态为1时,调用函数软件上禁止看门狗,并将之前下载到SPI FLASH中的程序拷贝到DDR2上运行。

3 最小系统通信测试平台

构建完成上述软硬件平台后,需要在SDK软件工程中新建一个应有程序文件夹,在应有程序中添加上述IP核的驱动代码[3];同时为后期产品研发做准备,需要集成必要的操作系统,本设计中选用μCOSII,参考Xilinx官网给出的示例,将μCOSII移植进来使用。在应有程序主函数中创建基于μCOSII操作系统的485口的通信任务。通过485上位调试软件与目标版通信,通信规约选用内部使用的801规约。串口通信程序流程如图4所示。

系统正常运行后打开上位调试软件,将电脑名称、工程名称和波特率设置正确后,调试软件会

图4 串口通信程序流程

显示连接成功;打开通信监视窗口会有握手帧出现。此时点击上位调试软件按钮,触发通信帧下传给目标板,则目标板程序的串口进入接收中断,并将接收到的通信帧存入相应缓存,并调用操作系统的发信函数将缓存中的数据以消息队列形式发出;在通信任务中一直处于等待接收状态的系统任务此时收到有效数据,通过解析函数分析上位软件要请求的功能,分析完成后会回复相应的应答帧完成调试软件所请求的功能。通信连接成功校核保护界面如图5所示,通过串口监视窗口抓取监听的报文信息,经过与协议要求对比,内容与结果都完全正确,通过长时间大量数据的传送对比实验,此最小系统构建的通信测试平台完全达到预期效果满足产品开发的需要。

图5 通信成功界面与报文监听

4 结束语

通过上述对基于MicroBlaze软核的嵌入式最小系统软、硬件设计,并通过串口801通信规约测试,基于MicroBlaze软核的嵌入式最小系统性能可靠完全符合产品开发的要求,同时此最小系统应用灵活,对于不同的产品只需添加不同的IP核,避免了平台的多次重复开发,降低了难度并减少了工作量,提高了效率。目前,在此最小系统上开发的产品已逐步用于工程实践。

猜你喜欢
看门狗串口嵌入式
浅谈AB PLC串口跟RFID传感器的通讯应用
把他叫醒
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
一种采用FPGA实现的通用看门狗电路
把它叫醒
把它叫醒