[Atmel][Sama5d3-xp] - Run sample code

一般開發版都會有sample code來協助使用這開發,Atmel也不例外,Sama5d3-Xplained的sample code可以在官方網站下載

http://www.atmel.com/tools/SAMA5D3SOFTWAREPACKAGE.aspx

那要如何放到板子上跑起來呢?
Sama5d3-Xplained有SRAM和DRAM,因此可以將程式放在其中一塊記憶體上跑,不過因為這塊板子的SRAM只有64KB * 2,而DRAM有512MB,因此可以盡量將程式放在DRAM上

建置

我們以./examples/getting-started為例,此例為控制板子上兩顆LED燈,此範例的make file在./examples/getting-started/build/gcc,簡單看一下make file可以看到MEMORIES可選擇sram/ddram,部分範例只能選擇ddram,因為sram的size不夠大,也可以調整TRACE_LEVEL,另外也可以看到CROSS_COMPILE = arm-none-eabi-,這裡目前嘗試無法使用在bootstrap/uboot/kernel上使用的arm-linux-guneabi-,看起來是linker script的問題,推測修正相關command到較新版本即可使用,不過懶得去改linker script,直接用預設的cross compile就好,所以先安裝它吧

sudo apt-get install gcc-arm-none-eabi

接著一般我們第一件事會下make clean,結果也跑出error,因為make file裡的clean使用的是cs-rm,我們直接替換成rm即可成功clean

make clean

要建置出程式就使用

make all

在make file的同層目錄下即可看到bin資料夾,裡面的的兩個bin檔即是需要的執行檔,以sram結尾的就是放到sram,以ddram結尾的則是放到dram

sram

ubootbootstrap一樣,需先將NAND CS pin斷開,然後RESET,看見顯示RomBoot後接回NAND CS pin,接著打開smaba tool,在NandFlash頁面選擇Enable NandFlash –> Execute,接著Erase all
–> Execute
因為sram在rom code執行完之後即可使用,不需要額外的初始化,因此直接將程式放在原本bootstrap的位置,rom執行完後即會JMP過來,Send Boot File –> Execute,然後選擇sram結尾的bin檔,之後按RESET,可在uart看到以下訊息

且也可看到板端的兩顆LED分別以不同的頻率閃爍

dram

dram和sram較不一樣的是,dram需透過bootstrap來進行初始化的動作之後才可正常使用,不過這bootstrap需做些特別的設定

bootstrap的建置及下載位址可參考相關連結,這邊只針對設定的部分

首先我們在./at91bootstrap/binaries下

make menuconfig

就可以看到選單畫面,有兩個地方需要設定

1. Image Loading Strategy -> (X)Load 1 MB into start of SDRAM
2. Demo Application Images storage Setup -> (0x20000000) The External Ram Address to Load Demo-App Image 

建置完程式之後就可以依照燒bootstrap方式燒到flash,不過要特別注意在使用sma-ba的Send Boot File之前必須先Enable OS PMECC parameters

打開smaba tool,在NandFlash頁面選擇Enable NandFlash –> Execute,Erase all –> Execute,Enable OS PMECC parameters -> Execute,Send Boot File

接著在Address填上0x40000(bootstrap JMP之後的位址),Sned File Name就選以dram結尾的sample code的bin檔,最後按Send File

成功之後按RESET可在UART看到以下訊息,和sram不同的是多了bootstrap的相關訊息

且也可看到板端的兩顆LED分別以不同的頻率閃爍