2014年1月28日 星期二

Windows Embedded Standard 7對於SSD的優化

在Storage 市場上於了傳統的HD之外,SSD 已愈來愈被消費者所接受了,由於Flash 速度飛快高度的防震效果在Embedded Industry 市場中已有固定的市場,所以我們特別來解析一下WES7是對於SSD 儲存設備作了那些優化的設定.

在Flash 的物理性上 每個Block的寫入資料是有壽命的限制,以MLC為10000次、SLC為100000次,但又市場上MLC為大宗,所以OS 對其優化就是設計如何延長SSD的Lifespan.

除了客戶SSD的fireware的設定之外,再來就是OS中的效能提供,在我們WES 7中有幾個設定值會針對SSD自動作調整的參數: 在ATA8-ACS中的Word 217有個值就是來判斷目前的儲存裝置為HDD or SSD.

在安裝WES7 時如何得知 系統已被最佳化,請參考以下的設定值:
  • Trim的技術: 由於其物理特性刪除資料的速度慢,所以利用Trim將要刪除的資料區先作標記,等至閒暇時再一次抹除,可以使用command 來檢查:
          Fsutil behavior query disabledeletenotify ,查看值是否為"0" ,0為Enable
  • Prefetcher 與 SuperFetch:此二項都是為了解決HDD效能不足,而預測檔案載入至Memory之中,在使用SSD時會自動Disable
         - PrefetchParameter 為 0
         - EnableSuperfetch 為 0

  • Defragment: 磁碟管理工具在使用SSD時會自動被關閉.




2013年12月12日 星期四

實現Windows Embedded 8 Standard 上的快速開機(HORM)

再來實作一個Microsoft很少人討論的功能HORM,很多人在網路上爬文都只會看到這是個快速開機的功能,能夠很快的進入作業系統,就是沒有人把這個功能作出來Demo給大家看,到底開機有多快。 最近一直被問到這個功能乾脆自已把步驟寫出來吧. 接著我們直接講解實作過程吧:

1.在ICE工具中加入我們必要元件
  • Unified Write Filter(UWF)
  • Embedded Lockdown Manger

2.設定Unified Write Filter(UWF)
  •    Binding => Loose Binding
  •    DisableSR -> 1


3.建立WE8S Image 並進行OS安裝
我們這次VIA A1100 平台來安裝 規格表如下:
CPU: U2500 1.2 GHz
RAM: 2GB
HDD: Seagate Momentus 320GB 7200RPM

4.安裝完成後我們開始來設定UWF功能,依序鍵入下列指令
   開啟Command line (請務必使用Administrator 權限)
  •    powercfg /h on
  •   uwfmgr filter enable
  •   shutdown /r /t 0


5.重開機後,再設定HORM 功能
  • powercfg /h on
  • shutdown /h


6.我們來測試一下到底開機有多快,特別將開機過程錄影下來.
從BIOS logo之後到完全開機只花了13秒,如果換成SSD 肯定是秒殺呀.






2013年12月10日 星期二

Windows Embedded 8 Standard 的Killer function-Unified Write Filter -2 (Command Line篇)

上篇討論UWF使用ELM,來作管理或許長期使用Command Line的人會可能會很不習慣,
所以後還是將UWF Command Line的常用指令操作列出來給大家試試.
PS:開啟Command line 工具進行操作,注意需使用Administrator 權限

1.查詢UWF目前設定值
uwfmgr.exe get-config
查詢目前UWF設定狀態與下次開機後的執行命令,資訊包括Filterg狀態、Overlay設定,磁碟保護的檔案與目錄與註冊檔.

2.開啟UWF功能
uwfmgr.exe filter enable
功能會在下次reboot後生效

3.UWF中設定保護磁碟
uwfmgr.exe volume protect C:
執行後需要重新開機才會生效

4.UWF中增加可存取目錄與檔案設定
當保護設定完成後,如要加入可存取檔案及目錄以依下列命令完成
uwfmgr.exe file add-exclusion C:\mydir\myfile.txt

uwfmgr.exe file add-exclusion C:\aa\documents

5. UWF中增加可存取註冊檔設定
uwfmgr.exe registry add-exclusion HKLM\Software\MySoftware\MyApp

6. UWF設定最大Overlay 空間
uwfmgr.exe overlay set-size 2048

7. UWF查詢已使用的Overlay空間
uwfmgr.exe overlay get-consumption

8. UWF查詢尚可使用的Overlay空間
uwfmgr.exe overlay get-availablespace

Windows Embedded 8 Standard 的Killer function-Unified Write Filter -1 (ELM篇)


在Windows Embedded 8 Standard上最大的賣點莫過於是UWF功能,因此我們特別開了這個主題來說明這個功能,記得在以前我們學校電腦教室一定會安裝的"硬體還原卡",這卡不便宜一片得要1、2千塊,今天要說的主題跟這個有關嗎?

UWF其實就是軟體的"硬體還原卡"功能而且這個功能還是免費的 有影沒...
我才說光這個功能Linux、Android就得要望塵莫及,回到我們的主題在這個UWF中Microsoft已經有提供UI可以提供操作,就是利用ELM(MMC plug-in的方式) 工具來管理UWF 各種功能.

一、UWF 功能設定
1.在ICE中的Configuration File 視窗,展開Feature->Lockdown 加入Unified Write Filter(UWF)
2.在Settings and Properties中選擇Settings 頁籤
3.在Settings 中將Filter View by 項目選擇為”4 Specialize”

  •     DisableSR =1  (關閉系統還原點功能)
  •     Binding = Loose Binding (利用drive letter來設定)


二、ELM上操作UWF UI設定
1.於左邊視窗中展開UWF項目其中細分成三部份:

  • Volume => 主要管理要增加保護的磁碟代號
  • File Exclusions => 加入需要作存取的檔案或目錄
  • Registry Exclusion => 加入需作保留Registry路徑
2. 於右邊視窗中顯示目前UWF 狀況,Overlay size、Type..etc
 

3.選擇Volumes 項目,控制磁碟保護開啟與關閉
 

4.選擇File Exclusions,增加排除保護的檔案與目錄.
        
5.選擇Registry Exclusions, 增加排除保護的Registry路徑

[Seminar] 12/18 零售產業高峰會 微軟嵌入式系統


                   報名網址  http://seminar.ithome.com.tw/live/20131218CW/index4.html

                                 

WE8S 開機進入客戶程式(Shell Launcher)


Windows Embedded 8 Standard 中設定Custom Shell設定方式,我自是使用EEF中的Shell Launcher 其好處是本身Application可繼承Shell的特性,在WE8S中我們可以針對Application被使用者關閉所對與的行為作出對與的動作.

在客製化Shell 的步驟中我們針對OOBE 與 Shell launcher 所需要修改的參考作以下範例:
1.設定OOBE自動化
Product->Embedded Core 中設定”7 OOBE System”
在OOBE 屬性中設定下列參數
HideWirelessSetupInOOBE = true
HideOEMRegistrationScreen = true
HideLocalAccountScreen = true
HideOnlineAccountScreen = true
HideEULAPage = true
NetworkLocation = work
ProtecYourPC = 1

2.Shell Launcher 元件設定
展開Features->Shell->Shell Launcher 設定”7 OOBE System”
  Shell -> explorer.exe
加入不用的UserSettings進系統中,並指定開啟的Shell 的路徑.


展開User 項目作以下設定:
AccountName -> WorkShopUser
Shell -> C:\users\CustomDesktopShell\CustomDesktopShell.exe
DefaultReturnCodeAction -> 0
Key -> 1

其中值得一提的是DefaultReturnCodeAction ,主要是控制Shell屬性的參數
對於Application 被關閉是作的行為設定,我們預設為"0" 當Application被關閉時系統自動將Application重啟,可使Application 一直顯示在螢幕上.
                                   

2013年11月28日 星期四

如何刪除Windows Embedded 8 Standard 上的 Module

最近在備課時發現怎麼一堆人只在談如何使用Designer Module 來建立Module 加入至Catalog 之中,但是沒有人教你怎麼移除它,每作一次就多一個元件終於我受不了,於是我研究了一個下午終於有個驚人的發現Windows Embedded 8 Standard中有個隱藏的工具Catman.exe 看名字應該不難猜到Catalog management 功能.

1.依照慣例我還是要教大家怎麼匯入一個Module 至Catalog( 之前我教過MD 如何製作了,請爬文),在File->Import 選擇匯入Module  並將之前作好的emd檔匯入.

2.匯入完成後會出現成功訊息,如下

3.按F5 重新整理一下Catalog ,你會發現 剛剛匯入的Module會存在於Custom Modules目錄之中

4.開啟檔案總管,我們看一下匯入的Module 的檔案都去了那裡了.
  基本上路徑會在C:\Windows Embedded Catalog\6.2\9200.16384\x86\modules\FeaturePack之中 (路徑很重要請記起來),下面紅框就是剛剛匯入的Module 的名稱.

5.接著重頭戲來了,先開啟一個command line 視窗,並將路徑切換至C:\Program Files (x86)\Windows Embedded 8 Standard\Toolset\Embedded Tools.
開始來移除剛剛我們匯入的Module ,我們使用以下的指令
catman /remove "C:\Windows Embedded Catalog\6.2\9200.16384\x86\modules\FeaturePack\Win8_App~0000000000000000~x86~~1.0.0.0.emd" "c:\windows embedded catalog"

PS:以上路徑分成四個顏色  cataman /remove "存放emd的路徑"  "Catalog 的目錄"
以上說了一堆 只要看的懂這一行指令就好了.

6.成功移除後 系統會提示 Catalog 有更動,按F5 refresh 一下Catalog.

7.檢查一下剛剛Win8_App 果然不見了,連帶的Custom Modules 目錄也被刪除了

8.就是這麼簡單 但是就是沒有人研究,這個解開了許多人多年的疑問了.