注册

CpuDbg x96

查看: 264|回复: 0
收起左侧

stm32 information

[复制链接]
发表于 2024-8-25 19:25:07 | 显示全部楼层 |阅读模式
keil生成bin文件:
keil选项 -> User -> After Build/Rebuild -> Run #1 或 Run #2 -> 输入<romelf --bin -o "$L@L.bin" "#L"> 即可.

openocd:
dap:  openocd -f interface/cmsis-dap.cfg -c "transport select swd" -f target/stm32f1x.cfg
jlink:  openocd -f interface/jlink.cfg -c "transport select swd" -f target/stm32f1x.cfg
stlink: openocd -f interface/stlink-v2.cfg -c "transport select hla_swd" -f target/stm32f1x.cfg

Pin count:
T = 36 pins
C = 48 pins
R = 64 pins or 66 pins
V = 100 pins
Z = 144 pins
I = 176 pins/176+25 balls
X = 240+25 balls

Flash memory size:
6 = 32 Kbytes of Flash memory
8 = 64 Kbytes of Flash memory
B = 128 Kbytes of Flash memory
C = 256 Kbytes of Flash memory
E = 512 Kbytes of Flash memory
F = 768 Kbytes of Flash memory
G = 1024 Kbytes of Flash memory

Package
H = BGA
H = TFBGA ECOPACK2
T = LQFP
U = VFQFPN
Y = WLCSP
K = UFBGA pitch 0.65 mm ECOPACK2

Temperature range
6 = Industrial temperature range, –40 to 85 °C.
7 = Industrial temperature range, –40 to 105 °C.

三种启动方式:
1)BOOT0:0 BOOT1:X  从主闪存存储器启动(ICP IAP)
   主闪存存储器是 STM32 内置的 Flash,该启动方式是让程序正常运行的启动方式。
   将主Flash地址0x08000000映射到0x00000000,这样代码启动之后就相当于从0x08000000开始。

2)BOOT0:1 BOOT1:0  从系统存储器启动(ISP)
   系统存储器是 STM32 内部的一块特定的 ROM,在 STM32 出厂时,由 ST 在这个区域预置了一段 BootLoader,用户无法修改。
   复位后,从系统存储器地址0x1FFFF000开始执行代码。系统存储器存储的其实就是STM32自带的bootloader代码,
   在bootloader中提供了UART1的接口,通过此接口可以将用户所需的程序代码下载到主Flash中,下载完毕后,此时程序代码已经存储在主Flash当中,
   这时切换启动模式(从主Flash启动),复位后所执行的就是刚刚下载到Flash中的代码了。

3)BOOT0:1 BOOT1:1  从内置 SRAM 启动(冷启动攻击就是通过此模式攻击)
   内置 SRAM,既然是 SRAM,自然没有断电存储的能力,所以该模式一般用于程序调试。
   将RAM地址0x20000000映射到0x00000000,这样代码启动之后就相当于从0x20000000开始。

以下是一些测试:

-------------------------------
stm32f103c6t6一些测试:

openocd常用命令:
复位: reset
       当 nRESET 信号由低变为高电平时, ARM 处理器执行下列操作:
       1. 强制 CPSR 中的 M[4:0]变为 b10011 (管理模式)
       2. 置位 CPSR 中的 I 和 F 位
       3. 清零 CPSR 中的 T 位
       4. 强制 PC 从地址 0x00 开始对下一条指令进行取指
       5. 返回到 ARM 状态并恢复执行

中断: halt
加锁: stm32f1x lock bank_id(需要复位或断电重启)
解锁: stm32f1x unlock bank_id(解锁后原程序会被擦除.需要复位或断电重启)
提取固件:  dump_image 保存文件名 提取目标起始地址 提取目标大小
                dump_image bin/sram.bin 0x20000000 0x8000
                dump_image bin/flash.bin 0x08000000 0x8000
                dump_image bin/bootloader.bin 0x1FFFF000 0x8000
烧写固件:  flash write_image [erase] 烧写文件名 烧写到目标的起始地址
                flash write_image erase bin\\stm32_test_bin.bin 0x08000000


RDP0时, flash模式启动,可以提取flash, 可以提取bootloader, 可以提取sram.
RDP0时, system模式启动,可以提取flash, 可以提取bootloader, 可以提取sram.
RDP0时, sram模式启动,可以提取flash, 可以提取bootloader, 可以提取sram.

RDP1时, flash模式启动,无法提取flash, 无法提取bootloader, 可以提取sram.
RDP1时, system模式启动,无法提取flash, 无法提取bootloader, 可以提取sram.
RDP1时, sram模式启动,无法提取flash, 无法提取bootloader, 可以提取sram.

这里需要注意的是, 每次切换模式后,需要断电重启, 否则模式不会自动切换.
每次断电重启保存的SRAM数据都不一样, 改天买个液氮测试一下冷冻后断电重启是否能保存SRAM数据.

关于连接OPNCODE:
使用正版JLINK通过SWD连接目标设备,要连VTREF SWCLK SWDIO GND 四根线.
使用山寨JLINK通过SWD连接目标设备,短接3.3V, 可以只连 SWCLK SWDIO GND 三根线. 如果短接NC,那和正版一样,需要连接四根线.

开启RD1读保护时:(以下未测试)
一:不连接调试引脚时(包括SWD JTAG等):
1. 启动flash模式, 通电运行,不会锁定flash.
2. 启动system模式, 通电运行, 会锁定flash.
3. 启动sram模式, 通电运行, 会锁定flash.

二: 连接调试引脚时(包括SWD JTAG等):
1. 启动flash模式, 通电运行,会锁定flash.
    拔掉调试引脚线, 复位, 仍然会锁定flash, 必须断开引脚线,同时断电,重新上电,才会解锁flash,
    只断引脚并复位, flash仍然是锁存.
2. 启动system模式, 通电运行, 会锁定flash.
3. 启动sram模式, 通电运行, 会锁定flash.
-------------------------------

------------------------------------------------------------------------------------------
to be continue...



回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注册

QQ|Archiver|手机版| CpuDbg x96

GMT, 2024-10-14 04:31 , Processed in 0.062500 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表