昨天拿到 wifi 這顆 chip 的 DataSheet 也拿到這家"大廠"的Contact window 資料
明天要做幾件事情
1. 確定內部HW layout chip 是否有留下測點(Test Pad) 可讓我debug 一些訊號有沒有in/out, 如: CLKin, CLKout, SDIO data, VCC, VSS, 等等一些可以知道這顆chip在Power on以及 CLK in之後會不會有哪些測點可以知道他 workable?
2. 找FAE來了解一下 這顆chip 的 power up sequence (目前datasheet好像還沒看到), 以及在我們的BLDR中要如何來知道這顆chip workable 是否有什麼 SDIO CMD 可以得到 內部EEPROM的Chip ID 或是 Wifi MAC address.
先記錄在此, 這跟BLDR中的 Broad test functionality有關係, 得先知道..
接下來還差 SDCard, NAND flash的驗證方式..
2009年5月14日 星期四
2009年5月13日 星期三
[EBoot] Design of Eboot part.2
上篇講到大概EBOOT該做什麼事情之後, 接下來篇幅就來寫寫工作相關的內容
順便當作紀錄吧. 在工作範圍內 小弟負責 Image flashing 以及 部分chip的 Broad Testing 部分
所以寫一些這些東西吧
先講關於 broad testing 部分, 顧名思義 就是剛開始板子(開發版)打件完成,
我們軟體需要去驗證硬體的 layout 或是 IC 是否 function workable所要做的事情
讓工廠在元件打完之後 組裝之前 有套軟體可以做驗證. 通常這會寫在非正式release的 boot loader中
當然 第一版的 boot loader是需要用JTAG去定址NAND flash 或是 DDR/SDRAM 作燒寫的動作的
之後我們就會弄一版 broad testing eboot image 將他 flashing 到板子上供產線的人驗證參考
而在PC上我們透過Serial port對Boot loader 下指令, 來達到一些驗證的動作.
目前這個案子, NAND flash 以及 Wifi chip的 dataSheet 都拿到了 接下來就是要開始study
以及撰寫 testing 的 plan囉 之後才能化成code 來執行..
先寫到此 下篇把EBoot在 Windows Mobile/WinCE 的架構撰寫與此 (不過這網路上可參考的超多, 所以我目標放在工作記錄上好了)
順便當作紀錄吧. 在工作範圍內 小弟負責 Image flashing 以及 部分chip的 Broad Testing 部分
所以寫一些這些東西吧
先講關於 broad testing 部分, 顧名思義 就是剛開始板子(開發版)打件完成,
我們軟體需要去驗證硬體的 layout 或是 IC 是否 function workable所要做的事情
讓工廠在元件打完之後 組裝之前 有套軟體可以做驗證. 通常這會寫在非正式release的 boot loader中
當然 第一版的 boot loader是需要用JTAG去定址NAND flash 或是 DDR/SDRAM 作燒寫的動作的
之後我們就會弄一版 broad testing eboot image 將他 flashing 到板子上供產線的人驗證參考
而在PC上我們透過Serial port對Boot loader 下指令, 來達到一些驗證的動作.
目前這個案子, NAND flash 以及 Wifi chip的 dataSheet 都拿到了 接下來就是要開始study
以及撰寫 testing 的 plan囉 之後才能化成code 來執行..
先寫到此 下篇把EBoot在 Windows Mobile/WinCE 的架構撰寫與此 (不過這網路上可參考的超多, 所以我目標放在工作記錄上好了)
標籤:
工作,
Boot loader,
Qualcomm
2009年5月12日 星期二
[EBoot] Design of Eboot part.1
接下來會用一些文章來解釋 在WM的BSP中 boot-loader的作用以及為了產品化 我們客制了那些feature:
EBoot 在BSP中 扮演著開機者的角色, 其功能是:
1. Minimal HW initialization, 基本的HW周邊初始化, 如Clock, Memory(SDRAM, NAND flash), peripheral(UART/USB/I2C,...)等等......
2. Flashing OS image to storage, 燒錄OS映像檔到儲存裝置, 以便之後開機
3. Launch OS, 設立好OS的執行環境, 接下來就是執行OS囉
4. KITL Debugging, WM系統, 建立KITL debug的環境, 以便除錯
而為了我們產品化, 客制化的需求呢
boot loader負責人還會做一些其他的功能, 如:
1. Broad testing, 主要是對所有的周邊以及chip作verify 的動作,驗證這顆chip是否有layout對
2. Customize flashing image, 客戶有可能會有其他燒寫OS以及其他image(如開機畫面/另外裝的小程式...) 要放在NAND flash的某隱藏分區中, 所以flashing image這部分會改蠻多的,或是用Micro SD 卡下載image
3. Boot mode selection, 進入不同的booting mode, (EBoot/直接載入OS系統/其他工程模式/Recover mode)
4. 其他哩哩摳摳的function...for customer 需求
第一篇 就先講到這樣
EBoot 在BSP中 扮演著開機者的角色, 其功能是:
1. Minimal HW initialization, 基本的HW周邊初始化, 如Clock, Memory(SDRAM, NAND flash), peripheral(UART/USB/I2C,...)等等......
2. Flashing OS image to storage, 燒錄OS映像檔到儲存裝置, 以便之後開機
3. Launch OS, 設立好OS的執行環境, 接下來就是執行OS囉
4. KITL Debugging, WM系統, 建立KITL debug的環境, 以便除錯
而為了我們產品化, 客制化的需求呢
boot loader負責人還會做一些其他的功能, 如:
1. Broad testing, 主要是對所有的周邊以及chip作verify 的動作,驗證這顆chip是否有layout對
2. Customize flashing image, 客戶有可能會有其他燒寫OS以及其他image(如開機畫面/另外裝的小程式...) 要放在NAND flash的某隱藏分區中, 所以flashing image這部分會改蠻多的,或是用Micro SD 卡下載image
3. Boot mode selection, 進入不同的booting mode, (EBoot/直接載入OS系統/其他工程模式/Recover mode)
4. 其他哩哩摳摳的function...for customer 需求
第一篇 就先講到這樣
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月7日 星期五
BootPart library of WINCE
Bootpart 這套在wince public底下的full source code library
功能是能夠利用底下 FMD driver 來做 partition 的規畫 將FMD physical的nand block讀寫
轉換成 logical 的 partition 讀寫對應.
看來我們要先看熟這套了 因為之後的 partition 規畫會用這套library來做
重要的 function 如下
BP_Init
BP_OpenPartition
BP_ReadData
BP_SetDataPointer
BP_WriteData
這應該是我們會用到的..function 詳細用法請見 MSDN吧
功能是能夠利用底下 FMD driver 來做 partition 的規畫 將FMD physical的nand block讀寫
轉換成 logical 的 partition 讀寫對應.
看來我們要先看熟這套了 因為之後的 partition 規畫會用這套library來做
重要的 function 如下
BP_Init
BP_OpenPartition
BP_ReadData
BP_SetDataPointer
BP_WriteData
這應該是我們會用到的..function 詳細用法請見 MSDN吧
2008年11月5日 星期三
SLC NAND在EBoot下不用作wear leavling
今天打給Samsung代理商以及Samsung FAE
我們用的NAND是SLC type的 相對於 MLC type 壽命長多了
也因為SLC (Single level Cell) 一個cell 表示 0或1 一種電位而
MLC (Multi level Cell) 一個 cell 表示 00, 01, 10,11 四種電位
所以當常常在使用的時候會因為電位偏移造成MLC儲存的電位不對而造成寫入的資料錯誤
所以 MLC比SLC更需要做Wear leveling 技術的保護機制
但 MLC雖然壽命沒SLC長 但也大概能R/W一萬次以上, 且容量可以做得更大
SLC缺點就是 讀取速度沒那麼快 以及容量沒辦法做那麼大 大概就這樣吧
而目前project用的是 SLC type的 所以在EBoot download image的部分 我們就"暫時"先不做
block-protection 的機制(要做其實也可以 只要把block/sector使用的次數記錄在 sectorInfo的欄位裡頭就行囉) 只是為了趕schedule所以先"暫時"不弄囉
接下來要先看懂 MS public裡頭的 bootpart這個library來對NAND作 partition的方法了
加油
我們用的NAND是SLC type的 相對於 MLC type 壽命長多了
也因為SLC (Single level Cell) 一個cell 表示 0或1 一種電位而
MLC (Multi level Cell) 一個 cell 表示 00, 01, 10,11 四種電位
所以當常常在使用的時候會因為電位偏移造成MLC儲存的電位不對而造成寫入的資料錯誤
所以 MLC比SLC更需要做Wear leveling 技術的保護機制
但 MLC雖然壽命沒SLC長 但也大概能R/W一萬次以上, 且容量可以做得更大
SLC缺點就是 讀取速度沒那麼快 以及容量沒辦法做那麼大 大概就這樣吧
而目前project用的是 SLC type的 所以在EBoot download image的部分 我們就"暫時"先不做
block-protection 的機制(要做其實也可以 只要把block/sector使用的次數記錄在 sectorInfo的欄位裡頭就行囉) 只是為了趕schedule所以先"暫時"不弄囉
接下來要先看懂 MS public裡頭的 bootpart這個library來對NAND作 partition的方法了
加油
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
訂閱:
文章 (Atom)