【随手笔记】使用J-LINK读写芯片内存数据
第一种使用JLINK.exe
1. 打开j-link.exe
2.输入【usb】
3. 连接芯片
- 输入【connect】
- 输入芯片型号【STM32L071RB】
- 输入连接方式 【S】 使用SWD连接方式
- 输入连接速率 【4000】
- 连接成功
4. 输入【?】查看指令提示
5. 读写指令
Mem Mem [<Zone>:]<Addr>, <NumBytes> (hex) Read memory and show corresponding ASCII values.
Mem8 Mem8 [<Zone>:]<Addr>, <NumBytes> (hex) Read 8-bit items.
Mem16 Mem16 [<Zone>:]<Addr>, <NumItems> (hex) Read 16-bit items.
Mem32 Mem32 [<Zone>:]<Addr>, <NumItems> (hex) Read 32-bit items.
Write1 W1 [<Zone>:]<Addr>, <Data> (hex) Write 8-bit items.
Write2 W2 [<Zone>:]<Addr>, <Data> (hex) Write 16-bit items.
Write4 W4 [<Zone>:]<Addr>, <Data> (hex) Write 32-bit items.
Write8 W8 [<Zone>:]<Addr>, <Data> (hex) Write 64-bit items.
Erase Erase [<SAddr>, <EAddr>] Erase flash (range) of selected device.
Mem 读内存
mem8 读8比特内存
mem16 读16比特内存
mem32 读32比特内存
w1 写8比特内存
w2 写16比特内存
w4 写32比特内存
h 停止cpu运行的程序
setbp 设置断点
g 跳到代码段地址执行
s 单步执行(调试用)
r 复位
q 退出
数据操作都是以16进制(HEX)格式
-
在指定地址读8字节数据(内存以8位读)
Mem8 0x08000500 0x08 -
擦除指定地址范围数据
Erase 0x08000500 0x08000600 -
写入指定地址4字节数据(内存以8位写)
W1 0x08000500 0x31 0x20 0x31 0x20 -
操作完成后使用指令复位一下,复位会把更改的重新烧录
【r】复位指令
第二种方式 使用J-Flash
1. 打开软件,连接上芯片
2. 读出芯片flash数据
3. 点击写入的按钮,在窗口中特定地址写入特定的数据
示例:在特定的地址写入16个0x01
写入的数据标红
4. 然后重新烧录改写的固件
完成内存数据的改写