stm32:ccmsram

stm32

CCM SRAM

コア結合メモリ(Core Coupled Memory)
CPUコアの内部に存在するコアに密接に接続されているメモリ ウェイト無しでの高速読み書きが可能

リンカスクリプトの編集

データシートなどを確認してCCM SRAMの開始アドレスとサイズを追加する

/* Specify the memory areas */
MEMORY
{
RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 112K
CCMSRAM (xrw)   : ORIGIN = 0x10000000, LENGTH = 16K     /* CCM SRAM */
FLASH (rx)     : ORIGIN = 0x08000000, LENGTH = 254K
}

.data,.bssの間あたりに追加する

  _siccmsram = LOADADDR(.ccmsram);

  .ccmsram :
  {
    . = ALIGN(4);
    _sccmsram = .;       /* create a global symbol at ccmram start */
    *(.ccmsram)
    *(.ccmsram*)

    . = ALIGN(4);
    _eccmsram = .;       /* create a global symbol at ccmram end */
  } >CCMSRAM AT> FLASH

アセンブリコードの編集

b LoopCopyDataInit1
CopyDataInit1:
  ldr r3, =_siccmsram
  ldr r3, [r3, r1]
  str r3, [r0, r1]
  adds r1, r1, #4
LoopCopyDataInit1:
  ldr r0, =_sccmsram
  ldr r3, =_eccmsram
  adds r2, r0, r1
  cmp r2, r3
  bcc CopyDataInit1

コードで割当

  • stm32/ccmsram.txt
  • 最終更新: 2024/11/23
  • by yuqlid