创建新工程及board¶
如果不需要创建新的板子,可直接跳转至创建新的工程
1. 新board创建¶
1.1 新board定义¶
当新开发板的硬件外设与旧板差异较大时,需定义独立的board目录,用于体现新板的硬件特性(如引脚配置、电源控制等)。
1.2 新board创建步骤¶
新board创建需完成目录建立和Kconfig配置两部分,确保能在menuconfig中选择并编译。
1.2.1 建立board目录¶
1.2.1.1 目录文件组成¶
完整的board目录需包含以下核心文件,各文件作用如下:
文件名 |
功能描述 |
|---|---|
|
板子初始化逻辑(如外设初始化) |
|
引脚复用(pinmux)配置 |
|
板子开机时的电源控制逻辑 |
|
板子特有的menuconfig配置项 |
|
板子编译脚本(指定编译文件与依赖) |
目录结构示例:
1.2.1.2 目录创建实操¶
建议基于SDK中已有的同芯片board目录修改(减少重复工作量),以创建eh-lb523_nor_new为例:
进入SDK的
board目录(通常路径为sdk\boards);复制同芯片的参考
board目录(如eh-lb523_nor),重命名为eh-lb523_nor_new;根据新板硬件特性,修改上述核心文件(如
bsp_pinmux.c调整引脚配置、bsp_power.c适配电源电路)。
最终目录效果:
1.3 kconfig 修改¶
sdk\customer\boards目录下Kconfig,用于配置board选项;
参考下图修改,新建board的宏:
配置包含新建的“eh-lb523_nor_new”目录下的Kconfig:
2. 新工程创建¶
新工程是指适配新的板子或软件上的特殊修改而创建单独的工程;
Solution2.0的工程分为3类:watch, mod,odometer等3类。
2.1 工程的组成¶
一个完整的工程包括:
子工程 |
作用 |
|---|---|
|
大核(HCPU) |
|
小核(LCPU) |
|
OTA 升级 |
|
PC simulator |
|
Flash 分区表管理 |
|
引导加载逻辑 |
子工程组织如下图:
一般sct/flash_map文件是需要根据工程进行修改的。其他工程一般都是使用默认文件。
2.2 工程创建¶
创建工程的大致步骤如下:
2.2.1 创建工程文件夹¶
工程目录位于:
solution\examples。目录examples根据工程类型区分3个目录:
watch:一般指智能手表类型的工程;odometer: 一般指码表类型的工程;mod:一般指模组类型的工程;
示例:创建watch(智能手表)工程eh-lb523_nor_new
进入目录
solution\examples\watch\project创建目录
eh-lb523_nor_new从同类型参考工程(如eh-lb523_nor)复制以下内容到新目录:
子工程目录:
hcpu,lcpu,ota_manager, simulater, __application_private__工程配置文件:
PrjCfg.ini;
2.2.2 修改CompilerBurnUser.ini¶
修改工具配置文件CompilerBurnUser.ini,使新工程能在 Butterfli 界面中被选择,步骤如下:
找到配置文件
该文件位于solution\tools\SiFli_develop\Butterfli\configure。修改的目的是为了Butterfli 界面中能加载出该新工程。
配置工程分组(GROUP_TYPE)
GROUP_NUM 表示工程总数;如果增加了新工程,GROUP_NUM 需要加1;
eh-lb523_nor_new 的工程类型为watch,对应的GROUP_TYPE_0;
新增工程编译配置(COMPILE_SET)
找到TYPE_0开头的COMPILE_SET,如果没有空闲,可以手动添加;
下图中在TYPE_0_COMPILE_SET_8添加配置信息,如下图;
小心
路径需要和前面创建的目录“eh-lb523_nor_new”对应
打开butterfli,可以watch下面看到设备类型为
eh-lb523_nor_new的工程;
配置完成后,重启 Butterfli,新工程会显示在工程列表中(初始可能部分选项空白,需后续配置PrjCfg.ini);
2.2.3 配置PrjCfg.ini文件¶
该文件位于solution\examples\watch\project\eh-lb523_nor_new。目的是配置工程相关的专有选项,用于Butterfli工具界面装入。
工程和配置文件PrjCfg.ini对应关系
示例1: eh_lb523_nor工程和配置文件PrjCfg.ini对应关系,如下图:
注:52x(单核) 只涉及HCPU。
示例2: em_lb566_nor工程和配置文件PrjCfg.ini对应关系,如下图:
注:56x/55x/58x 涉及到HCPU和LCPU配置;
PrjCfg.ini配置
PrjCfg.ini是工程核心配置文件,对应 Butterfli 界面的选项,需根据芯片类型(52x/56x/58x)调整路径,关键配置项如下:
FLASHCFG_PATH(flash_map的路径)
FLASHCFG_PATH=solution\framework\__template__\config\hcpu\flash_map\flash_map_52x_nor(16MB).xlsxflashmap文件,用于分配存储资源,一般会根据板子进行修改。(后面的章节有介绍)
FTABLE_PRJ(ftab_map的路径)
52x :sdk\example\flash_table\sf32lb52x; 56x :sdk\example\flash_table\sf32lb56x; 58x :sdk\example\flash_table\sf32lb58x;
BTHOST_PRJ(BT host的路径)
sdk\middleware\bluetooth_host\project\bluetooth_host;BOOTLOADER_PRJ(bootloader的路径)
52x :sdk\example\boot_loader\project\butterflmicro\ram; 56x :sdk\example\boot_loader\project\sf32lb56x;
LGENERAL_PRJ(general lcpu的路径,仅52x;其他芯片都有单独的lcpu工程)
52x :sdk\example\ble\lcpu_general\project\eh-6500;HCPU_SCT(HCPU SCT的路径)
52x :solution\framework\__template__\config\hcpu\linker_script\link_flash_52x.sct; 56x :solution\framework\__template__\config\hcpu\linker_script\link_flash_56x.sct; 58x :solution\framework\__template__\config\hcpu\linker_script\link_flash_58x.sct; 55x :solution\framework\__template__\config\hcpu\linker_script\link_flash_55x.sct;
LCPU_SCT(LCPU SCT的路径)
56x :solution\framework\__template__\config\hcpu\linker_script\link_ldpu_56x_xip.sct; 58x :solution\framework\__template__\config\hcpu\linker_script\link_ldpu_58x_xip.sct;
OTAM_SCT(ota manager SCT的路径)
solution\framework\__template__\config\ota_manager\linker_script\link_dfu.sctHCPU_MSP(HCPU MSP的路径)
52x :solution\framework\__template__\config\hcpu\msp_config\msp_config_52x.c; 56x :solution\framework\__template__\config\hcpu\msp_config\msp_config_56x.c; 58x :solution\framework\__template__\config\hcpu\msp_config\msp_config_58x.c; 55x :solution\framework\__template__\config\hcpu\msp_config\msp_config_55x.c;
PrjCfg.ini配置完成
关闭Butterfli后,再打开,就能看到空白的选项都已填充完成;
注意:52x不需要配置LCPU的sct和msp文件;
2.3 Flash 分区表(flashmap)制作¶
Flash 分区表(xlsx 文件)用于分配存储资源,编译时会自动生成flash_map.c,需重点配置以下分页:
2.3.1 分页 1:FLASH_Config¶
配置使用的 Flash/PSRAM 参数(如大小、对齐方式),示例:
2.3.2 分页 2:FLASH_Map¶
配置 Flash 分区的类型、地址、大小等,核心分区类型说明:
分区类型 |
功能描述 |
特点 |
|---|---|---|
|
生成独立 bin 文件(需烧录),用于存储代码 / 资源 |
需按 Flash 驱动要求对齐 |
|
预留分区(不生成 bin),用于运行时访问(如 NVM 数据) |
对齐方式同 |
|
挂载到文件系统(无独立分区),以文件形式存储(如配置文件) |
无需对齐 |
分区分布示例:
配置项说明:
XIP(Execute In Place):标注代码运行地址(是否在 Flash/PSRAM 中运行):
PARTITION_MACRO:为分区定义宏(便于代码调用),如HCPU_FLASH_CODE会生成以下宏:
2.4 选择合适的board¶
在 menuconfig 中选择适配的芯片和新 board,步骤如下:
打开 Butterfli,进入新工程的 menuconfig;
选择芯片型号(如SF32LB523):
选择新创建的 board(如eh-lb523_nor_new)
3. 工程编译¶
完成上述配置后,即可在 Butterfli 中编译新工程,生成可烧录的 bin 文件。

