由於 CDK 編譯太過緩慢,而且 makefile 嵌套過於繁瑣
因此本人簡單整理了一下 SDK,使用 CMake 重新編寫了項目的構建流程,
最終形成了一個項目模板:https://github.com/github0null/w801_cmake_template
有需要的童鞋可以使用
引用自 Github倉庫 README
HLK-W801 Vscode 項目模板,使用 VSCode + CMake + Ninja
構建
本處使用的開發板為 HLK-W801-KIT-V1.1
注意:該倉庫內的 SDK 有少量改動,可能與官方的有出入
少量改動:
- 移除了 BT 模塊 (只保留 BLE),AT 模塊,以及默認的 demo 程序的耦合
- 修複編譯過程中的大部分 Warning,目前還剩 5 個左右
安裝 CMake v3.20+ 以及 Ninja
cmake --help
和 ninja --help
檢查是否已安裝完成克隆源碼,在 VSCode 中打開工程文件夾:
git submodule init
和 git submodule update
,拉取子模塊(此步驟要從 github 克隆倉庫,請確保網絡通暢)安裝 csky 編譯器(系統中已安裝則可忽略該步驟):
sdk/tools/w800/toolchain/
csky-elfabiv2-tools-mingw-minilibc-20210423.7z
編譯器解壓,將解壓後的目錄移動到你的磁盤其他位置上xxx\xx\csky-elfabiv2-tools-mingw-minilibc-20210423\bin
設置到環境變量 Path
中csky-elfabiv2-gcc -v
檢查編譯器是否已安裝CMake Tools
Configure All Projects
生成配置w801.fls
為構建目標
build
圖標啟動構建bin
文件夾,固件將存放在其中
ctrl+shift+B
打開可用任務,選擇 flash (select serialport)
回車,之後輸入串口名稱,回車啟動燒錄
本例程中,默認開啟固件加密以及數字簽名,上電後將校驗固件簽名
項目相關配置可以在項目根目錄下的 w800sdk.conf
中進行更改
默認配置如下:
########################################
# WinnerMicro W800 Configuration
########################################
##########################
# Firmware Configuration
##########################
#
# Flash Map:
# Bootloader[0x08000000-0x08010000]: 64 KB
# OTA_REGION[0x08010000-0x080D0000]: 768 KB
# IMG_REGION[0x080D0000-0x08200000]: Image Region, MAX 0x130000 Bytes
# - APP_IMG[0x080D0000-??????????]: App Code, Size: 1MB + 128KB (End: 0x081F0400)
# - USR_DAT[0x081F1000-0x081FB000]: User Data (Max Size: 40KB) (End: 0x081FB000)
# SYSTEM_DAT[0x081FB000-0x08200000]: System parameter defined in wm_internal_fls.c
#
CONFIG_W800_IMAGE_OTA_ADDR = 0x08010000
CONFIG_W800_IMAGE_HEADER_ADDR = 0x080D0000
CONFIG_W800_IMAGE_APP_ADDR = 0x080D0400
CONFIG_W800_IMAGE_APP_SIZE = 0x00120000
CONFIG_W800_IMAGE_USR_ADDR = 0x081F1000
CONFIG_W800_IMAGE_END_ADDR = 0x081FB000
# External P-SRAM Max Size
CONFIG_W800_EXT_PSRAM_SIZE = 0x00800000
#
# Firmware Security
#
# 固件類型
# 0x0:SECBOOT;
# 0x1:User Image
# 0xE:ft 測試程序
# 其它值:用戶自定義
CONFIG_W800_IMAGE_TYPE = 1
# 固件簽名
# 0:IMAGE 不包含簽名部分;
# 1:IMAGE 包含 128bytes 簽名
CONFIG_W800_IMAGE_SIGN = 1
# 固件簽名所用RSA密鑰對路徑(為空則使用默認密鑰)
CONFIG_W800_IMAGE_SIGN_PRIKEY_PATH = ""
CONFIG_W800_IMAGE_SIGN_PUBKEY_PATH = ""
# 固件加密
# 是否啟用固件加密
CONFIG_W800_CODE_ENCRYPT = 1
# 芯片內置 8 組 RSA 私鑰用於解密固件加密的秘鑰,用戶可任選一組使用,取值範圍 0~7(目前只能選 0)
CONFIG_W800_PRIKEY_SEL = 0
# 固件加密的 key (16 字節 ascii 碼值)
CONFIG_W800_CODE_ENCRYPT_KEY = "ffffffff62831853"
#########################
# Compile Configuration
#########################
CONFIG_W800_FIRMWARE_DEBUG = y
#####################
# Components Config
#####################
CONFIG_USER_MAIN_TASK_STACK_SIZE = 4096