xiaolong_ba 发表于 2015-4-14 21:21:44

通过SWD协议如何把Bootloader烧写至RAM

Hi,大家好
        想请教大伙些问题,以下是问题的相关背景
1、本人用的是富士通的MB9B218S(CortexM3内核的);
2、参照该论坛的《浅谈SWD协议》后,现已可以成功访问任意寄存器包括内核调试寄存器;
3、富士通序列的单片机跟SMT32的架构有点不一样,对于STM32单片机按道理我可以访问任意寄存器后,我只需通过SWD对储存控制器进行配置即可把数据烧写至STM32的ROM中;但是富士通序列的单片机的储存控制器只是让单片机进入编程模式,然后用它自带的嵌入式编程算法(没有寄存器来配置这些算法)来烧写数据至ROM;因此,我只能通过SWD把Bootloader烧写至RAM(我知道用编译器可以做到),在RAM中运行Bootloader程序对FLash进行编程擦除;
4、我通过SWD把Bootloader烧写至RAM的步骤:
      Halt住CPU、使能调试、设置xPSR为0x01000000、烧写至RAM(RAM地址是0x20000000~0x20010000)、设置PC为0x200000000、设置MSP为0x20010000、运行CPU;

问题一、
                由于是32位长度访问,当我向RAM写数据时,比如Bootloader数据的前面四个数据从低位到高位的顺序是(0x48、0x49、0x50、0x51),又由于SWD协议的读和写数据都是从低位开始的,所以当我向RAM的起始地址0x20000000开始写数据时是不是把0x51504948写进去?如何不是?该如何写?

问题二、
        如果问题一的方法是对的,那么为什么烧写之后,Flash还是没有擦除的迹象?是不是通过SWD把Bootloader烧写至RAM的步骤有误?


请各位大神,指点迷津,谢谢!{:cry:}

abbott.yang 发表于 2015-7-31 22:14:33

浅谈SWD协议
没找到这个帖子了...

abbott.yang 发表于 2015-8-1 19:07:33

求文档 <<浅谈SWD协议>>

xiaolong_ba 发表于 2015-8-1 21:50:21

abbott.yang 发表于 2015-8-1 19:07
求文档

这个你可以看《CortexM3权威指南》,里面有讲到{:smile:}

abbott.yang 发表于 2015-8-2 07:55:54

xiaolong_ba 发表于 2015-8-1 21:50
这个你可以看《CortexM3权威指南》,里面有讲到

多谢.
<<CortexM3 技术参考手册>>里面要详细点

abbott.yang 发表于 2015-8-17 15:14:31

楼主,你的项目搞定没?

abbott.yang 发表于 2015-8-17 17:23:04

我要把SWD相关的帖子都顶上去

momojiang 发表于 2020-11-17 16:47:42

楼主,你的项目做的怎么样了,能提供一下思路吗?

mypear 发表于 2021-1-21 17:55:27

我是这样搞得:串口或以太网(4g)把IAP和APP接收存在外部flash。发个升级指令,把IAP读入RAM再运行,iap功能删除芯片FLASH,把新APP写入芯片FLASH。

lonely9391 发表于 2021-10-8 17:57:17

楼主是否可以分享一下通过RAM烧写flash经验
页: [1]
查看完整版本: 通过SWD协议如何把Bootloader烧写至RAM