上高清大图:
MPU的开发相对MCU还是要复杂很多,整个开发环境的搭建需要用到以下工具和代码:
- at91bootstrap代码 - 用于MPU boot时初始化系统时钟、打印输出接口、DDR3控制器等,来源Microchip放在Github上的源码。
- SAMA5D27 Harmony3工程 - 用到Microchip MPLab X工具和Harmony3配置工具,来完成对SAMA5D27的时钟和外设驱动的配置以及生成Bare-metal代码。
- RT-Thread源码 - 来自Github,clone后将SAMA5D27的Bare-metal代码加入到RT里面,配置好编译依赖关系,等待编译。
- env tools - 从RT-Thread官网给出的链接进行下载,用来编译RT-Thread源码和SAMA5D27 Bare-meta代码。
- Eclipse for Embedded CPP - 集成开发IDE,主要用来建立代码调试仿真环境。由于Eclipse提供的Debug功能支持直接导入ELF文件进行调试,而且提供对Jlink等仿真工具的支持,所以选用了该工具。
- Segger软件工具 - 需要用到JLinkGDBServer,用来和第三方GDB工具配合完成代码的下载和调试工作
- arm-none-eabi工具 - 下载于ARM官网,用到其提供的GDB工具
MPU的代码移植工具耗费了非常多的时间,接下来简单说明下搭建开发时需要做的一些软件的工作吧:
- 在Linux下用arm-none-eabi-gcc工具编译了at91bootstrap代码,Microchip给出的代码提供了多种配置,选用好配置文件后,记得设置为不加载应用模式,然后make就可以编译出二级bootloader代码。
- 重新建立了libcpu目录,没有直接使用RT-Thread源码,在原来代码上做了修改,因为Microchip MPU支持中断向量的remap,来提升中断响应效率。要改的地方太多,所以重建目录自己一点点改和调试,调试启动代码部分确实非常痛苦。
- Eclipse下在配置debug工具的时候,由于Windows下GDB软件无法提供--version的响应,需要手动启动JLinkGDBServer,在Linux没有这个问题。另外要配置一个脚本,用于开始load RT-Thread代码之前先将at91bootstrap生成的boot文件下载到内部SRAM并执行。
- 每次调试后都需要手动复位一次MPU来保证GDB的连接和下载校验。
|