本文主要讲述使用 IAR 调试 G9 的 R 核。目前 G9 不支持在线烧写 FLASH,只能通过 SDFactoryTool 来烧写工程编译生成的 bin 文件,并且不支持通过 Debugs 方式直接调试,JLINK 只能支持 attach 在线调试,也就是暂停板子上运行的程序调试。
二、使用环境
硬件:SemiDrive SD004_G9X REF_A03_131 DEMO Board,JLINK V11
软件:G9 PTG5.0,IAR EW for Arm 9.30.1
三、创建 IAR 工程
进入 /buildsystem/ 工程目录,执行以下命令
cd rtos/freertos_safetyos
make safety-g9x-ref iar
成功创建工程后会在 /buildsystem/rtos/freertos_safetyos/ide/IAR/safety-g9x-ref/ 下生成 safety-g9x-ref.eww 工程,可以使用 IAR 打开这个工程,如图是其目录结构。
四、编译 IAR 工程
1、设置 IAR 环境
在 options->General options->Floating-point setting 下设置 FPU 参数为 VFPv3,如下图:
2、编译
点击 IAR 工具菜单栏中编译选项选择编译,如下图:
出现以下,表示编译完成。
3、常见编译错误
3.1 找不到 malloc.h
在报错文件下添加以下两个头文件
#include <heap.h>
#include <stdlib.h>
在报错文件下删除以下头文件
#include<malloc.h>
3.2 缺少 AVB_COMPILATION 宏定义
在 option->C/C++Comlier->Processor->Defined symbols 中添加 AVB_COMPILATION 定义 |
3.3 栈对齐方式不能满足变量要求
将报错文件的对应变量设置为 static 变量。 |
五、烧录
使用 SDFactoryTool 工具加载 PAC 包,选择 OSPI1_SAFETY_OS 镜像替换为 IAR 编译的 binary 文件,该文件是 /buildsystem/rtos/freertos_safetyos/ide/IAR/safety-g9x-ref/safety-g9x-ref_ddr/Exe/safety-g9x-ref.bin 下,如下图:
六、调试
烧录完成后,取消勾选 Verify download ,如下图:
将开发板拨码 0000,上电启动,使用 IAR 中 Project → Attach to Running Target 启动在线调试,在 Safety 串口下输入 help 命令,如下图,即可查看程序跑到什么位置,还可以 在 IAR 工具下通过 View 工具栏查看 Call Stack 、Registers 等信息。
以上就是使用 IAR 调试 R5 的过程。
七、参考文档
《G9_SDK_IAR编译环境参考手册_Rev1.2.pdf》
《SemiDrive_G9_IAR_参考手册.pdf》
八、预告
鄙人使用 IAR 调试 R5 经验少,如果有更多 G9 使用 IAR 调试 R5 的问题,欢迎在评论区留言,同时,接下来也会更新更多关于 G9 的博文,喜欢这个系列博文的小伙伴敬请关注我吧。
评论