說明文件

解決 MA35D1 M4 SRAM 128KB 不夠,調用A35 DDR space 384KB 的方法

解決 MA35D1 M4 SRAM 128KB 不夠,調用A35 DDR space 384KB 的方法

跟新唐過去Cortex® M4 的 Feature 不一樣的地方

  1. M4 speed 調升至 180 MHz
  2. 本章的重點,SRAM 有 128KB 以及 可以控制DDR 384KB
  3. Support Peripheral 1. UART、I2C、I2S、PDMA、SPI、etc… blog圖片的連結
  4. NuLink2Me Debug
  5. Wormhole

Linux Setup

Device Tree 查看各個 memory 設定

blog圖片的連結

這裡是設定 Memory 的起始位置 8000 0000

注意 Reserved-memory :

在這裡,我們為不同的功能保留了三個塊。 其中一個地方是 rproc 函數,它用在 M4 DRAM 上(384KB)

(0x60000 = 384 KB)

Device Tree 設定

以設定UART16 為例

blog圖片的連結

blog圖片的連結

_S 就是代表指定給A35

_SUBM 代表指定給M4

Compile and make Image

Compile the Linux kernel.
$ bitbake linux-ma35d1 -C compile
Compile the TF-A.
$ bitbake tf-a-ma35d1 -C compile
Build-up Image.
$ bitbake nvt-image-qt5 –c cleanall && bitbake nvt-image-qt5
Burn-in Image into SD card.
$ sudo dd if=core-image-minimal-xxxxx.rootfs.sdcard of=/dev/sdbx

在 Keil IDE 設定 memory 使用空間

blog圖片的連結

上圖中我們可以看到,RO data 配置位置在 0x0 ~ 0x1FFFF ,一共有128KB SRAM

RW data 配置位置在 0x80040000 大小為0x1FFFF ,一共有128KB 的DDR

我寫一個 c code 在 DDR memory 使用空間

blog圖片的連結

在 .c 的右鍵 option ,可以指定要把這個 function 放到 DDR 去

blog圖片的連結

在 map file 中可以看到 memtest 已經在DDR 的 使用空間了

使用 scatter file 去直接指定 哪個

blog圖片的連結

上圖可以看到 紅色 是代表記憶體區間

0x00000000 ~ 0x0001FFFF 是SRAM 的空間

這裡的寫法可以直接打開 map file ,copy paste 一模一樣的名子就可以了,

例如 : startup_ma35d1_rtp.o(STACK, HEAP) 這個我放到SRAM

pdm_converter.o(.bss) 我放到DRAM

以此類推

所以上圖可以知道,我把需要比較快速算完的data 放到SRAM

比較不需要速度的資料我放到 DRAM

comments powered by Disqus