
原創:ICCCCC
前言:
一、開箱
二、在線仿真測試
測試環境:MDK v5.30
測試芯片:STM32F429BIT6
建立測試工程項目過程略過,直接進入設置,仿真設備選擇CMSIS-DAP,如下所示:
點擊Settings進行設置,如下所示:
Pack選項,可以使能或者不使能,如果異常就切換。
都設置好,回到主界面,點擊下載,如下所示:
下載成功。點擊主界面Debug按鈕,進入仿真狀態,如下所示:
全速運行,一切正常,點擊暫停,可以正常查看各種變量數據等。
測試環境:MDK v5.30
測試芯片:STM32H743XIH6
測試組件:EventRecorder
Debug配置上差不多,需要注意的是Trace選項里的Clock要跟目標單片機時鐘一致,如下所示:
配置好后進入仿真狀態,全速運行,時間測試及printf正常顯示,代碼執行時間準確,10MHz的帶寬完全滿足,效果如下所示:
在線仿真完結。
三、UID加密操作
UID 加密設置是創芯工坊研發的目前市面上燒錄器在授權控制上較為強大的加密版本,不但提供了隨機的內置離線授權方法,一鍵生成動態的項目代碼,同時提供了在線授權服務器(目前市面上提供此功能的只有 Segger 的 Secure Flash)支持第三方基于創芯工坊提供的授權服務器模板自建授權服務器,支持在線非對稱授權方案,創芯工坊技術團隊提供全程技術支持,支持離線 ICWKEY ECDSA非對稱授權算法。
本次先使用<內置離線授權>,芯片使用STM32F429BIT6,配置如下:
密鑰儲存地址在芯片flash最后倒退12字節位置,密鑰長度選擇12字節,小端模式。點擊UID矩陣編碼按鈕,打開窗口如下所示:
導出源碼:導出源碼功能將用戶設置好的信息,導出為 MDK Source Code(如果用戶 IDE 為其他格式,請包含對應的源碼和頭文件即可使用),導出的源碼 Demo 如下圖所示:
主要文件就是cortex_chipid_binding.c與cortex_chipid_binding.h,本小節只講使用,不解析程序。
編譯并保存:編譯并保存功能將用戶設置好的 Power Writer 內置授權功能同步到PowerWriter 硬件,同時導出源碼供用戶使用。
其他選項請根據自己需求配置,保存項目為f429bit6uid.pkg。
準備個正常的MDK項目,復制cortex_chipid_binding.c與cortex_chipid_binding.h到項目下,打開工程,如下所示:
使用的是安富萊電子的例子,板子是V6開發板。
main.c文件加入#include "cortex_chipid_binding.h"頭文件,打開工程選項,C/C++里選擇C99模式,因為導出的代碼編寫方式是變量就近定義,默認的C89是不支持這種騷寫法,如下所示:
全項目編譯,報如下錯誤:
.\Flash\Obj\output.axf: Error: L6220E: Load region LR_IROM1 size (2097232 bytes) exceeds limit (2097152 bytes). Region contains 2087436 bytes of padding and 0 bytes of veneers (total 2087436 bytes of linker generated content).
意思是數據越界了,查看代碼發現是cortex_chipid_binding.c里的指定了一個地址,這個地址就是存放密鑰的地址,本意是告訴編譯器我要占用12字節空間,可是編譯器編譯時還在這個位置后面放了代碼,所以導致越界。
const static char mKey[UID_KEY_LENGTH] __attribute__((section(UID_KEYADDR_INNER)))
解決方法就是禁止這行代碼,把cortex_chipid_binding.h的UID_KEYADDR_PLACEHOLDER_EN宏設置為0,如下所示:
#define UID_KEYADDR_PLACEHOLDER_EN 0 //Key Store Addr In Flash Enable/Disable Placeholder
再次編譯通過,在main.c文件里加上密鑰判斷,代碼如下:
再次編譯無錯誤,加載編譯好的程序到燒錄器,如下所示:
保存項目,在線燒錄到目標單片機,如下所示:
開發板運行跑馬燈,說明密鑰校驗通過。
四、創芯工坊發布固件
這個應用是創芯工坊平臺的一大核心功能,也是一大創新。簡單來講就是為開發者和使用者提供一個平臺,開發者在平臺上發布程序,使用者購買然后燒錄程序。
這節我們來看批量離線模式,適用于大批量燒錄。
打開創芯工坊官網www.icworkshop.com,登陸賬號,進入用戶中心,如下所示:
點擊我是開發者,如下所示:
點擊程序發布,如下所示:
為了方便測試,價格選擇贈送,指定對象就是使用者賬號。
型號根據自己項目單片機來選,pkg文件是使用pw軟件打包好的文件,這里繼續使用上節打包的文件。固件密鑰是指pw打包時的密碼,一定要正確,否則無法解析文件,編程模式選擇離線。點擊確認發布即可。
使用者需要下載創芯工坊客戶端,如下所示:
安裝后登陸賬號,如下所示:
第一個既是我們剛才推送的程序,連接好PW200燒錄器,點擊下載固件,如下所示:
這里測試的芯片是STM32F429BIT6,FLASH容量為2MB,SN位置我們放在0x081FFFFC地址,占用4字節。序列號初值我們設置為0x00000001,為了方便驗證SN寫入成功與否,選項字節的讀保護設置為無保護,如下所示:
點擊執行里的全功能自動編程,操作如下所示:
現在我們來讀取0x081FFFFC地址數據,操作如下所示:
成功讀取到0x00000001,為什么是01 00 00 00?因為使用小端儲存模式。
結語:
時間有限,只測了小部分功能,不得不說power writer確實很強大,不管是燒錄安全還是燒錄速度方面,都表現非常不錯,基本滿足了工程師開發調試的所有要求。而且還支持STM32、STM8、GD32等十幾個品牌芯片。還是非常值得推薦的。