1 新建并配置项目
1.1 新建项目
我这里想模拟Cortex-M55核心,因此选择SSE-300-MPS3
由于是简单教程,我只想输出一个最简单的Hello World,因此仅勾选串口相关的组件
这里还需要特殊勾选一下以下选项
1.2 配置Target
Software Model处选择TrustZone disabled
Read/Write Memory Areas可以视情况也做对应的修改,我这里选择修改为和官方Demo一致的参数
1.3 配置Output
勾选Create HEX File
1.4 配置C/C++(AC6)
Misc Controls 处添加 -Wno-padded -Wno-covered-switch-default
1.5 配置Linker
取消勾选 Use Memory Layout from TargetDialog,并选择合适的Scatter File,我这里选择使用官方给定的Sct文件,这个文件路径一般为 ./RTE/Device/SSE-300-MPS3/linker_SSE300MPS3_secure.sct
1.6 配置Debug
接下来配置一下AVH模拟器路径,Use处选择Models ARMv8-M Debugger
点击Settings按钮进入配置
Commnad处填写模拟器地址,一般需要先找到Keil安装目录,然后根据目录填写模拟器地址;Target处填写cpu0
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 执行编译并开始仿真
执行编译
开始仿真
4 处理错误
4.1 Error: L6218E: Undefined symbol wait_us (referred from device_definition.o).
执行第一次编译后会出现下图红色方框的错误,定位到错误点可以看到是和I2C有关的错误,应该是这个函数没有被定义。
解决方法为导入另外的三个工具包
这个错误应该是Keil自身的Bug,我们压根没有引入I2C,为什么要define I2C0_SBCON_S呢?
4.2 命令行没有输出
运行项目后可能会出现命令行没有输出的情况,这个问题一般是导入STDOUT模块的时候没有导入Variant等级为User的STDOUT模块,请修改后再进行编译。
4.3 报错找不到Telnet
Windows默认不自带Telnet.exe,需要手动打开这个软件