首页> 中国专利> 将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法

将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法

摘要

本发明公开了一种将MicroBlaze平台的嵌入式代码向Cortex‑A9处理器移植的方法,包括:分析MicroBlaze平台的处理器与Cortex‑A9处理器架构的不同之处,修改待移植的嵌入式代码中与处理器架构相关的部分;使用Cortex‑A9处理器中集成的外设代替MicroBlaze平台中以软核IP实现的外设,修改待移植的嵌入式代码中与外设相关的部分,使MicroBlaze平台的优秀代码可以在新的Zynq平台上运行,避免了重复开发,并且性能更高的硬件架构也可以进一步激发原有代码的活力。

著录项

  • 公开/公告号CN105975257A

    专利类型发明专利

  • 公开/公告日2016-09-28

    原文格式PDF

  • 申请/专利权人 北京小鸟看看科技有限公司;

    申请/专利号CN201610270543.4

  • 发明设计人 舒玉龙;

    申请日2016-04-27

  • 分类号G06F9/44(20060101);

  • 代理机构11323 北京市隆安律师事务所;

  • 代理人权鲜枝;吴昊

  • 地址 100083 北京市海淀区学院路35号世宁大厦2101层

  • 入库时间 2023-06-19 00:32:58

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-04

    授权

    授权

  • 2016-10-26

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20160427

    实质审查的生效

  • 2016-09-28

    公开

    公开

说明书

技术领域

本发明涉及嵌入式软件技术领域,特别涉及一种将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法。

背景技术

作为全球最大的FPGA生产厂家之一的xilinx公司,近年来非常重视软硬件协同开发的设计理念,在以往软核处理器MicroBlaze的基础之上,进一步推出了搭载硬核处理器Cortex-A9的Zynq产品线。不仅如此,Zynq在DDR接口带宽、吉比特以太网以及Linux操作系统方面都有显著的优势。这些功能方面的改善,进一步提升了性能,也大大降低了FPGA的研发设计周期。为了进一步激发原有的基于MicroBlaze的优秀代码的活力,将其向Zynq平台的移植工作就显得很有价值。

发明内容

为了解决上述问题,本发明提供了一种将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法,包括:

分析MicroBlaze平台的处理器与Cortex-A9处理器架构的不同之处,修改待移植的嵌入式代码中与处理器架构相关的部分;

使用Cortex-A9处理器中集成的外设代替MicroBlaze平台中以软核IP实现的外设,修改待移植的嵌入式代码中与外设相关的部分。

其中,所述修改待移植的嵌入式代码中与处理器架构相关的部分,具体包括:当MicroBlaze平台中有8位的IP核直接挂载在32位总线上时,在待移植的嵌入式代码中修改接口数据长度,使所述8位的IP核与Cortex-A9处理器互联。

其中,所述修改待移植的嵌入式代码中与处理器架构相关的部分,还包括:验证Cortex-A9处理器中各数据类型占用的字节长度与MicroBlaze平台中相同数据类型占用的字节长度是否相等;若不相等,则在待移植的嵌入式代码中修改相关的数据类型占用的字节长度,防止数据溢出。

其中,所述修改待移植的嵌入式代码中与处理器架构相关的部分,还包括:在待移植的嵌入式代码中修改用来处理用户关系的异步事件的中断异常编号,并根据Cortex-A9处理器的bsp代码适应性修改用户自己的中断服务程序在异常表中的注册及异常的使能。

其中,所述修改待移植的嵌入式代码中与处理器架构相关的部分,还包括:使用Cortex-A9处理器中集成的32位定时器代替MicroBlaze平台中挂载在总线上的定时器IP核,修改待移植的嵌入式代码中与定时器相关的部分。

其中,所述修改待移植的嵌入式代码中与定时器相关的部分包括:在待移植的嵌入式代码中,将定时器的时钟频率修改为Cortex-A9处理器的CPU频率的1/2;将计数器的生长方向修改为向上累加;在自动模式下,若计数器值到达0则重新加载缺省值。

其中,所述使用Cortex-A9处理器中集成的外设代替MicroBlaze平台中以软核IP实现的外设,修改待移植的嵌入式代码中与外设相关的部分,具体包括:

使用Zynq平台的硬核中断控制器ScuGic代替MicroBlaze平台的软核中断控制器;

配置中断的触发的极性及形式;

建立中断处理函数及向量表的关系;

建立中断源和中断控制器的连接;

使能中断控制器。

其中,所述使用Cortex-A9处理器中集成的外设代替MicroBlaze平台中以软核IP实现的外设,修改待移植的嵌入式代码中与外设相关的部分,还包括:使用Cortex-A9处理器集成的IIC控制器代替MicroBlaze平台中以软核 IP实现的IIC控制器,通过配置Zynq平台的EMIO来配置IIC控制器的物理管脚。

其中,所述方法还包括,在MicroBlaze项目基础之上,使用tcl文件建立Zynq平台的bsp工程。

其中,所述在MicroBlaze项目基础之上,使用tcl文件建立Zynq平台的bsp工程,具体包括:

将所述tcl文件中sdk create_hw_project命令后修改为Zynq平台的硬件描述文件;

将所述tcl文件中sdk create_bsp_project命令中-proc选项后修改为ps7_cortexa9_0字符串;

将所述tcl文件中sdk create_app_project命令中-proc选项后修改为ps7_cortexa9_0字符串;

在xilinx vivado开发环境的cmd栏中使用xsct命令执行所述tcl文件生成Zynq版本的bsp工程。

本发明实施例的有益效果是:通过分析MicroBlaze平台的处理器与Cortex-A9处理器架构的不同之处,修改待移植的嵌入式代码中与处理器架构相关的部分,使MicroBlaze平台的优秀代码可以在新的Zynq平台上运行,避免了重复开发;通过使用Cortex-A9处理器中集成的外设代替MicroBlaze平台中以软核IP实现的外设,修改待移植的嵌入式代码中与外设相关的部分,使MicroBlaze平台的代码可以运行在性能更好的硬件架构上,进一步激发了原有代码的活力。

附图说明

图1为本发明实施例提供的一种将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

图1为本发明实施例提供的一种将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法的流程图。如图1所示,本发明实施例提供的将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法包括:

步骤S110:分析MicroBlaze平台的处理器与Cortex-A9处理器架构的不同之处,修改待移植的嵌入式代码中与处理器架构相关的部分。

步骤S120:使用Cortex-A9处理器中集成的外设代替MicroBlaze平台中以软核IP实现的外设,修改待移植的嵌入式代码中与外设相关的部分。

由于MicroBlaze平台和Cortex-A9平台在处理器架构和外设配置等方面有区别,所以需要在移植前了解待移植的代码中哪些部分是为贴合原MicroBlaze平台而设计,如果想发挥Cortex-A9新平台的优势,需要做哪些方面的更新升级。

MicroBlaze是基于软核的处理器,而Cortex-A9是基于硬核的ARMv7处理器,所以步骤S110中首先分析移植前后处理器的架构的不同之处,并修改待移植代码中与处理器架构相关的部分。

MicroBlaze处理器和Cortex-A9处理器在寻址方式上存在差异。例如,待移植代码中,在MicroBlaze处理器的总线上挂载了一个8位的IP核,使用32位指针时,MicroBlaze数据总线的字节有效信号为0xf,且地址线能够为任意整数,所以使用32位指针即可以操作该IP核的每一个地址。但是在Cortex-A9处理器上,使用32位指针时可以访问的地址只能是4的整数倍,否则会出现数据异常。因此,在本发明的优选实施例中,判断待移植代码中32位的处理器总线上是否挂载了8位的IP核,当存在这种情况时,在待移植代码中修改接口数据长度,使该IP核移植到Zynq平台上后可以和Cortex-A9处理器互联。

由于不同的处理器对于数据类型长度的定义可能有区别,例如对于int型的字长,有的处理器定义为4字节的长度,有的处理器定义为8字节的长 度。如果原平台对int的定义为8字节,新平台对int的定义为4字节,那么用新平台来运行原平台的代码就会发生数据溢出。为防止这种数据溢出的意外发生,在本发明的优选实施例中,验证Cortex-A9处理器中各数据类型占用的字节长度与MicroBlaze平台中相同数据类型占用的字节长度是否相等,如果某一种数据类型占用的字节长度不相等,则在待移植的嵌入式代码中修改该数据类型占用的字节长度。经验证,MicroBlaze平台与Cortex-A9处理器两种架构各数据类型的字长是一致的。

处理器对于异步事件的处理是基于异常机制的,所以正确的配置异常非常重要。MicroBlaze平台有9种不同的异常,其中用来处理用户关系的异步事件的中断异常编号为16,但是在Cortex-A9处理器中,中断异常编号为5,所以在本发明的优选实施例中,在待移植的嵌入式代码中修改用来处理用户关系的异步事件的中断异常编号,即将中断异常编号由16改为5,另外,对于用户自己的中断服务程序在异常表中的注册及异常的使能,xilinx公司提供了针对两种平台的bsp代码,待移植的代码中用户自己的中断服务程序在异常表中的注册及异常的使能是根据MicroBlaze平台的bsp代码编写的,在代码移植的过程中,应当参考Cortex-A9处理器的bsp代码适应性修改用户自己的中断服务程序在异常表中的注册及异常的使能。

当程序需要处理的事务有精确的时序要求时,充分发挥处理器中定时器的功能会达到非常高的效率,因此在嵌入式软件代码中定时器有很广泛的应用。软核处理器MicroBlaze的设计风格简约,架构中不集成定时器,而是使用了挂载在总线上的定时器IP核;而Cortex-A9处理器架构中集成了一个32位定时器,对于处理器来说此定时器的访问更加的便捷,所以用这个集成的定时器代替原本的定时器IP核会提高定时的精度。但是由于MicroBlaze处理器和Cortex-A9处理器的时钟可能是不同的,同样是1000个时钟,对于两个平台来说代表的实际时间可能是不同的,因此需要在待移植的代码中修改与定时器有关的部分。使用Cortex-A9集成的定时器时应注意:该定时器的时钟频率为CPU频率的1/2;计数器的生长方向为向上累加;在自动模式下, 若计数器值到达0则重新加载缺省值,应当据此修改代码中与定时器有关的部分,例如代码中利用到原定时器IP核的频率,那么可能需要将这个频率修改为Cortex-A9处理器的CPU频率的1/2,与Cortex-A9集成的定时器的频率对应。

MicroBlaze平台中的大量外设是通过软核IP来实现的,Cortex-A9处理器外设集成度更高,为了更好的发挥Cortex-A9平台的性能,步骤S120使用Cortex-A9处理器中集成的外设代替的原设计中的以软核IP实现的外设,由于硬件上架构发生了改动,所以需要对待移植的嵌入式软件代码做相应的修改。

中断是处理器获取异步事件的有效手段,大部分嵌入式程序设计更是与其息息相关。由于处理器需要应对的状况很复杂,所以中断需要由中断控制器统一管理。MicroBlaze的中断管理基于软核中断控制器,而Zynq平台则是由性能更好的硬核中断控制器ScuGic实现。在本发明的优选实施例中,在将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植时,使用Zynq平台的硬核中断控制器ScuGic代替MicroBlaze平台的软核中断控制器,配置中断的触发的极性及形式,建立中断处理函数及向量表的关系,建立中断源和中断控制器的连接,使能中断控制器。

MicroBlaze中实现IIC控制器的方式为软核IP,但是当IIC从设备没有正确返回ACK信号时会导致程序出现“假死”状态,因此在本发明的优选实施例中,使用Cortex-A9处理器集成的IIC控制器代替MicroBlaze平台中以软核IP实现的IIC控制器,即使从设备没有正确ACK信号返回,程序也可以灵活的执行。另外,MicroBlaze的IIC控制器可以配置的物理管脚的选择有很多,但是在Zynq平台中IIC控制器可以配置的物理管脚受到Bank的限制,因此在本施例中,通过配置Zynq平台的EMIO来配置IIC控制器的物理管脚,使用xilinx公司提供的EMIO配置方法使物理管脚的选择更加灵活。

MicroBlaze和Zynq两种平台的软件开发通常都采用xilinx出品的SDK,一种基于eclipse界面、定制版gcc编译器和gdb调试器的嵌入式开发环境。 使用此环境在开发两种平台的用户程序时区别不大,但是跟平台相关的底层bsp代码有着本质的不同,bsp是介于硬件和操作系统中驱动层程序之间的一层,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能够更好的运行于硬件主板。为了提供一种简便的在MicroBlaze项目基础之上建立Zynq的bsp工程的方法,在本发明优选实施例中,在MicroBlaze项目基础之上,使用tcl文件建立Zynq平台的bsp工程。

xilinx公司提供的SDK支持使用tcl文件生成工程,且原厂提供了一些参考版本的tcl文件。

对于建立MicroBlaze工程的tcl文件,

将sdk create_hw_project命令后修改为Zynq的硬件描述文件,如zynq.hdf;

将sdk create_bsp_project命令中-proc选项后修改为ps7_cortexa9_0字符串;

将sdk create_app_project命令中-proc选项后改为ps7_cortexa9_0字符串;

在xilinx vivado开发环境的cmd栏中使用xsct命令执行修改后的tcl文件即可以生成Zynq版本的bsp及工程。

综上所述,本发明提供的一种将MicroBlaze平台的嵌入式代码向Cortex-A9处理器移植的方法,与现有技术相比,具有以下有益效果:

1、通过分析MicroBlaze平台的处理器与Cortex-A9处理器架构的不同之处,修改待移植的嵌入式代码中与处理器架构相关的部分,使MicroBlaze平台的优秀代码可以在新的Zynq平台上运行,避免了重复开发。

2、通过使用Cortex-A9处理器中集成的外设代替MicroBlaze平台中以软核IP实现的外设,修改待移植的嵌入式代码中与外设相关的部分,使MicroBlaze平台的代码可以运行在性能更好的硬件架构上,进一步激发了原有代码的活力。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号