概述
大部分时候我们需要把代码指定到对应地址,本文以汽车电子行业的AUTOSAR来进行举证。
方法
1、创建地址
Memory
{
PFLASH_USER_CODE (rx!p) : org= 0x801FFFE0 ,len = 0x20
x1 (rx!p) : org= 0xyyyyyyyy ,len = 0xzzzz
.......
xn (rx!p) : org= 0xuuuuuuuu ,len = 0xvvvv
}
2、已划分的
链接文件处
CODE_USER :ALIGN(4)
{
*(.text.user_code);
*(.text.user_code*);
} >PFLASH_USER_CODE
Memmap处
#elif define (USER_CODE_START_A = .)
#undef USER_CODE_START_A
#program section " .user_code" ax4
#elif define (USER_CODE_STOP_A = .)
#undef USER_CODE_STOP_A
#program section
通过 前USER_CODE_START_A 后USER_CODE_STOP_A包含即可
3、未进行内存划分的
CODE_DEFAULT :ALIGN(4)
{
*(.text);
*(.text*);
} >PFLASH_USER_CODE
解析语言
*(.text.user_code*);
括号前面的*表示所有文件
.text.user_code 查看 Memmap处解析
.text.user_code* 头上的* 表示 通配符可以是user_codeAAA 也可以是user_codeBBB,随意吧,只要在Memmap.h里面进行Memmap处 写法进行#program section 包含就行了
注意点
未划分的需要放置在最后面,假如放置在最前面,有可能所有的代码都在默认的了。