历史上的今天
今天是:2025年03月08日(星期六)
2019年03月08日 | STM32分散加载文件
2019-03-08 来源:eefocus
通过使用分散加载机制,可以为链接器指定映像的内存映射。分散加载为您提供了对映像组建分组和位置的全面控制。分散加载可以用于简单映像,但它通常仅用于具有复杂内存映射的的映像,即多个区在加载和执行时分散在内存映射中。
加载域:就是编译之后得到的二进制文件烧写到rom中的这一段区域。包括只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit)。
执行域:程序执行时的区域。比如:没有变动还是在ROM中RO段;被移到了RAM中的RW段和ZI段。

先看一下分散加载文件的内容:
LR_IROM1 0x08000000 0x00080000 { ; 加载域:名字 + 地址 + 大小
ER_IROM1 0x08000000 0x00080000 { ; 执行域:名字 + 地址 + 大小
*.o (RESET, +First) ; RESET段(因此程序从RESET开始执行)
*(InRoot$$Sections) ; __main的代码段(用于将加载域转移到执行域)
.ANY (+RO) ; 所有代码段
}
RW_RAM1 0x20000000 0x00010000 { ; 执行域:名字 + 地址 + 大小
.ANY (+RW +ZI) ; 所有RW段(.data)和ZI段(.bss)
}
}
这一段的作用就是告诉链接器:按照以上的信息进行链接,__main也将根据这些信息进行转移。
上一篇:STM32__main代码分析
下一篇:Cortex-M3的整体风景
史海拾趣
|
要求:按下开关灯亮,断开开关灯灭。 我用switch语句,按下开关灯亮了,可断开开关灯就是不灭,我改了n次了它还是不灭,我已经拿它没办法了,求哥哥们给个C语言的程序,谢谢! 比如:按k1,led1亮;按k2,led2与led3亮;按 ...… 查看全部问答> |
|
I2C_IOControl 传一个数组出来,老不成功,郁闷死了 BOOL I2C_IOControl( DWORD context, DWORD code, BYTE *pInBuffer, DWORD inSize, BYTE *pOutBuffer, DWORD outSize, DWORD *pOutSize ) 里面定义了一个BYTE *str;然后给他空间,也 ...… 查看全部问答> |
|
有没有哪位高人用过OK2440开发板?小弟我刚开始学习,遇到很奇怪的问题,就是使用DNW的USB下载内核文件nk.bin或者nk.nb0时,一直提示checksum error!MEM:1502 DN:200 Invalid BIN file signature!24,d0,24,6c,af,d0,24 &nbs ...… 查看全部问答> |
|
访问允许异常(section permission fault) Hi,Dear all, 我在使用Hms30c7202过程中遇到一个难题,我使用的内核是2.6.13.4,大多数能够正常启动运行,个别出现不能启动情况。打印DEBUG信息,非正常设备启动失败,打印: Kernel panic - not syncing: No init found. Try passi ...… 查看全部问答> |
|
从网上找了个sqlite3.exe,就这一个文件, 直接双击,就是sqlite> 在网上查了一下,建库有好多的方法,什么$,sqlite3 xxx.db等, 执行就报sql error。 直接create table .....OK。 insert .......OK。 .exit以后再打开sqlite3.exe时,刚才建 ...… 查看全部问答> |
|
我在PB4.2下定制WINCE,build时出现1个错误,系统提示参考WINCE420目录下的build.err文件,文件的内容如下: Starting sysgen phase for project ( common ) Found localized resources for Languages ( 0404 0407 040C 0410 0411 0412 0413 041 ...… 查看全部问答> |




