在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 982|回复: 3

[求助] 关于swd如何访问soc外设寄存器的问题

[复制链接]
发表于 2024-2-23 14:25:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

我的操作流程
1.初始化swd,切到swd模式,复位swd
2.读dp的chip id,读出来是0x2ba01477,这一步没错
3.写dp的ctrl,0x50000000,打开debug port和时钟
4.写dp,选择ap的bank为f0,读ap的idr,读出来是0x24770011(不知道这个值对不对)
5.写dp,选择ap的bank为00,写ap的csw为0x02,设置读写位宽为32bit;
6.写apd的tar寄存器为外设的寄存器地址。读一下tar,发现成功写进去了。(外设的寄存器地址确定可访问)
7.读ap的drw,返回fault;这里出现了错误。

听同事说访问寄存器要halt cpu。
我尝试在5 6步之间用swd写m3的debug寄存器(都是网上搜的),但是在写第二个寄存器时返回fault,应该是第一个就没写进去。
a)Write 0xA05F0001 to DHCSR, which halting debug enabled.
b)Write 0x01 to DEMCR. This enable Reset Vector Catch.
c)Write 0xFA050004 to AIRCR. This reset the core.

我也尝试用cpu直接操作这几个寄存器,然后第7步仍然返回fault。


所以我的疑问就是,只访问外设的寄存器,不访问core register,需不需要halt cpu,如果需要,怎么操作。
另外我的操作流程有没有问题?



发表于 2024-2-23 17:00:52 | 显示全部楼层
不需要
 楼主| 发表于 2024-2-26 09:41:48 | 显示全部楼层


感谢回复,再请问访问外设的寄存器,返回fault,原因有哪些?
发表于 2024-2-26 11:04:21 | 显示全部楼层
寻址不对  总线矩阵哪儿寻址到错误区间
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 01:52 , Processed in 0.016624 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表