網頁

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

2014年4月20日 星期日

[EZ-USB FX3] Introduction


FX3 是 Cypress 新一代的 USB controller, 支援到 SuperSpeed USB 3.0, 5 G bps 的傳輸能力, 可以傳送未壓縮的 HD video. 可以應用在 DSC, DVC, webcams, security cameras, machine vision, medical imaging, and surveillance equipments.
FX3 的參考連結如下
http://www.cypress.com/?id=3526&tabID=60939

FX3 components

FX3 可以分成三個主要部份, USB controller, GPIF II, ARM926E-J-S. ARM 是整個系統的的中心, 啟動所有的週邊, GPIF II 則從各種不同的輸入裝置取得資料, 經過設定好的 DMA channel, 送到 USB controller, 再送給 USB Host.

FX3 serials

FX3 是一個系列, 包含 FX3/FXS/CX3
    • FX3 : 一般通用型的版本
    • FX3S : 整合 storage host controller, 可以直接支援 SD/eMMC/SDIO
    • CX3 : 整合 MIPI-CSI2, 可以直接支援 MIPI 介面的裝置.
FX3S’s integrated storage host controllers enable developers to add support for SD/eMMC memories and SDIO devices to their system.
另外, FX3 也有幾種不同的規格:
型號 GPIF Memory Size Operating Temp. (°C) I/Os pins
CYUSB3011 - BZXC 8/16-bit 256 K 0~70 60 121
CYUSB3012 - BZXC 8/16/32-bit 256 K 0~70 60 121
CYUSB3013 - BZXC 8/16-bit 512 K 0~70 60 121
CYUSB3014 - BZXC 8/16/32-bit 512 K 0~70 60 121
CYUSB3014 - BZXI 8/16/32-bit 512 K -40~85 60 121
CYUSB3014 - FBXCT 8/16/32-bit 512 K 0~70 60 131
CYUSB3014 - FBXIT 8/16/32-bit 512 K -40~85 60 131

FX3 DVK

FX3 DVK ( developement kit) 則是 for FX3 的開發套件.

CX3 RDK

另外, CX3 RDK 則是一個 3rd party 所推出的 reference design kit. 作為 CX3 的設計參考, Cypress 本身並沒有 CX3 的 development kit.
CX3 RDK 的 link 如下
http://www.e-consystems.com/CX3-RDK-Documents.asp

2014年3月28日 星期五

[Visual C++] Visual C++ 的奇怪行為

 

這兩天遇到一個 Visual C ++ 的奇怪行為. 提出來給大家參考一下.

首先, 先看一個正常的例子 , 注意方刮弧中的標點符號是逗點 :

int Test[100, 200];

編譯時產生語法錯誤, VC ++ 預期在數字後是右方刮弧. 這個沒有問題.

 

再看以下敘述:

int* pTest = new int [100,200];

這次, VC 很高興的接受了這個敘述. 很怪吧 : )

2013年12月30日 星期一

[CCS] Files in a CCS project

 

在CCS (Code Composer Studio) 中, 通常會有以下的目錄及檔案. 這裡簡單的說明目錄和檔案, 並且標示在使用版本控制的時候, 那些檔案需要 check in, 那些不需要.

.settings 目錄

這是一個標準的 Eclipse 目錄, 用來存放 project 的相關設定.

必需 check in.

.ccsproject 檔案

CCS 自訂的專案檔案. 以 HTML 的格式, 記錄 CCS 對這個專案的設定. 以下舉一個例子說明, 某專案的 .ccsproject 檔案內容可能如下, 綠色的部份是另外加上的說明註解

<?xml version="1.0" encoding="UTF-8" ?>HTML 表頭, 說明這是一個 HTML 文件
<?ccsproject version="1.0"?>CCS 自我參考用的版本號碼
<projectOptions>CCS 自我參考用的版本號碼
    <deviceVariant value="Cortex M.LM4F120H5QR"/>設備代碼
    <deviceFamily value="TMS470"/>設備家族
    <deviceEndianness value="little"/>設備屬於 little endian, 低位元組在前面
    <codegenToolVersion value="5.0.4"/>Tool Chain 版本
    <isElfFormat value="true"/>輸出的 binary 是 elf 格式
    <linkerCommandFile value="lm4f120h5qr.cmd"/>連結器的命令檔, 在最後面還會有說明
    <rts value="libc.a"/>指定 C 的 run time library
    <templateProperties value="id=com.ti.common.project.core.emptyProjectWithMainTemplate,"/>
</projectOptions>

必需 check in.

.cproject

Eclipse 的專案檔案.

必需 check in.

.project

Eclipse 的專案檔案.

必需 check in.

.launches

debug session 時所建立的目錄.

不需 check in.

Debug 目錄

編譯 debug 組態時所建立的目錄.

不需 check in.

Release 目錄

編譯 release 組態時所建立的目錄.

不需 check in.

lm4f120h5qr.cmd

Linker Command file, 不同的處理器, 會有不同的記憶體映射配置. 以下用一個例子說明, 檔案中的註解已經先去除. 綠色的部份是另外加上的說明註解.

--retain=g_pfnVectors 這部份沒有查到正式的資料, 不過可以推測的是, 這是要要求 linker 在做最佳化的時候, 保留這塊變數. 儘管沒有被參考到.

MEMORY 記憶體定義區塊
{
    FLASH (RX) : origin = 0x00000000, length = 0x00040000 Flash 的定址空間從 0 開始, 長度為 256 K, 可以讀取執行, 不能寫入
    SRAM (RWX) : origin = 0x20000000, length = 0x00008000 SRAM 的定址空間從 0x20000000 開始, 長度為 32K, 可以讀取執行寫入
}

SECTIONS 記憶體子區塊內容定義
{

中斷向量表放在開頭的地方, 其他子區塊循序堆放
    .intvecs:   > 0x00000000
    .text   :   > FLASH
    .const  :   > FLASH
    .cinit  :   > FLASH
    .pinit  :   > FLASH
    .init_array : > FLASH

中斷向量表放在開頭的地方, 其他子區塊循序堆放

    .vtable :   > 0x20000000
    .data   :   > SRAM
    .bss    :   > SRAM
    .sysmem :   > SRAM
    .stack  :   > SRAM
}

堆疊位址在 SRAM 的最後面, 長度為 512 bytes

__STACK_TOP = __stack + 512;

必需 check in.

startup_ccs.c

實務上, 我們一定也會定義一個中斷向量表, 如同 Linker Command file 內所引用到的, --retain=g_pfnVectors, 這個 g_pfnVectors 就是中斷向量表. 它的內容是各種中斷發生的時候, 所對應到的中斷處理函式.

這個檔案中, 通常也會包含一些預設的 中斷處理函式.

必需 check in.