【Keil&AVH】使用Keil新建Arm Visual Hardware(AVH)项目

1 新建并配置项目

1.1 新建项目

我这里想模拟Cortex-M55核心,因此选择SSE-300-MPS3
image.png
由于是简单教程,我只想输出一个最简单的Hello World,因此仅勾选串口相关的组件
image.png
这里还需要特殊勾选一下以下选项
image.png

1.2 配置Target

Software Model处选择TrustZone disabled
image.png
Read/Write Memory Areas可以视情况也做对应的修改,我这里选择修改为和官方Demo一致的参数
image.png

1.3 配置Output

勾选Create HEX File
image.png

1.4 配置C/C++(AC6)

Misc Controls 处添加 -Wno-padded -Wno-covered-switch-default
image.png

1.5 配置Linker

取消勾选 Use Memory Layout from TargetDialog,并选择合适的Scatter File,我这里选择使用官方给定的Sct文件,这个文件路径一般为 ./RTE/Device/SSE-300-MPS3/linker_SSE300MPS3_secure.sct
image.png
image.png
image.png

1.6 配置Debug

接下来配置一下AVH模拟器路径,Use处选择Models ARMv8-M Debugger
image.png
点击Settings按钮进入配置
image.png
Commnad处填写模拟器地址,一般需要先找到Keil安装目录,然后根据目录填写模拟器地址;Target处填写cpu0
image.png

2 编写代码

简单编写一个程序

#include <stdio.h>
#include "stdout_USART.h"

#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
__asm("  .global __ARM_use_no_argv\n");
#endif

int main(){
    stdout_init();
    printf("Hello World!\r\n");
}

3 执行编译并开始仿真

执行编译
image.png
开始仿真
image.png

4 处理错误

4.1 Error: L6218E: Undefined symbol wait_us (referred from device_definition.o).

执行第一次编译后会出现下图红色方框的错误,定位到错误点可以看到是和I2C有关的错误,应该是这个函数没有被定义。
image.png
解决方法为导入另外的三个工具包
image.png

这个错误应该是Keil自身的Bug,我们压根没有引入I2C,为什么要define I2C0_SBCON_S呢?

4.2 命令行没有输出

运行项目后可能会出现命令行没有输出的情况,这个问题一般是导入STDOUT模块的时候没有导入Variant等级为UserSTDOUT模块,请修改后再进行编译。
image.png

4.3 报错找不到Telnet

Windows默认不自带Telnet.exe,需要手动打开这个软件
image.png

参考资料

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值