Re: [問題] 請教兩種語法
: → Hyozero:感謝您的詳細解說 12/08 22:35
: → Hyozero:請問1.直接對記憶體修改的寫法比較不好,那較好的做法是? 12/08 22:36
: 推 Hyozero:2.請問對.ddrtable分配記憶體區塊這件事,是怎麼做的呢? 12/08 22:38
在 gnu toolchain 需要使用 link script file 類似下面這樣
/*
MEMORY
{
FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 128K
SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
}
*/
/* Specify the memory areas */
/* form:
STM32F4-Discovery_FW_V1.1.0/Project/Peripheral_Examples/IO_Toggle/TrueSTUDIO/IO_Toggle/stm32_flash.ld
*/
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K
SRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 192K
MEMORY_B1 (rx) : ORIGIN = 0x60000000, LENGTH = 0K
}
SECTIONS
{
.text :
{
KEEP(*(.isr_vector .isr_vector.*))
*(.text .text.*)
*(.rodata .rodata*)
. += 0x10;
_etext = .;
} > FLASH
.data : AT (_etext)
{
_data = .;
*(.data .data.*)
_edata = .;
} > SRAM
.aaa
{
*(.ddrtable)
} > SRAM
_end = .;
}
可以參考:
一步步写嵌入式操作系统:ARM编程的方法与实践
3.1.x (p36 - p52) 有 linker script 的說明
Cortex-M3之STM32嵌入式系统设计
5.5.2 link script 的介紹更是深得我心
這牽扯很廣, 需要對 elf section/link script/執行檔在記憶體中的佈局有所認識,
才能有所體會, 這是寫 link script 困難的地方。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.114.140.108
推
12/09 23:42, , 1F
12/09 23:42, 1F
討論串 (同標題文章)