您的位置:首页 > 其它

分散加载文件sct 的书写经验

2015-04-08 16:31 281 查看
有个人说的很对,sct就是要多写、多试才能出经验。

文件1就可以:

做法:同一集合的obj文件另起加载域存放。

好处:加载域首地址可以不接在上一个加载域的结尾。

------------------------------------ file1 -----------------------------------------------------------------------------

LR_IROM1 0x08000000 0x00034000 { ; load region size_region all=0x00040000 Size: 0x000079b0

ER_IROM1 0x08000000 0x00034000 { ; load address = execution address

*.o (RESET, +First)

* (+RO)

}

RW_IRAM1 0x20000000 0x0000C000 { ; RW data

* (+RW +ZI)

}

}

LR_IROM_FS 0x08034000 0x00003000 { ; Size: 0x00002d5c(include RW data)


ER_IROM_FS 0x08034000 0x00003000 {

ff.o (+RO) ;under FS

fattime.o (+RO)

ccsbcs.o (+RO)

}

}

LR_IROM_OS_CORE 0x08037000 0x00004000 { ; Size: 0x00002ec0

ER_IROM_OS_CORE 0x08037000 0x00004000 {

os_core.o (+RO) ;under OS_CORE

os_flag.o (+RO)

os_mem.o (+RO)

os_q.o (+RO)

os_sem.o (+RO)

os_task.o (+RO)

os_time.o (+RO)

}

}

LR_IROM_OS_PORTS 0x0803B000 0x00001000 { ; Size: 0x000002d8

ER_IROM_OS_PORTS 0x0803B000 0x00001000 {

os_cpu_c.o (+RO) ;under OS_PORTS

os_dbg.o (+RO)

}

}

file2就不行:

做法:同一集合的obj文件另起运行域存放。

现象:运行时进hardfault

-------------------------------------- file2 ---------------------------------------------------------------------------

LR_IROM1 0x08000000 0x00040000 { ; load region size_region all=0x00040000 Size: 0x000079b0

ER_IROM1 0x08000000 0x00030000 { ; load address = execution address

*.o (RESET, +First)

* (+RO)

}

ER_IROM_FS 0x08030000 0x00003000 {

ff.o (+RO) ;under FS

fattime.o (+RO)

ccsbcs.o (+RO)

}

ER_IROM_OS_CORE 0x08033000 0x00004000 {

os_core.o (+RO) ;under OS_CORE

os_flag.o (+RO)

os_mem.o (+RO)

os_q.o (+RO)

os_sem.o (+RO)

os_task.o (+RO)

os_time.o (+RO)

}

ER_IROM_OS_PORTS 0x08037000 { ;0x00001000

os_cpu_c.o (+RO) ;under OS_PORTS

os_dbg.o (+RO)

}

RW_IRAM1 0x20000000 0x0000C000 { ; RW data

* (+RW +ZI)

}

}



结合图1来看分析,我猜(错了别怪我,不过应该没错,哈哈):在一个加载域里,多个运行域只能代表不同的段,包括RO、RW、ZI、NOINIT。如果两个运行域里的段的属性都是RO,那么运行域就没有起到合并同属性的段的目的,所以就hardfault了。比如file2里,前几个运行域里的段的属性都是RO,所以就错了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: