链接文件

链接文件

test.c编译放入特定位置

script
1
2
3
4
5
6
7
8
9
10
.ccmram :
{
. = ALIGN(4);
_sccmram = .; /* create a global symbol at ccmram start */
*(.ccmram)
*(.ccmram*)
*test.o(*.bss* *.data*)/*编译的结果*/
. = ALIGN(4);
_eccmram = .; /* create a global symbol at ccmram end */
} >CCMRAM AT> FLASH

hardfault error

确定使用的是那个堆栈,MSP或者是PSP,确定以后,在内存查看窗口,输入堆栈的地址,以这个地址开始的8个32位数值,应该依次是R0,R1,R2,R3,R12,R14,R15,XPSR的数值,据此判定你的堆栈地址是不是对的(有时需要考虑堆栈的增长方向)。R14,R15的地址就是我们出错的代码所在的地址,需要在这个地址基础上,首先偶数对齐,然后向上减去8个字节。

需要考虑的是,在使用MSP的时候,有出错的地方并不一定在R14,R15处,而是在XPSR往后的第二个地址处,在这个附近查找,排除故障。

1
2
3
4
5
6
7
8
st=>start: 开始
op=>operation: My Operation
cond=>condition: Yes or No?
e=>end
st->op->cond
cond(yes)->e
cond(no)->op
&

闪存装载软件

STM32CubeProgrammer的闪存装载软件

IAR程序放入.bss段

1
2
#pragma section=".bss"

openocd添加第三方设备

  • 在./tcl/target中,添加自己设备的.cfg文件,此文件用于编译后传递到scripts中供用户调用,此文件用于编译后传递到scripts中供用户调用

  • 在./src/flash/nor中,添加自己设备的.c文件,此文件用于告知openocd你文件的flash烧录流程,此文件用于告知openocd你文件的flash烧录流程

  • 在 /src/flash/nor/drivers.c中,添加自己设备的设备名,此处让openocd知晓你的设备,此处让openocd知晓你的设备.

  • 在flash/nor中,更改Makefile.am,令openocd的编译过程可以引用到你刚刚添加的文件.

-->

请我喝杯咖啡吧~

支付宝
微信