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");
#endifint 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,需要手动打开这个软件
5 参考资料
- Telnet找不到时的安装(启动)教程 (Windows)_无法安装telnet客户端-CSDN博客