看板 C_and_CPP 關於我們 聯絡資訊
: → 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
Hyozero:好厲害的東西 0.0 12/09 23:42