Google的新玩具:Google Site。
看起來好像是 Wiki.
有Google帳號就可以開啟
http://sites.google.com/site/sites/
5.23.2008
5.17.2008
5.13.2008
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!
查了一下..之後就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
有完整的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 時,要注意到這件事情。
但是要注意的是 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。
還說,接著會有5國語言的翻譯本出現.....
Nicolas NESSON's weblog 說 MS 有一個CE6 的Certification。
並且提供一份 Trainning Course,幫助你通過這個 Certification。
這份Trainning course 是 Free 的,預計有 6 個chaptor。
- Chapter 01: Customizing the Operating System Design
- Chapter 02: Building and Deploying the Runtime Image
- Chapter 03: Performing System Programming
- Chapter 04: Debugging and Testing the System
- Chapter 05: Customizing a Board Support Package
- Chapter 06: Developing Device Drivers
還說,接著會有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:
第二步 修改 Config.bib
增加一個 EXT 記憶體區域,Type是 NANDIMAGE
NANDIMAGE Type 是 "不會被allocate memory" 的區域。 (但是還是要宣告出一塊address range ?)。
第三步 修改 Platform.reg
BinFS Registry Settings
這樣就完了 ? 不知道要怎樣把build出來的image (*.nb0, *.bin) download 到nandflash 中,用 Kitl 嗎? 還是要 用 eboot bootpart ?
ref 這一篇後...
這樣做之後,Config.bib 中,RAM 區域的開始位址,就可以設為 EXT (NANDIMAGE)的起始位址,也就是說,使用 BINFS 後,OS 的 RAM 就多了 (NANDIMAGE)這塊區域可以運用了。
可不可以這樣說:使用BINFS 後,RAM 可以增加的size,最大是 NANDIMAGE 這麼大。..
第一步: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 RAMIMAGENK (RAMIMAGE)這塊區域是在boot的時候,會被load到RAM里的,所以BINFS需要的driver 都要放到NK中:
EXT 803B8000 01000000 NANDIMAGE
CHAIN 813B8000 00001000 RESERVED
- 有一堆....NK.exe, Kernel.dll, Coredll.dll, Oalioctl.dll, Fsdmgr.dll, mspart.dll, romfsd.dll, binfs.dll filesys.dll,, flash driver,, device.dll... 一堆
- 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 吧..
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 吧..
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)
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。
這個 RAMIMAGE 是不是就是code 的位置呀 ?
eboot.bib 中RAMIMAGE Type 的位置就是startup address。
MEMORY像這格start address就會是0x00002000
; Name Start Size Type
; ------- -------- -------- ----
EBOOT 00002000 00021000 RAMIMAGE
這個 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 這麼方便大概不可能吧..
但是..用了一陣子之後。還是不習慣呀。尤其是對firefox 的使用者而言。
先是.. 沒有同文堂,所以簡體沒辦法 轉成繁體。
然後..google toolbar 不支援,所以沒辦法直接翻譯。
然後..看到想紀錄下來,以後再看的網頁,也沒辦法用 taboo...
... 一堆,一堆... 都很不方便...
所以,最後還是用回firefox了。
我想,接下來的browser ,最好都能支援 firefox extension,否則,要達到像 firefox 這麼方便大概不可能吧..
訂閱:
文章 (Atom)