星期四, 3月 19, 2015

WINCE如何保存設置?

在CE下,更改了IP位址,重啟後設置的值丟失。
Use Hived-base Registry

除了加入 hive-base registry support 之外最重要的就是在 boot phase 時要能把你的 External Storage 給 mount 上來並且只定對的 registry path

相關 document 可參考help index 中查 hive-based registries, setup
boot phase 的 registry 會放在 boot.hv 中這是 boot time 時用的default registry至於要如何把東西放到 boot.hv 中寫法大概像是; HIVE BOOT SECTION; END HIVE BOOT SECTION

hive base registry 就是registry 會以file 型態 storage 在 某個地方

1. 確認你指定的檔案是否有存在,default at: \Hard disk\Documents and Settings\System.hv2. OS會自動存入當你選擇"Start" -- "Stand by"的選項。若你關機時沒做這個動作,就會lose有修改的registry設定。你可以確認檔案日期是否會更新

其是要做 save 動做除了上述的 suspend 外也可以在你的 registry 加上 PersiXXX 忘了 的 key 可以讓你在 RegCloseKey 時也會 flush

請 教如何才能WINCE啟動時,直接運行IE流覽器。我在common.reg,在[HKEY_LOCAL_MACHINE\init]段添加如下類似內 容: "Launch80"="iesample.exe" "Depend80"=hex:14,00 但是,不起作用。

I've built a setup-box project boot with ie browser on wince 4.1.I'm sorry to make a mistake about the launch id of the explorer shell, it's 50(0x32) not 60(0x3c).Try this,

"Launch100"="iesample.exe" "Depend100"=hex:32,00

不 知各位先進有無試過在WinCE.NET中, 設定PCI介面的Multi-Serial Card,我參照Windows CE.NET 4.2 Documents內的PCI Serial Driver Loading, 設定我的OxFord OX16PCI954, 但並不能運作, 在HKEY_LOCAL_MACHINE\Drivers\Active中, 找不到Name, 所以看起來應該是沒有驅動, 我在Platform.reg中的設定如下:; ------------------------------ BEGIN PCI DEVICES ---------------------------------[HKEY_LOCAL_MACHINE\Drivers\PCI\Template\Serial] "Dll"="Com16550.Dll" "Class"=dword:07 "SubClass"=dword:00 "ProgIF"=dword:02 "VendorID"=multi_sz:"1415" "DeviceID"=multi_sz:"9501" "Prefix"="COM"

[HKEY_LOCAL_MACHINE\Drivers\PCI\Template\Serial\Unimodem] "Tsp"="Unimodem.dll" "DeviceType"=dword:0 "FriendlyName"="Serial Cable on PCI" "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00
[HKEY_LOCAL_MACHINE\Drivers\PCI\Instance\Serial1\Unimodem] "FriendlyName"="Serial Cable on COM3:"; ------------------------------ END PCI DEVICES -----------------------------------
[HKEY_LOCAL_MACHINE\Drivers\PCI\Instance\Serial1] "InstanceIndex"=dword:1 "Dll"="Com16550.Dll" "Prefix"="COM" "Priority"=dword:0 "Class"=dword:7 "SubClass"=dword:0 "ProgIF"=dword:2 "VendorID"=dword:1415 "DeviceID"=dword:9501 "RevisionID"=dword:00 "SubVendorID"=dword:1415 "SubSystemID"=dword:0 "InterfaceType"=dword:5 "BusNumber"=dword:0 "DeviceNumber"=dword:15 "FunctionNumber"=dword:0 "IoBase"=dword:D000 "IoLen"=dword:8 "Irq"=dword:7 "SysIntr"=dword:17
[HKEY_LOCAL_MACHINE\Drivers\PCI\Instance\Serial1\Unimodem] "Tsp"="Unimodem.dll" "DeviceType"=dword:0 "FriendlyName"="Serial Cable on COM3:" "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00
但是在HKEY_LOCAL_MACHINE\Drivers\Active中就是找不到COM3這個Name,我也沒試過別家的卡, 因為我這台是All in one的機器, 不知各位先進認為哪裡有問題
附註一下:基本上這樣設定是沒有問題的, 因為我可以用下列方式,
IF BSP_SERIAL3[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3] "SysIntr"=dword:17 "IoBase"=dword:D000 "IoLen"=dword:8 "DeviceArrayIndex"=dword:2 "Prefix"="COM" "Dll"="Com16550.Dll" "Order"=dword:0
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Serial3\Unimodem] "Tsp"="Unimodem.dll" "DeviceType"=dword:0 "FriendlyName"=LOC_FRIENDLYNAME_SERIAL3 "DevConfig"=hex: 10,00, 00,00, 05,00,00,00, 10,01,00,00, 00,4B,00,00, 00,00, 08, 00, 00, 00,00,00,00ENDIF BSP_SERIAL3
...
設出另外4個Serial ports, COM3-COM6, 但因為是用同一個IRQ, 所以一次只能開啟一個Serial port, 但我現在要同時使用6個Serial ports, 所以必須要用PCI方式驅動, 不知各位有何建議, 不然我就要重新寫一個Multi Serial Port的驅動.

CE下我已經能實現128MB記憶體,但如法炮製256MB記憶體卻不能正常啟動,做法如下:

1. modify pc.h,set CEPC_EXTRA_RAM_SIZE = 0x0E4000002. modify _OEMAddressTable in oeminit.asm, set dd 80000000h, 0, 0F000000h;3. build -cf4. rebuild NK.bin
參數值都是根據說明改的,不知道是設置的問題,還是CE就是最大記憶體限制?
各位大蝦請幫忙!

這問題好像在 platbuilder newsgroup 問過已經有回答了就是mapping range要設成 010000000h

另外 pc.h 也要改CEPC_EXTRA_RAM_SIZE = 0x0E400000;

kshuang大大,我都已經改了:

1. modify pc.h,set CEPC_EXTRA_RAM_SIZE = 0x0E4000002. modify _OEMAddressTable in oeminit.asm, set dd 80000000h, 0, 010000000h;3. build -cf4. rebuild NK.bin
還是不行。新聞組我也查了,沒有查到相關討論啊。為什麼要設為010000000h有點不太明白。這些東東調試的時候也沒辦法查看,很煩人啊。
因 為 OEMAddressTable 是決定 Virtual Memory Mapping 的 table而 config.bib 只有static mapping 到 前 28mb後面的 228 = 0xE4 都是在 run-time 時 mapping 的所以這樣加起來就變成 256 也就是 0x1000_00000

另外你用的主機板 該不會是那種 FrameBuffer 跟 Main Memory 共用的?? 很多build in Display 的 MB 都是這樣這時後呢 你就不能全不拿來用要扣掉最後那邊拿去做 FrameBuffer 的

張貼留言