網頁

2014年4月29日 星期二

[Windows Driver Installation] Roadmap for Device and Driver Installation

 

以下說明製作 Windows Vista 及後續版本 Driver Installation 的 8 個步驟

參考連結

http://msdn.microsoft.com/en-us/library/windows/hardware/ff550690(v=vs.85).aspx

Step 1: Learn the fundamentals of device and driver installation in Windows.

你必須了解在 Windows系列, 安裝設備和驅動程序的基礎知識. 這將有助於你做出相應的設計決策, 並簡化開發過程.

參考資料, 設備和驅動程式安裝概述.

Step 2: Learn about driver packages and their components.

驅動程式包中包含所有你必須提供的安裝及支持您的設備的組件. 要安裝一個設備或驅動程序, 您必須擁有系統提供的和供應商提供的組件. 系統提供適用於所有設備的通用安裝軟體. 供應商則在驅​​動程序包中提供一個或多個設備特定的組件.

參考資料, 驅動程式包.

Step 3: Learn about information (INF) files.

INF文件中包含了系統所提供的設備安裝組件, 以安裝你的驅動程式包的資訊和設備設定. 例如設備的驅動程式及搭配設備的軟體.

參考資料, INF 檔案.

Step 4: Learn about additional software installation components.

您的驅動程序包可以包含各種軟體組件, 如輔助安裝程序或類別安裝程序, 可以增強和擴展設備和驅動程序的安裝. 舉例來說, 一個輔助安裝程序可以執行以下操作:

  • 執行 INF 文件無法處理的額外設備安裝任務. 例如, 輔助安裝程序可以寫入額外的設備的特定訊息到 registry.
  • 提供安裝完成嚮導頁面, 以在安裝您的設備後, 顯示額外的嚮導頁面給使用者.
  • 提供完成安裝的動作來啟動其他只能在使用者互動的狀態下執行的安裝程序.

參考資料, 設備和驅動程式軟體安裝.

Step 5: Create a driver package for your device and drivers.

您的驅動程序包必須提供一個INF檔案, 該設備的驅動程序檔案, 以及選擇性的額外軟體. 你可以參考樣本烤麵包機驅動程序包的例子, 以確定哪些是驅動程序包需要的組件.

有關驅動程序包的組件的詳細信息, 請參閱創建驅動程序包 .

有關驅動程序包的更多信息, 請參閱烤麵包機範例.

Step 6: Test-sign your driver package during developemnt and testing.

測試簽名是指, 在測試電腦上, 使用測試認證來簽署預先發布的的驅動程序包. 尤其, 這提供開發人員使用自簽名的證書, 來簽署驅動程序包. 例如, 用 MakeCert 來產生認證的證書. 此功能可以讓開發人員在啟動驅動程式簽署認證的 Window 系統中, 安裝和測試驅動程序.

參考資料, 設備和驅動程式安裝概述: 在開發和測試過程中簽署驅動程序 .

Step 7: Release-sign your driver package for distribution.

當你完成測試並驗證您的驅動程序包, 你應該發行認證你的驅動程序包. 發行認證可以識別驅動程序包的發行者. 雖然這一步是可以選的, 驅動程序包應該作發行認證, 原因如下:

  • 確保真實性, 完整性, 以及驅動程序包的可靠性. Windows使用數位簽名來驗證發行者的身份, 並確認該驅動程序沒有被修改, 因為它被出版了.
  • 通過便利的自動安裝驅動程序提供最佳的用戶體驗。
  • 在在64位版本的Windows Vista和更高版本的Windows 的系統上, 運行核心模式驅動程序。
  • 播放某些類型的新一代優質內容。

驅動程序包可以通過任一方式發行簽名:

參考資料, 為公開發行進行驅動程序簽名.

Step 8: Distribute your driver package.

最後一步是發送 如果你的驅動程序包通過 HCK 定義的認證程序, 就可以透過微軟Windows更新程序發布.

參考資料, 發布驅動程式包.

2014年4月27日 星期日

[Google 翻譯 Bug]

 

發現一個 Google 翻譯的 bug. 但是找不到可以 report bug 的地方. 就先寫在這裡囉.

在翻譯以下連結的時候, 出現一個錯誤.

http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt

原文應該是

As a result Bulk transfers should only be used for time insensitive communication as there is no guarantee of latency.

 

翻譯的結果是:

因此批量傳輸應該只用於時間敏感的通信,因為沒有保證的延遲。

 

如果只翻譯 time insensitive, 結果是 “時間不敏感”, 這是對的. 這應該算是 bug 吧.

 

Google Translator Bug

[EZ-USB FX3] USB Transfer modes


不僅僅是 FX3, 所有的 USB device 都可以有 4 種不同的傳輸模式. 這 4 種不同的傳輸模式, 各自有各自的定位和特性,傳輸速度. 在評估 FX3 的傳輸速度前, 先簡單說明這幾個不同的傳輸模式.
參考連結:
http://www.beyondlogic.org/usbnutshell/usb4.shtml#Interrupt
Control Transfer 控制傳輸
Interrupt Transfer 中斷傳輸
Isochronous Transfer 同步傳輸
Bulk Transfer 大量傳輸

 

Control Transfer: 控制傳輸

定位:
Control Transfer 是被設計作為 USB Host 向 USB Device 下達命令及狀態查詢. 它的作用主要是在於和應用無關的 USB 系統控制. 所以, 每個 device 都必需至少提供一組 Control Transfer 來對應.
當然, 要自己定義一組 Control Transfer 來使用也是可以的.
特徵:
由於是對應 USB Host 的命令, 所以對 device 來說, Control Transfer 是突如其來, 但是它又必需以最高優先權傳送, 所以它可以傳送的資料限制也最大. 通常, 它只能傳送 8/16/32/64 個 bytes 的資料.

Interrupt Transfer: 中斷傳輸

定位:
相對於 Control Transfer 是被動的和 USB Host 溝通, Interrupt Transfer 是被設計作為USB device 向 USB Host 傳送非週期的資料. 但是在 USB 的架構下, 傳輸的頻寬是由 USB Host 分配, 因此, Interrupt Transfer 實際上是先向 USB Host 發出頻寬分配的請求, 然後在下一次傳輸時, 才真正的傳遞資料.
特徵:
Interrupt Transfer 傳送的是非週期性的資料, 這代表這資料的重要性比較高. 因此, Interrupt Transfer 傳送的資料, 可以被保證在一段時間內送達, 而且, 如果傳送錯誤, 它可以在下一個 Host/Device 交換資料的時間內重傳.
Guaranteed Latency
Stream Pipe - Unidirectional
Error detection and next period retry

Isochronous Transfer: 同步傳輸

定位:
同步傳輸用來傳送連續, 定期發生, 對時間敏感的資料. 譬如說, 電話/即時影像/視訊電話等應用. 當中間有一小段資料失誤, 對應用來說, 影響不大, 可能只是很短的一個雜音, 或是畫面破損了一下, 停滯了一下. 由於下一個時間點的資料還是會繼續收到, 因此, 這樣的影響是可以被接受的.
Isochronous Transfer 的資料, 及時送達比資料的正確性重要.
特徵:
Isochronous Transfer 保證在傳輸的過程中, 在每一次傳輸時, 保留預先分配的資料頻寬來傳送資料. 因此, 它可以保證在固定時間內傳輸, 它檢查錯誤, 但是不重傳, 也不保證送達.
Guaranteed access to USB bandwidth
Bounded latency
Stream Pipe - Unidirectional
Error detection via CRC, but no retry or guarantee of delivery
Full & high speed modes only
No data toggling

Bulk Transfer: 大量傳輸

定位:
Bulk Transfer 用來傳送大量突發性, 時間不敏感的資料. 例如外接硬碟, 從 scanner/DSC 接收影像資料. 這些資料, 傳輸錯誤不能容許, 但是慢個一秒也沒有太大的關係. 
Bulk Transfer 的時間優先權是最低的, 因此, 在其他 Transfer mode 作用的情況下, 會延遲較長的時間, 資料才能被送出. 但是在傳輸的頻寬分配完之後, Bulk Transfer 又可以吃光所有剩下的頻寬. 因此, 它又具備最大傳輸能力的可能性.
特徵:
Bulk Transfer 的時間優先權是最低的, 因此, 在其他 Transfer mode 作用的情況下, 會延遲較長的時間, 資料才能被送出. 但是在傳輸的頻寬分配完之後, Bulk Transfer 又可以吃光所有剩下的頻寬. 因此, 它又具備最大傳輸能力的可能性.
Used to transfer large bursty data
Error detection via CRC, with guarantee of delivery
No guarantee of bandwidth or minimum latency
Stream Pipe-Unidirectional
Full & high speed modes only

2014年4月23日 星期三

[EZ-USB FX3] FX3 啟動


這部份說明的是, 啟動 Eclipse ( IDE for firmware development), build example project, download firmware code, 以及從 Windows 上的程式去存取.
使用到 USBBulkLoopAuto 這個 example, 及 Bulk Loop 這個 utility.
參考 Application Note AN75705, Getting Started with FX3
1. 啟動 Eclipse. Eclipse 已經在安裝 SDK 的時候, 一併安裝了. 可以在程式集的 Cypress 下面的 Eclipse 找到. 不同的 SDK, 有不同的檔名, SDK 1.3 的檔名是 “EZ USB Suite”
01-Start-Eclipse-IDE
2. Select Workspace. Eclipse 的架構是 Workspace 裡面裝 project. 所以要先選擇一個 workspace. 用 default 的也可以, 或者隨便定義一個空的目錄也行. (避免給自己找麻煩, workspace 的名稱不要有空白字元).
02-Select-Workspace
3. Upload Usage data. Eclipse 會收集一些資訊, 給不給都沒有關係.
03-Upload-Usage-Data
4. Eclipse 說明收集的資料使用目的及限制.
04-Terms-of-use
5. 加入範例專案. SDK 已經包含了一些 example, 現在要把它複製到 Eclipse 的 workspace. 在 Eclipse 的 File 選項, 選擇 Import. import source 選擇 General/Existing Projects into Workspace, 如下圖. 按 Next 繼續.
05-Import-Example-Project
6. 選擇來源專案目錄. 預設的 example project 會放在 “C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware”. 按確定繼續.
06-Select-Source-Folder
7. 複製專案. Eclipse 在這個目錄, 會找到許多專案, 把它們通通 import 進來.
* copy projects into workspace 務必要打勾
07-Import-Projects
8. 設定 Save before Build. 在 Eclipse 的 Window 選項, 選擇 Preferences, 在 General/Workspace, 把 Save automatically before build 打勾. 按 Apply09-Save-Before-Build
9. 建置 USBBulkLoopAuto 專案. 先把 USBBulkLoopAuto 專案選取.
08-Build-USBBulkLoopAuto
10. Build. 可以在 USBBulkLoopAuto 的選項上按右鍵, 選擇 Build Project. 也可以選取專案後, 按工作列的鎚子. 建置的結果, 可以在底下的 Console 視窗看到.
10-Build-Project
11. download firmware. 接下來要用 Control Center download firmware 到 FX3 上, 所以先從程式集中, 叫出 Control Center.
11-Control-Center
12. 選取目前僅有的 Cypress USB BootLoader
12-Select-Device
13. 在 Control Center 的 Program選項中, 選取 FX3/RAM. 然後在選取 file 的對話盒中, 選取剛剛建置完成的 USBBulkLoopAuto.img
13-Select-Image-File
14. Control 自動 download firmware. (這一點不太欣賞). download 完之後, Control Center 的 device 的名稱變成 Cypress USB BulkloopExample
14-Device-Changed
15. 接下來, 要用 PC 端的 Bulk Loop 來和 FX3 試傳資料. 在程式集中, 選取 Cypress/Cypress USBSuite/Bulk Loop
15-Launch-Bulk-Loop
16. BulkloopExample 顯示可用的狀態
16-Bulk-Loop
17. 按下 Start, 開始試傳.
17-Bulk-Loop-run

2014年4月22日 星期二

[EZ-USB FX3] USB driver 安裝記錄


參考 Application Note AN75705, Getting Started with FX3
1. 將板子的電源 ( 5V adapter) 接上. 板子上的 LED 燈會亮起.
2. 將所附的 USB 3.0 cable 連接到電腦的 USB 3.0 port.
3. 過一段時間之後, 右下角的狀態列, 會顯示錯誤的彈出視窗. 點擊之後, 螢幕中央會顯示無法識別的裝置
01-device-not-recognize
4. 依照建議, 拔除 USB cable, 再重新連一次. 右下角的狀態列, 會顯示另一個視窗. 點擊之後, 螢幕中央會顯示找不到驅動程式.
02-device-driver-not-found
5. 關閉此對話盒.
6. 打開控制台/硬體及音效/裝置管理員
03-device-manager
7. 點選 “WestBridge”, 如上圖. 選擇更新驅動程式軟體.
04-update-driver(WestBridge)
8. 選擇"瀏覽電腦上的驅動程式軟體", 如上圖所示. 並指向以下目錄
“C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\driver\bin\win7\x64”, (因為我的電腦是Windows 7 64 位元)
05-manual-update 
9. 安裝完成, 顯示 “Cypress USB BootLoader”
06-update-success
10. 安裝成功後的裝置管理員
07-updated-device-manager
11. 打開程式集/Cypress/Cypress USBSuite/Control Center
08-Control-Center
12. USB Control Center 的畫面, 左邊顯示 "Cypress USB BootLoader”, 右邊顯示 USB device 的相關資訊
09-control-center-view
13. USB driver 安裝完成

[EZ-USB FX3] SDK 安裝記錄


參考 Application Note AN75705, Getting Started with FX3

從光碟中, 執行 FX3SDKSetup.exe

01-browse
出現歡迎畫面, 按 Next, 進行下一步
02-wizard
出現安裝產品資訊, 按 Next, 進行下一步
03-overview
CYPRESS END USER LICENSE 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
04-sdk-agreement
CodeSourcery 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
05-sdk-agreement
Eclipse Public License 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
06-sdk-agreement
Eclipse Foundation Software User Agreement 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
07-sdk-agreement
開始安裝
08-sinstall
過了一段時間之後, 安裝完成了
09-finish
按下 finish, 並帶出 Update Manager
10-upgrade
選擇 Update, 開始更新
* 更新時, 需要保持連線, 才能線上更新
* 更新時, 有時會發生不能連線到 server 的警告, 可以 retry.
11-upgrading
線上檢查完, 開始更新. 畫面雖然相同, 但是安裝型態變成 Update 了.
12-update-sdk
CYPRESS END USER LICENSE 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
13-agreement
CodeSourcery 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
14-agreement
Eclipse Public License 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
15-agreement
Eclipse Foundation Software User Agreement 的授權同意畫面, 選擇 accept, 按 Next, 進行下一步
16-agreement
完成後開始線上更新
17-start-upgrade
然後, 總算完成更新

[EZ-USB FX3] DVK 開箱記錄


EZ-USB FX3 DVK, 售價 $397.00. 詳細資訊, 可以參考以下連結. 
http://www.cypress.com/?rID=58321
外觀就是一個小塑膠盒, 和電玩的包裝差不多
01-overview
從上面看, 有 CYPRESS, EZ-USB FX3 的字樣
02-overview-top
打開以後, 裡面組件的排列, 白的站一排, 黑的站一排
03-inner
這一側, 白邊, 是 CD 和 Quick Start Guide
04-inner-upper
黑的這一排, 是板子, USB cable, 電源功應器
05-inner-bottom
所以, 裡面共有 5 件物事, 泡綿不算
1. CD
06-CD
2. Quick Start Guide
07-Quick-Start-Guide
3. Development Board
08-Board
4. USB 3.0 A to Micro B Cable
09-USB-Cable
5. 5-V AC-DC 電源
10-Power-Line
集合
11-Content