heap_strings.h

 
/* Entry Point */ ENTRY(Reset_Handler) /* Highest address of the user mode stack / _estack = ORIGIN(RAM) + LENGTH(RAM); / end of RAM / / Generate a link error if heap and stack don’t fit into RAM. These numbers affect the USED size of RAM / _Min_Heap_Size = 0x100; / required amount of heap: 256 bytes / _Min_Stack_Size = 0x200; / required amount of stack: 512 bytes */ /* Specify the memory areas */ MEMORY { /RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 3K/ FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 24K RAM (rw) : ORIGIN = 0x20000000, LENGTH = 3K } /* Define output sections / SECTIONS { / SRAM vector table */ .ram_vector : { *(.ram_vector) } >RAM /* The startup code goes first into FLASH / .isr_vector : { . = ALIGN(4); KEEP((.isr_vector)) /* Startup code */ . = ALIGN(4); } >FLASH /* The program code and other data goes into FLASH / .text : { . = ALIGN(4); (.text) / .text sections (code) / (.text) / .text sections (code) */ (.glue_7) / glue arm to thumb code */ (.glue_7t) / glue thumb to arm code */ *(.eh_frame) KEEP (*(.init)) KEEP (*(.fini)) . = ALIGN(4); _etext = .; /* define a global symbols at end of code */ } >FLASH /* Constant data goes into FLASH / .rodata : { . = ALIGN(4); (.rodata) / .rodata sections (constants, strings, etc.) / (.rodata) / .rodata sections (constants, strings, etc.) */ . = ALIGN(4); } >FLASH .ARM.extab : { (.ARM.extab .gnu.linkonce.armextab.*) } >FLASH .ARM : { __exidx_start = .; (.ARM.exidx) __exidx_end = .; } >FLASH .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP ((.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } >FLASH .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP ((SORT(.init_array.))) KEEP ((.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } >FLASH .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP ((SORT(.fini_array.))) KEEP ((.fini_array)) PROVIDE_HIDDEN (__fini_array_end = .); } >FLASH /* used by the startup to initialize data */ _sidata = LOADADDR(.data); /* Initialized data sections goes into RAM, load LMA copy after code / .data : { . = ALIGN(4); _sdata = .; / create a global symbol at data start / (.data) / .data sections / (.data) / .data sections */ . = ALIGN(4); _edata = .; /* define a global symbol at data end */ } >RAM AT> FLASH /* Uninitialized data section / . = ALIGN(4); .bss : { / This is used by the startup in order to initialize the .bss secion / _sbss = .; / define a global symbol at bss start */ bss_start = _sbss; *(.bss) (.bss) *(COMMON) . = ALIGN(4); _ebss = .; /* define a global symbol at bss end */ __bss_end__ = _ebss; } >RAM /* User_heap_stack section, used to check that there is enough RAM left */ ._user_heap_stack : { . = ALIGN(8); PROVIDE ( end = . ); PROVIDE ( _end = . ); . = . + _Min_Heap_Size; . = . + _Min_Stack_Size; . = ALIGN(8); } >RAM /* Remove information from the standard libraries */ /DISCARD/ : { libc.a ( * ) libm.a ( * ) libgcc.a ( * ) } .ARM.attributes 0 : { *(.ARM.attributes) } } 这是完整的链接脚本,请检查是否存在导致warning: test.elf has a LOAD segment with RWX permissions警告的问题
07-12
(gdb) bt #0 _assert (filename=filename@entry=0x3dc9ca08 "mm_heap/mm_free.c", linenum=linenum@entry=169, msg=msg@entry=0x0, regs=0x3ddbba70 <g_last_regs>, regs@entry=0x0) at misc/assert.c:605 #1 0x1db0fc66 in __assert (filename=filename@entry=0x3dc9ca08 "mm_heap/mm_free.c", linenum=linenum@entry=169, msg=msg@entry=0x0) at assert/lib_assert.c:36 #2 0x1db1a3fa in mm_delayfree (delay=false, mem=0x3de77c20, heap=0x3dde64e0) at mm_heap/mm_free.c:169 #3 mm_delayfree (delay=false, mem=0x3de77c20, heap=0x3dde64e0) at mm_heap/mm_free.c:73 #4 mm_free (heap=0x3dde64e0, mem=0x3de77c20) at mm_heap/mm_free.c:264 #5 0x1db1af5e in free (mem=<optimized out>) at umm_heap/umm_free.c:49 #6 0x1dc7209a in av_free (ptr=<optimized out>) at ffmpeg/libavutil/mem.c:251 #7 0x1dc3aa76 in ffio_rewind_with_probe_data (s=s@entry=0x3de4b100, bufp=bufp@entry=0x3de444d8, buf_size=<optimized out>, buf_size@entry=4096) at ffmpeg/libavformat/aviobuf.c:1213 #8 0x1dc44136 in av_probe_input_buffer2 (pb=0x3de4b100, fmt=fmt@entry=0x3de457a4, filename=filename@entry=0x3de44608 "http://iot102.music.126.net/Yml6PWlvdCZjaGFubmVsPXhpYW9taS12ZWxhJnNjZW5lPWFuZHJ3ZWFy/20250708132631/a7a9136a55a5a24372b85f011aaf6f62/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/34566871844/2a6b/12ff/c278/14fb9b"..., logctx=<error reading variable: Unable to access DWARF register number 80>, logctx@entry=0x3de457a0, offset=0, max_probe_size=524288) at ffmpeg/libavformat/format.c:309 #9 0x1dc3da9c in init_input (options=0x3de4452c, filename=0x3de44608 "http://iot102.music.126.net/Yml6PWlvdCZjaGFubmVsPXhpYW9taS12ZWxhJnNjZW5lPWFuZHJ3ZWFy/20250708132631/a7a9136a55a5a24372b85f011aaf6f62/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/34566871844/2a6b/12ff/c278/14fb9b"..., s=0x3de457a0) at ffmpeg/libavformat/demux.c:178 #10 avformat_open_input (ps=ps@entry=0x3de0a864, filename=filename@entry=0x3de44608 "http://iot102.music.126.net/Yml6PWlvdCZjaGFubmVsPXhpYW9taS12ZWxhJnNjZW5lPWFuZHJ3ZWFy/20250708132631/a7a9136a55a5a24372b85f011aaf6f62/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/34566871844/2a6b/12ff/c278/14fb9b"..., fmt=fmt@entry=0x0, options=options@entry=0x3de44580) at ffmpeg/libavformat/demux.c:291 #11 0x1dc351b6 in movie_async_open_demuxer (ctx=ctx@entry=0x3de0a7a0, filename=filename@entry=0x3de09a48 "http://iot102.music.126.net/Yml6PWlvdCZjaGFubmVsPXhpYW9taS12ZWxhJnNjZW5lPWFuZHJ3ZWFy/20250708132631/a7a9136a55a5a24372b85f011aaf6f62/jdymusic/obj/wo3DlMOGwrbDjj7DisKw/34566871844/2a6b/12ff/c278/14fb9b"...) at ffmpeg/libavfilter/src_movie_async.c:478 #12 0x1dc35930 in movie_async_prepare (filename=<optimized out>, ctx=<optimized out>) at ffmpeg/libavfilter/src_movie_async.c:556 #13 movie_async_proc_cmd (msg=0x3de09a40, ctx=0x3de0a7a0) at ffmpeg/libavfilter/src_movie_async.c:928 #14 movie_async_thread (arg=0x3de0a7a0, arg@entry=<error reading variable: value has been optimized out>) at ffmpeg/libavfilter/src_movie_async.c:990 #15 0x1db11eb8 in pthread_startup (entry=<optimized out>, arg=<optimized out>) at pthread/pthread_create.c:59 --Type <RET> for more, q to quit, c to continue without paging--frame 0 #16 0x1db02778 in pthread_start () at pthread/pthread_create.c:139 #17 0x00000000 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?)
最新发布
07-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值