要选择双区域内存模型,请在分散文件中定义两个名为 ARM_LIB_HEAP和ARM_LIB_STACK的特殊执行区域。这两个区域都有 EMPTY 属性,会导致库选择__user_setup_stackheap()的非默认实现,使用以下的符号值:Image$$ARM_LIB_STACK$$BaseImage$$ARM_LIB_STACK$$ZI$$LimitImage$$ARM_LIB_HEAP$$BaseImage$$ARM_LIB_...
在分散文件中使用下列方法之一 定义名为ARM_LIB_STACK和ARM_LIB_HEAP的单独的栈和单独的堆域。 定义包含堆栈和堆的组合域,名为ARM_LIB_STACKHEAP。 通过重新实现__user_setup_stackheap()来设置堆和堆栈边界。(在我们的项目中的 .s 启动文件中,是这种方法) 后文的堆栈章节,我会详细介绍这两种方法。 输入节符...
1、Heap region was used, but no heap region was defined 工程中,我使用的是自己的分散加载文件,并且没有定义ARM_LIB_STACKHEAP,ARM_LIB_STACK,ARM_LIB_HEAP这些符号,因为我自己要重新定义堆栈,就没有使用这些符号,因此在C代码中加入下述代码: //不使用ARM提供的堆函数 __asm(".global__use_no_heap"); ...
使用这种符号:ARM_LIB_STACKHEAP,并使用EMPTY 属性。 这样库管理器就选择了一个把这个域当作堆和栈合并在一起的__user_initial_stackhep()函数。在这个...的分散加载文件中。使用这两种符号:ARM_LIB_STACK,ARM_LIB_HEAP。 并且两个段都要使用EMPTY属性。 这样库管理器就会选择使用符号:Image$$ARM_LIB_HEAP...
这个函数在ARM官方库中已经实现,由于我没有自定义__rt_entry函数,因此在启动时会调用ARM官方的__rt_entry函数,也就自然会调用ARM库中的堆栈初始化函数,在链接的过程中,当发现分散加载文件没有定义ARM_LIB_STACKHEAP,ARM_LIB_STACK,ARM_LIB_HEAP这些符号就报错:Error: L6915E: Library reports error: Heap ...
ARM_LIB_HEAP 0x28000000 EMPTY 0x80000 ; Heap region growing up { } 1. 2. 3. 4. 5. 6. 7. 另外也可以只在scatter file中定义ARM_LIB_STACKHEAP,这样user_setup_stackheap()将使用如下symbol的值: Image–ARM_LIB_STACKHEAP–Base Image–ARM_LIB_STACKHEAP–ZI–Limit ...
_platform_post_stackheap_init __rt_lib_init _platform_post_lib_init main() exit() platform *函数不是标准C库的一部分。 如果你定义它们,则链接器会在__rt_entry中对它们进行调用。main()是用户级应用程序的入口点。 寄存器r0和r1包含main()的参数。 如果main()返回,则将其返回值传递给exit()并退出...
3、mBX LR4 .使用分散加载可以由用户实现,也可以在分散加载描述文件中定义两个特殊执行区 (双区模型,单区模型只定义ARM_LIB_STACKHEAP) :ARM_LIB_HEAP和ARM_LIB_STACK (该区具有EMPTY属性。),从而使用C库的默认实现,此时,会导致库 选择一个使用以下符号值的_user_initial_stackheap 0实现: Image$ARM_LIB_HEAP...
4.使用分散加载可以由用户实现,也可以在分散加载描述文件中定义两个特殊执行区(双区模型,单区模型只定义ARM_LIB_STACKHEAP): ARM_LIB_HEAP 和 ARM_LIB_STACK(该区具有 EMPTY 属性。),从而使用C库的默认实现,此时,会导致库选择一个使用以下符号值的 __user_initial_stackheap() 实现:Image$$ARM_LIB_HEAP$$Ba...
Define anARM_LIB_STACKHEAPregion. If you define anARM_LIB_STACKHEAPregion, the stack starts at the top of that region. The heap starts at the bottom. Configuring the stack and heap with __user_setup_stackheap() or __user_initia...