《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 在PSoC上實現I2C Bootloader
在PSoC上實現I2C Bootloader
摘要: PSoC是賽普拉斯半導體生產的一種基于MCU的可編程片上系統,它集成了大量的可重新配置的數字/模擬模塊來完成用戶訂制的數字/模擬功能。
關鍵詞: PSoC I2C Bootloader
Abstract:
Key words :

  I2C ISSP方式

  PSoC是賽普拉斯半導體生產的一種基于MCU的可編程片上系統,它集成了大量的可重新配置的數字/模擬模塊來完成用戶訂制的數字/模擬功能。

圖1ISSP編程流程圖


  PSoC器件可以基于I2C協議實現在系統中串行編程(ISSP),Power-On模式下通過SDA/SCL和VDD/GND就能夠編程整個代碼空間,Reset模式下則是使用SDA/SCL和XRES/GND編程。在很多PSoC CapSense觸摸按鍵應用中,如果改變了機械布局因而需要重新定義按鍵引腳,或者需要賦予新的按鍵觸發行為,主機端通過集成ISSP協議,可以在需要的時候下載新的.hex代碼到PSoC端,實現代碼的現場快速升級。

圖2<a class=Bootloader存儲方式框圖" border="0" height="552" hspace="0" src="http://files.chinaaet.com/images/20100816/5f4d30b1-283b-4cf3-95d1-6b91e47570aa.jpg" width="366" />


  圖1是ISSP編程流程圖,首先使PSoC進入編程模式,校驗其內部的Solicon ID,保證是對正確的PSoC編程,對PSoC內部的Flash塊(64字節)逐一擦除/編程,并讀出Flash內容進行比較;ISSP隨后編程用戶自定義的Flash塊保護模式,每個Flash塊可以被指定為W - 寫保護 / R - 讀保護 / U - 不保護 / F - 工廠更新;最后,每個Flash塊的校驗和被讀出并計算出全部Flash空間的總校驗和,如果與.hex文件中的總校驗和一致,代碼已經被成功升級。

  I2C Bootloader方式

  用戶也可以使用標準的I2C系統接口,通過I2C Bootloader(I2C引導加載器)方式更新PSoC器件內的用戶代碼。從圖2可以看出,整個Flash空間由紅色的不可編程的Bootloader區(包括中斷向量、重啟動向量和Bootloader代碼),灰色的可以現場編程的用戶應用程序區(包括應用程序中斷向量、Relocatable起始地址、用戶代碼和Bootloader API),以及黃色的Bootloader校驗和區組成。PSoC復位時,Bootloader接管程序控制權,它會計算和校驗用戶代碼的校驗和,僅當匹配時才轉到用戶代碼的首地址,開始運行用戶代碼。與ISSP方式不同,I2C Bootloader方式僅更新可以現場編程的用戶代碼區,Flash空間的其他區用于此方式的控制和校驗。

圖3I2C Bootloader方式頭部下載數據


  I2C Bootloader方式在數據傳輸時分三種命令格式,FF38是進入Bootloader命令,FF39是寫Flash塊命令,FF3B是退出Bootloader命令。圖3是I2C Bootloader方式傳輸的頭部下載數據,圖4則是成功下載的最后數據。

圖4I2C Bootloader方式成功下載的最后數據


  Bootloader方式工作時,需要更新的PSoC器件做為一個I2C Slave。圖3中,第一行數據傳輸將進入Bootloader方式,它由0x70 - Slave 7bit地址0x38的寫地址,需要忽略的兩個前綴字節380a (Slave 7bit地址和后續字節長度),FF38命令和8個字節的Bootloader key組成。所有的Bootloader命令都必須包含正確的Bootloader key,否則將被Slave器件忽略。第二行由71 - Slave 7bit地址0x38的讀地址和狀態響應字節0x20組成,狀態響應字節的其他值標識各種出錯狀態 - 02/Image verify error, 04/Flash checksum error, 08/Flash protection error, 10/Comm checksum error, 40/Invalid bootloader key, 80/Invalid command error.

圖5BootLdrI2C用戶模塊參數設置


  寫Flash塊命令傳輸了絕大部分數據量,除了最后一個塊以外,其他都有相同的格式。圖3中,寫Flash塊命令包含0x70, 需要忽略的兩個前綴字節3810 (Slave 7bit地址和后續字節長度),FF39命令, Bootloader key,Flash塊的塊號,64字節數據,0x18 - 64字節數據的校驗和,0x86 - 此傳輸78字節的校驗和(包括FF, 39, Bootloader key, 塊號, 64字節數據, 0x18)。僅在以上數據傳輸完后需要傳輸讀地址0x71,并讀出正確的狀態響應字節0x20.

圖6BootLdrI2C用戶模塊提供的BootLoaderTools


  寫Flash最后塊命令包含了一些特殊信息,參見圖4,(0d, d4) 是隨后直到(85, f4)的字節校驗和,(08,80)是圖2灰色用戶代碼區中可重定位中斷矢量表的地址,(12,00)是圖2灰色用戶代碼區中用戶代碼空間的開始地址,(3f,80)則是用戶代碼結束塊的地址,(00,b7)是用戶代碼占用的塊數量,(85,f4)是Bootloader計算的用戶代碼檢驗和,0xb5是以上64字節數據的檢驗和,0xbd是此傳輸78字節的校驗和。

  通過PSoC Designer的用戶模塊實現I2C Bootloader方式   

       PSoC Designer是功能全面的基于圖形用戶接口(GUI)的PSoC軟件開發環境,它的用戶模塊可通過配置PSoC器件內部資源創建Timer、PWM、ADC/DAC,I2C等多種有用功能。一個用戶模塊包括硬件配置數據、啟動代碼、中斷服務例程(可選)以及應用編程接口(API),這些API可對用戶模塊的各個方面進行即時控制。用戶使用PSoC Designer中的BootLdrI2C用戶模塊可以很方便的實現啟動時的引導載入(Bootloader)。

  用戶先在項目中添加BootLdrI2C用戶模塊,然后選擇“I2C for Bootloader Only”或“Full I2C API Support with Bootloader”;之后設置圖五中的用戶模塊參數,這些參數定義了I2C的引腳和通信速率,Bootloader的I2C地址,用于其他I2C操作的地址,以及圖2中各個存儲區的參數。用戶隨后可以通過圖6提供的“Boot Loader Tools”設置中斷向量和重啟動向量,編譯項目后生成應用程序校驗和,以及從hex 項目輸出文件中生成一個可以升級PSoC器件的dld 下載文件。
 

 

  其它需要設置的包括在菜單Project -> Settings -> Linker中,設置Relocatable起始地址,在flashsecurity.txt中指定Flash塊的訪問屬性——可以現場編程的區域需要設置為可寫操作。

  在PSoC器件上加入I2C Bootloader功能后,我們還可以通過Cypress提供的I2C-USB Bridge工具通過PC下載更新代碼到PSoC器件來驗證以上設計。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 中文字幕成人网 | 日本天堂网在线观看 | 男人天堂日韩 | 亚洲一区二区三区视频 | 毛片免费在线观看网址 | 久久经典免费视频 | 久久99精品久久久久久秒播 | 91青青国产在线观看免费 | 国产精品制服 | 亚洲国产成人久久一区久久 | 欧美18毛片免费看 | 免费一区二区三区久久 | 国产成人久久综合热 | 一级毛片a免费播放王色 | 国内精品久久久久久久久蜜桃 | 国产成人毛片精品不卡在线 | 精品国产日韩亚洲一区在线 | 日韩欧美一区二区精品久久 | 久草免费在线色站 | 久久福利青草精品资源 | 国产伦精品一区三区视频 | 日韩 欧美 自拍 | 京野结衣免费一区二区 | 亚洲欧美高清在线 | 精品国产午夜肉伦伦影院 | 欧美亚洲免费久久久 | 久久久精品成人免费看 | 欧美日韩一区二区三区在线观看 | 国产八区| 偷拍第1页| 国产精品久久久久久久网站 | 欧美一级大片免费观看 | 在线观看亚洲精品专区 | 成人国产一区 | 国产农村一二三区 | 久久精品亚洲一区二区 | 久久91精品国产91久久跳舞 | 51久久夜色精品国产 | 久久九九色 | 美女美女大片黄a大片 | 黄视频在线免费看 |