5.23.2008

Gooogle的Wiki ?

Google的新玩具:Google Site。

看起來好像是 Wiki.
有Google帳號就可以開啟

http://sites.google.com/site/sites/

5.17.2008

Test blog in iGoogle

測試一下從iGoogle貼..

5.13.2008

開機要看debug port,但是就是沒lay debug port。
Flash Read/Write 都OK,但是沒source code的update 程式又不知道在complain 什麼?

5.12.2008

出現 logo string 後就沒下文了...
查了一下..之後就call OALKernelStart 把argument放到 register,然後就 call KernelStart..... 然後就沒source code 了...


只好跟上一版(edom) diff 一下,config.bib 部份,差異很大...猜是ROM size設的太小,所以改成跟 edom 的一樣 , copy to release folder, make image, download .. OK!
  • 測試 demo board 的K9F2G08U0M : OK, flash disk 自動顯示。
  • 使用 socket,K9F2G08U0A : both function OK。
  • K9F8G08U0M : 要先erase。both function OK, but... 一旦在 Flash Disk copy data 後,就不能boot 了? --- No, 是只能開機一次... 之後就出現 80501003 的 error code。

5.07.2008

bootpart related codes

bootpart 在 PUBLIC\COMMON\OAK\DRIVERS\ETHDBG\BOOTPART 下
有完整的source code : bootpart.cpp, util.cpp

bootpart.h 定義了 disk partition 的相關constant : partition id, mbr entry structure,... etc.
在 PUBLIC\COMMON\OAK\INC

bootpart 的nandflash 操作要借助 fmd.h 的function。
fmd.h 在 PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD\INC
發現在 PUBLIC\COMMON\OAK\DRIVERS\BLOCK\MSFLASHFMD 有很多source code,其中

folder : ECC 還提供 256 bytes 1 bit 的 Hamming Code ECC Compute/Correct .
folder : RAM (好像)提供一個RAM模擬 nandflash 動作。
folder : TEST 提供一個利用 FMD_XXX作測試的AP,作read/write/erase, getinfo 等測試。

5.06.2008

Share code between bootloader and OS - FMD driver

要使用binfs 的話,bootloader 要link bootpart.lib,bootpart.lib需要 FMD_XXXX function sets,這部份 implement 在 OS 的driver (or common) folder 中。

但是要注意的是 bootloader 沒有提供 OS 的library,所以有一些function 不能call (其實是一堆function 不能 call)。

所以在 implement FMD driver 時,要注意到這件事情。

Microsoft Certification for CE 6.0 - Preparation Kit download

好(?)消息:
Nicolas NESSON's weblog 說 MS 有一個CE6 的Certification。
並且提供一份 Trainning Course,幫助你通過這個 Certification。

這份Trainning course 是 Free 的,預計有 6 個chaptor。
但是現在只有 Chaptor 1, 3 Ready for download,其他的章節會陸續補上,Download 的Link 在 這裡

還說,接著會有5國語言的翻譯本出現.....

BINFS

剛好 MSDN 上有一篇how to - "How to Implement BinFS"

第一步:Bootloader Support for BinFS

bootloader 要能夠在media (例如:Nandflash)上 create partition(BINFS & extend)。
這要link bootpart library。

bootloader create 好 BINFS 和 extended partition,OS就可以在 extended partition 上create data partition。

bootpart library 還可以 create boot partition 來存放 boot parameters :MBR 放在那一個block,BinFS region。

Bootpart library 在 %_WINCEROOT%\public\Common\Oak\Drivers\EthDbg\Bootpart

加入以下的registry後,BOOTPART 就可以認得 Bootpart create的 BOOT 和 BINFS partition:
[HKEY_LOCAL_MACHINE\System\StorageManager\PartitionTable]
"20"="BOOT"
"21"="BINFS"



第二步 修改 Config.bib

增加一個 EXT 記憶體區域,Type是 NANDIMAGE

NANDIMAGE Type 是 "不會被allocate memory" 的區域。 (但是還是要宣告出一塊address range ?)。
NK   800B8000  00300000 RAMIMAGE
EXT 803B8000 01000000 NANDIMAGE
CHAIN 813B8000 00001000 RESERVED
NK (RAMIMAGE)這塊區域是在boot的時候,會被load到RAM里的,所以BINFS需要的driver 都要放到NK中:
  • 有一堆....NK.exe, Kernel.dll, Coredll.dll, Oalioctl.dll, Fsdmgr.dll, mspart.dll, romfsd.dll, binfs.dll filesys.dll,, flash driver,, device.dll... 一堆
然後修改 CONFIG 區域,有三點:
  • RAM_AUTOSIZE=OFF
  • ROM_AUTOSIZE=OFF
  • 設定 XIPCHAIN=chain region 的開始位址。

第三步 修改 Platform.reg

BinFS Registry Settings
[HKEY_LOCAL_MACHINE\System\StorageManager\BinFS]
"FriendlyName" = "Bin FileSystem"
"Dll" = "binfs.dll"
"Paging"=dword:1
[HKEY_LOCAL_MACHINE\System\StorageManger\Profile\MSFlash]
"DefaultFileSystem"="BINFS"
"PartitionDriver"="mspart.dll"
"MountHidden"=dword:1
"MountAsRom"=dword:1
"Folder"="NAND Flash"
"Name"="Flash Disk Block Device"


這樣就完了 ? 不知道要怎樣把build出來的image (*.nb0, *.bin) download 到nandflash 中,用 Kitl 嗎? 還是要 用 eboot bootpart ?

ref 這一篇後...
這樣做之後,Config.bib 中,RAM 區域的開始位址,就可以設為 EXT (NANDIMAGE)的起始位址,也就是說,使用 BINFS 後,OS 的 RAM 就多了 (NANDIMAGE)這塊區域可以運用了。
當所有 NANDIMAGE 區域的 dll 都不需要 load 的時候,OS 的 RAM 就可以使用 這整塊,全部的區域。


可不可以這樣說:使用BINFS 後,RAM 可以增加的size,最大是 NANDIMAGE 這麼大。..

XIP - for Nand

原來是我會錯意

CE 的XIP 果然和 Linux 的XIP 是同一個意思,就是 Execution In Place。
可以讓code直接在ROM的address space 執行,不用 load 到 RAM中執行。

Multi-XIP 就是將 XIP 區域切割成多塊,這樣就可以把AP, SHELL, OS分在不同的XIP 區域。
這些區域分別會燒在 ROM的不同區域中,所以就可以分開update AP, SHELL, OS,不會互相影響。不需要為了修改 SHELL,連OS都要、一起update。



而在NAND Flash 上,是不可能作XIP的,但是使用Multi-XIP 還是有好處,就是可以分開update AP, SHELL 和 OS。

但是這樣的 image,在執行時還是會整個都load 到RAM中 。不管該DLL, EXE 前是否要使用,所以很浪費RAM。

如果要讓OS在需要的時候,才把 DLL, EXE load 到RAM裡,就要讓 OS 能夠access image 的內容,這個方法就是 BINFS 。

將 image 包裝成 BINFS 的格式,讓OS 能夠讀取,OS在需要的時候,就會到BINFS filesystem 中取出DLL 或EXE。

所以對"節省RAM"這一點來說,要使用BINFS。 而不是Multi-XIP。
(那binfs 是不是需要利用 Multi-XIP 來完成?)

.... 這個,大概就是大家說的..在NAND 上使用 XIP 吧..

Notes - 壓縮資料庫

紀錄一下..

檔案 -- 資料庫 -- 屬性 -- i -- 壓縮 --然後就可以看 %.

Robert 說這是手動的,所以每天都要作一次...

Multi XIP and Binfs

有點問題:

msdn 上 Multi XIP 的說明 (How to),並沒有提到BINFS。
只需要將 NK 切割成幾塊 BIN。
然後加上 chain,並且在 OEMInit( )中將 fixup (也就是 boot parameter) 的內容update 到 chain variable 就可以了。

但是實際看 source code,OEMInit 中並沒有這樣作。反而是把 NK 切割成 corekernel ,其他都放到 NAND 中,然後啟動BINFS。

是不是使用BINFS,就不需要在OEMInit( )中update chain 資料?

這樣的 XIP是不是就只有load kernel,而在NAND 的部份(BINFS),則是以DLL, EXE的形式依照需要load到RAM中 ? (而不是和How to 中的作法,會將APP.BIN, SHELL.BIN 在需要的時候整塊load到memory)

5.02.2008

eboot startup address

原來,eboot 的執行位址是由 eboot.bib 決定的。
eboot.bib 中RAMIMAGE Type 的位置就是startup address。
MEMORY

; Name Start Size Type
; ------- -------- -------- ----
EBOOT 00002000 00021000 RAMIMAGE
像這格start address就會是0x00002000
這個 RAMIMAGE 是不是就是code 的位置呀 ?

svn - daily use command for a programmer

  • checkin : clean your code (just keeps the most original code, remove the generated data and codes.
  • checkout : start to go with SVN.
  • update : keep track with main trunk.
  • revert : abandon current changes or revert to history code.
    • show log
  • branch : when someone modify the main trunk, or you just want to keep quite.
  • switch : change the working codes between branch and main trunk
    • repo browser
  • merge : OK, contribute your code and keep track with the main trunk.
    • from - to
    • Eric's merge tool.
  • diff - for arbitrary rev
    • for checked out codes only - show log
  • add files : add some modules files.
    • add then commit
  • delete files : delet some unuses files.
    • sometimes may cause conflicts - file exist.
  • export : if you just want the code.
  • blame : who to blame.
  • conflict and resolved : something not synchronized.. need hand made.

An Example :

Simple Hello code , with ? python ? better with command line build tool (or VS2005 is more attractive to them ?)

5.01.2008

try safari

safari 已經到了實用階段。尤其他的字型顯示,是我看過所有browser里最漂亮的 (Robert還一度誤認為是 pdf reader...)。

但是..用了一陣子之後。還是不習慣呀。尤其是對firefox 的使用者而言。

先是.. 沒有同文堂,所以簡體沒辦法 轉成繁體。

然後..google toolbar 不支援,所以沒辦法直接翻譯。

然後..看到想紀錄下來,以後再看的網頁,也沒辦法用 taboo...

... 一堆,一堆... 都很不方便...


所以,最後還是用回firefox了。


我想,接下來的browser ,最好都能支援 firefox extension,否則,要達到像 firefox 這麼方便大概不可能吧..