工作紀錄:
11/11 今天將fat32 function porting 到 EBOOT下, sdmmc 的控制以及傳輸目前是空的
download function 大致上是8成了, 只差 bin格式的decoder還沒寫而已
11/12 Todo: .bin decoder 寫完
2008年11月11日 星期二
花了一天trace DownloadImage function
11/10 花了一天trace整個原本的EBOOT download流程以及使用EVM來看下載流程中的log檔
當EVM開機後, 用 Samsung 6410附的 Dnw.exe, connect to uart, 跳出一個download選單, 這時候先下載EBOOT.nb0, 讓mainmenu可以出現 這時候選 6 (NAND writable) 然後用他內附的 usb driver 去下載 flash.bin (by UBoot, means usb boot).
而看程式碼的過程中, main function 會先讓blcommon呼叫一些OEM該要implement的function (OEM_開頭的), 過程簡單來說 這pc端下載軟體會先將 flash.bin 下載到SDRAM中, 然後在EBOOT中
解開 bin 格式的(hdr: B00FF\x0A) 然後在一段一段(record) 寫到 nand中(by block)
DownloadImage@blcommon.c 就是在解開bin格式檔案 一段一段寫到SDRAM中
OEM_Launch@main.c 就是將這些解開來的raw檔案 一個一個 block寫到NAND上
簡化來說就這樣子
當EVM開機後, 用 Samsung 6410附的 Dnw.exe, connect to uart, 跳出一個download選單, 這時候先下載EBOOT.nb0, 讓mainmenu可以出現 這時候選 6 (NAND writable) 然後用他內附的 usb driver 去下載 flash.bin (by UBoot, means usb boot).
而看程式碼的過程中, main function 會先讓blcommon呼叫一些OEM該要implement的function (OEM_開頭的), 過程簡單來說 這pc端下載軟體會先將 flash.bin 下載到SDRAM中, 然後在EBOOT中
解開 bin 格式的(hdr: B00FF\x0A) 然後在一段一段(record) 寫到 nand中(by block)
DownloadImage@blcommon.c 就是在解開bin格式檔案 一段一段寫到SDRAM中
OEM_Launch@main.c 就是將這些解開來的raw檔案 一個一個 block寫到NAND上
簡化來說就這樣子
標籤:
Boot loader,
SMDK6410
2008年11月4日 星期二
Pure NAND的Wear leavling
這幾天研究 Samsung MCP上的NAND
可以讀寫 但...找不到可以弄 wear leavling 的library
在EBoot下link "Fallite.lib" 這個輕巧的 Flash Abstract Layer 來針對 NAND block重複寫入會造成block損壞的技術 .. 但, 在AKU public下的code ...天呀
出現這一句 // write is not currently supported
重點就是 sector的 write, 他竟然沒實做 看來要自己弄了...
而在 OS mode的 FMD driver 跟 fal.lib 會合成 nandflash.dll 供OS調用
可惜的是.. fal.lib 沒 source code...
唉 看來只剩下兩個解法
1. 請 Samsung 提供一下library (實作於 EBoot)
2. 自己補足 writeSector function at fallite.lib ...要哭了~
可以讀寫 但...找不到可以弄 wear leavling 的library
在EBoot下link "Fallite.lib" 這個輕巧的 Flash Abstract Layer 來針對 NAND block重複寫入會造成block損壞的技術 .. 但, 在AKU public下的code ...天呀
出現這一句 // write is not currently supported
重點就是 sector的 write, 他竟然沒實做 看來要自己弄了...
而在 OS mode的 FMD driver 跟 fal.lib 會合成 nandflash.dll 供OS調用
可惜的是.. fal.lib 沒 source code...
唉 看來只剩下兩個解法
1. 請 Samsung 提供一下library (實作於 EBoot)
2. 自己補足 writeSector function at fallite.lib ...要哭了~
標籤:
Boot loader,
SMDK6410
2008年10月27日 星期一
Samsung 的 Stepldr
Samsung SMDK 6410X5D 跟 SMDK2442一樣
用NAND開機時(switch 設定成NAND開機)
Processor 就會將NAND的前4KB COPY到CPU內部的SRAM (稱為Stepping stone, 8KB)
去執行 .. 而這前4KB的區域 就是 Stepldr囉 (Stepping loader)
這塊記憶體做的就是, 簡單的記憶體硬體位置初始化 Memory mapping,
重要的就是要導入 EBoot 作接下來的開機動作 大致上就這樣子
而怎麼把這塊東西寫入到NAND記憶體, 就得靠JTAG介面 將Stepldr.nb0 寫入NAND前4KB囉
JTAG寫入的方式 我們是用Printer port模擬成JTAG 慢慢的寫入NAND第0個page
之後再重開電源 看看UART的訊息會不會吐出來就成功了 (這是Simon學長搞定的, 要學起來)
用NAND開機時(switch 設定成NAND開機)
Processor 就會將NAND的前4KB COPY到CPU內部的SRAM (稱為Stepping stone, 8KB)
去執行 .. 而這前4KB的區域 就是 Stepldr囉 (Stepping loader)
這塊記憶體做的就是, 簡單的記憶體硬體位置初始化 Memory mapping,
重要的就是要導入 EBoot 作接下來的開機動作 大致上就這樣子
而怎麼把這塊東西寫入到NAND記憶體, 就得靠JTAG介面 將Stepldr.nb0 寫入NAND前4KB囉
JTAG寫入的方式 我們是用Printer port模擬成JTAG 慢慢的寫入NAND第0個page
之後再重開電源 看看UART的訊息會不會吐出來就成功了 (這是Simon學長搞定的, 要學起來)
2008年10月23日 星期四
訂閱:
文章 (Atom)