由于 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