Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread Studio
RT-Thread活动
瑞萨_RA6M4
基于RT-Thread+RA6M4的虚拟仪器开发:第二章使用仿真器
发布于 2022-07-06 21:46:35 浏览:1212
订阅该版
[TOC] # 第二章仿真器使用 ## 前言 为了方便今后的开发,有必要了解芯片从上电到程序启动,到运行到应用的整个过程。借助于仿真器我们可以提高分析的直观性和效率。 代码见 https://gitee.com/qinyunti/ra6m4 ## 仿真环境搭建与使用 在第一章其实我们已经使用了仿真器进行程序下载与运行。这一节再更多的介绍一些细节。 ### Jlink-OB 从原理图可以看出板载Jlink-OB默认配置为 For normal operation (on-board debugger): E37 open E35 open, E36 close 即接到本板芯片。 也可以按照如下配置,通过J10对外,单独作为仿真器使用。 For J-Link debug out: E37 open E35 close, E36 open E26, E27, E28, E29 open 而需要调试Jlin-OB本身则可以按如下配置,通过J17外接仿真器来仿真。 For external debug: E37 close E35 open, E36 close 通过E25短接可以看出,JLINK的USB接口J11可以给板子供电。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/f5aed225d9282fcb4a9ed718a1a9bcbb.png.webp) ### Jlink配置 点击如下左边齿轮图标,打开Debug配置界面 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/6c16d859b5c637546c070bc27c600208.png) 主要选项卡下配置可执行程序等 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/61f4337a949579bcc709d1af948f82be.png.webp) Debugger选项卡下,配置Jlink的程序和参数 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/6c1ef762fc2d1ad00ae9f2485ea35121.png.webp) Startup选选项卡,配置初始化过程 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/c24268fbdf3a4684685888df0c42aaea.png.webp) 下载选项卡 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/78e781ace1f31e4cb027e235669d4adc.png.webp) 其他选项卡源,公共选项卡可以去看看。 重点提一下SVD Path选项卡, SVD文件提供硬件描述信息,比如外设寄存器方便调试查看寄存器。 参见https://www.keil.com/pack/doc/CMSIS/SVD/html/index.html 搜索rtthread安装目录下*svd,可以看到应该位于芯片支持包下 \repo\Extract\Chip_Support_Packages\RealThread\xxx\xxx\debug\svd 但是遗憾的是只有STM32等芯片的没有renease的。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/52e54992e94dcb31e997cdc1713c8572.png.webp) 从rtthread和renease官网都没有搜到svd文件的下载地址,既然cmsis-svd是keil提出的。在MDK安装目录下也没有搜索到RA6M4的SVD文件,只有其他芯片的。那么就去keil官网下看看,其他芯片有也是位于软件包中,那么去keil下载对应软件包就应该有。 在https://www.keil.com/下搜索RA6M4 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/211a6ac664a8626a55730e600eaa6fe1.png.webp) 点击进去 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/f0d17896196ab57586765bdf3a1ce51d.png.webp) 点击如下位置下载软件包 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/9ef1c2a6a538108d2f9e6e959525ab71.png.webp) 下载得到Renesas.RA_DFP.3.8.0.pack 双击解压(提前是已经安装MDK) 记住解压路径 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/5b3aeaedb89d599a4103f831880f5f5f.png.webp) 去改路径下查找 C:\Users\qinyu\AppData\Local\Arm\Packs\Renesas\RA_DFP\3.8.0\SVD 注意\AppData默认是隐藏的需要先在文件浏览器中设置显示隐藏文件夹。 找到R7FA6M4AF.svd保存到工程下。 还有R7FA6M4AF.sfd和R7FA6M4AF.SFR,sfr,sfd来源于svd,sfd是svd寄存器的位域描述。我们这里暂时不用。 然后再在Jlink配置下的SVDpath选项卡下选择该文件 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/3feb06e27aad132abd75a571ba995b53.png.webp) 点击如下右边甲壳虫图标,进入Debug界面 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/6c16d859b5c637546c070bc27c600208.png) 可以看到默认停在了main函数中,从右边断点界面可以看出是因为在main函数打了断点。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/ca22cdb79db51203e0f3e16d7292649e.png.webp) ## 基本仿真操作 按照如下调出对应的窗口 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/528c0a3135bfcaafbfef0ff721fa278f.png.webp) ### 寄存器查看 #### 外设寄存器 按照上一节设置SVD文件路径后可以看到外设寄存器如下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/7ee817516d022862a95da91e41b80825.png.webp) 勾选模块 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/6cfd44e34afeb2d38ff845391b0ba007.png.webp) 会弹出内存窗口显示值 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/766118d5a3df5158d3d6ed80be01cb4e.png.webp) 还有一种方法是通过表达式去看 比如要看CAN0的寄存器可以定义全局变量 static R_CAN0_Type * can0_reg = ((R_CAN0_Type *) R_CAN0_BASE); 在代码中使用变量 can0_reg = can0_reg;避免被优化掉。 仿真时添加表达式can0_reg即可 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220719/40d1684be1d03b3bd670d27d15b82cfc.png.webp) #### CPU寄存器 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/4fd9e704dd8d8a919c60dbb0c0c1ae0f.png.webp) #### 内核模块寄存器 注按如下配置无法显示,查看内核寄存器如何配置待研究。 如果安装过MDK会在C:\Users\qinyu\AppData\Local\Arm\Packs\ARM\CMSIS\xxx\Device\ARM\SVD路径下搜到 对应内核的SVD文件,如果没有,也可以去https://www.keil.com/dd2/pack/下下载cmsis:ARM.CMSIS.5.9.0.pack ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/ced3982c38c98a3090cf07b0d2983cc8.png.webp) 双击解压,记住路径 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/ddcbc51eb96628760eecf628547cab29.png.webp) 去路径 C:\Users\qinyu\AppData\Local\Arm\Packs\ARM\CMSIS\5.9.0\Device\ARM\SVD下复制ARMCM33.svd到工程目录,并安之前的方法添加到SVD path路径。 ### 程序执行 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/c482d63594b7ee9a4e1549d393adfa8b.png) ### 断点 代码行前面双击打断点 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/5c440c28847e4d8cf582a2b5235884b6.png.webp) 右边有一些操作按键可以看一看 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/46f408e94f38684b86cdd44300c89a82.png) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/f4c2f7e7b2c2292914c20f31d2c6e40b.png.webp) 上面的添加监看和断点事件可以设置语句级别的条件断点。 内存级别数据断点查看后面内存部分。 ### 变量 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/94024c3b7f1bdf4a242da826095785c1.png.webp) ### 汇编 需要调出反汇编窗口,点击汇编窗口再按单步运行就是对应的指令级别的单步。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/d5ee492c6eb6f09155b3601d4cb6fae3.png.webp) ### 内存 需要调出内存窗口 添加内存查看 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/46c0da2727ea91801b57467b9b4285d6.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/76a6861912edafae5da38f18fe6485af.png.webp) 设置数据断点 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/4ced7ab661ef3b11b7e26a45311808c0.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/b53156202c5a20401fc547d2f8c42fa4.png.webp) 断点窗口可以看到了数据断点 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/b5f061f6115f10f46ceeef2e1babd0b2.png.webp) ### 调用栈 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220706/d5fad6443fe3899cfac5020b07f346f4.png.webp) ## 总结 按照文章中提到的方式添加SVD文件,仿真过程中发现SCI的寄存器对应不上,大小端刚好反了,暂时不确认什么原因(可以参见外设寄存器使用表达式的方式查看)。
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
qinyunti
这家伙很懒,什么也没写!
文章
30
回答
1
被采纳
0
关注TA
发私信
相关文章
1
(苏州站)RT-Thread物联网开发者沙龙【已结束】
2
(成都站)RT-Thread物联网开发者沙龙
3
(深圳站)RT-Thread物联网开发者沙龙
4
(西安站)RT-Thread物联网开发者沙龙
5
成都站2018 RT-Thread开发者沙龙回顾及PPT下载
6
2018 RT-Thread物联网开发者沙龙(北京站)
7
2018 RT-Thread物联网开发者沙龙(南京站)
8
第十三届研电赛RT-Thread企业专项奖发布通知
9
RT-Thread应用作品征集大赛开始啦!
10
你的投票将决定RT-Thread官网应该优先准备的文档是哪些
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部