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