完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现在想把变量放到STM32F407芯片的backup sram中。咱们论坛上的方法我也用了个遍,都不行。 编译没有错误,也没有相关警告,但是在map文件中就是找不到定义的变量。 我用的系统是4.1.0` 我在C文件中定义变量: static uint8t backupdata[10] __attribute((section(“.backup_sram”))); lds文件内容如下:后面附图,红框中是我添加的部分 /* * linker script for STM32F407ZG with GNU ld */ /* Program Entry, set to mark it as “used” and avoid gc */ MEMORY { ROM (rx) : ORIGIN =0x08000000,LENGTH =1024k RAM (rw) : ORIGIN =0x20000000,LENGTH =128k BKP_SRAM (rw) : ORIGIN =0x40024000,LENGTH =4k } ENTRY(Reset_Handler) _system_stack_size = 0x400; SECTIONS { .text : { 。 = ALIGN(4); _stext = 。; KEEP(*(.isr_vector)) /* Startup code */ 。 = ALIGN(4); *(.text) /* remaining code */ *(.text.*) /* remaining code */ *(.rodata) /* read-only data (constants) */ *(.rodata*) *(.glue_7) *(.glue_7t) *(.gnu.linkonce.t*) /* section information for finsh shell */ 。 = ALIGN(4); __fsymtab_start = 。; KEEP(*(FSymTab)) __fsymtab_end = 。; 。 = ALIGN(4); __vsymtab_start = 。; KEEP(*(VSymTab)) __vsymtab_end = 。; /* section information for utest */ 。 = ALIGN(4); __rt_utest_tc_tab_start = 。; KEEP(*(UtestTcTab)) __rt_utest_tc_tab_end = 。; /* section information for at server */ 。 = ALIGN(4); __rtatcmdtab_start = 。; KEEP(*(RtAtCmdTab)) __rtatcmdtab_end = 。; 。 = ALIGN(4); /* section information for initial. */ 。 = ALIGN(4); __rt_init_start = 。; KEEP(*(SORT(.rti_fn*))) __rt_init_end = 。; 。 = ALIGN(4); PROVIDE(__ctors_start__ = 。); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE(__ctors_end__ = 。); 。 = ALIGN(4); _etext = 。; } 》 ROM = 0 /* .ARM.exidx is sorted, so has to go in its own output section. */ __exidx_start = 。; .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) /* This is used by the startup in order to initialize the .data secion */ _sidata = 。; } 》 ROM __exidx_end = 。; /* .data section which is used for initialized data */ .data : AT (_sidata) { 。 = ALIGN(4); /* This is used by the startup in order to initialize the .data secion */ _sdata = 。 ; *(.data) *(.data.*) *(.gnu.linkonce.d*) PROVIDE(__dtors_start__ = 。); KEEP(*(SORT(.dtors.*))) KEEP(*(.dtors)) PROVIDE(__dtors_end__ = 。); 。 = ALIGN(4); /* This is used by the startup in order to initialize the .data secion */ _edata = 。 ; } 》RAM .stack : { 。 = ALIGN(4); _sstack = 。; 。 = 。 + _system_stack_size; 。 = ALIGN(4); _estack = 。; } 》RAM .backup_sram 0x40024000 : { KEEP(*(.backup_sram)) }》BKP_SRAM __bss_start = 。; .bss : { 。 = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _sbss = 。; *(.bss) *(.bss.*) *(COMMON) 。 = ALIGN(4); /* This is used by the startup in order to initialize the .bss secion */ _ebss = 。 ; *(.bss.init) } 》 RAM __bss_end = 。; _end = 。; /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. * Symbols in the DWARF debugging sections are relative to the beginning * of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } } |
|
相关推荐
2个回答
|
|
代码中还有其它地方引用backupdata吗?应该没有吧,不然map文件里面没有,链接时就报错了。
|
|
|
|
怪就怪在连接不报错,但是编译的时间特别长,比正常情况长很多倍。“代码中还有其它地方引用backupdata吗?”没有,只有这一个地方使用。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
413 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
1762 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1135 浏览 0 评论
1604 浏览 0 评论
1418 浏览 0 评论
74678 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 16:58 , Processed in 0.677579 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号