Soc 內帶有 16k sram, 及xmodem Loader程序,在上電時,透過Uart 提示 “CCCC... ”等待PC端使用者以Xmodem通訊方式上傳Bootloader 檔案,然後將上傳後的Bootloader 放到 TCM 上執行,然後Bootloader做下列的動作。
DDR Ram Init
Uart Init
SOC register Init
Flash Init
Uart Init
啟動Bootloader內的Xmodem等待使用者載入檔案。
Xmodem 在booloader的Code內約350行,Object:670 byte。
二、讀寫Ram 錯誤( Ram 32M ):
寫一個測試Memory的Bootloader,對每個位置的記憶體寫入0xff00ff00再將其讀回比對,發現有些位置的資料是錯誤的,規則如下。
Memory Address 前 5M 幾乎都是好的。
-
後面 0xAAAA AAAAB ( A = 任意, B = 0 or 4 ),會隨機發生錯誤,並不是每個4結尾的Address 都會錯。
經修改了幾次bootloader、跟Hardware後,發現原因發生在 SOC 與 DDR 之間的阻抗匹配問題導致。
三、Questions:SOC 內 xmodem 如何實作,內嵌ROM or NOR Flash,由SOC啟動?亦或是Hardware可以達到?
- Q:原則上猜測應該是Nor。
SOC的某隻腳位是用來調整組抗匹配,這隻腳再我們寫 Pin Define同樣有使用?因為這看起來是調整阻抗,數位電路設計時也須考量這個問題?還是這是在Transistor Level 所考量的層次?
經詢問Hardware 人員,通常SOC內有Register可調整Pin Fanout,這問題同上,是不是在Gate Level 之上不需要考量這個問題,只在Transistor Level以後才兜那塊電路?