Butterfli¶
1. 概述¶
Butterfli 是思澈公司自研工具, 主要功能是Solution的编译、烧录,以及存储器擦除读取等,该工具存放在 固件包\solution\tools\sifli_develop\Butterfli 路径下。
2. 环境配置¶
Butterfli 免安装,可直接运行于WINDOWS系统,WINXP/WIN7/WIN10/WIN11…
Butterfli 工具使用前需要先配置好编译环境,请参考 开发环境配置。
3. 功能介绍¶
工具界面如图所示,主要包括4个区域:功能控制区、项目参数设置区、功能执行信息显示区、功能执行进度显示区。
3.1 功能控制区¶
停止
结束当前的操作,包括编译和下载等,结束操作会逐步退出,有些场景不会立即退出。刷新
重新扫描多语言、字体、动态应用、铃声等放置在指定路径的资源,更新到工具对应项。删多余项
在对多语言处理的时候,是否清除掉多语言表格中多余的项(工程中未使用的字串),勾选表示需要清除,不勾选表示不清除。eZIP 清空
在做图片资源的eZIP转换时,默认会根据原始图片是否增删修改来判断是否重做eZIP转化,如果勾选该项,则会忽略其他条件直接重新做eZIP转换,不勾选则按照文件修改来判决。eZIP转换会耗费较长时间,如无特殊需要建议不勾选该项。图片过滤
对于放入文件系统的图片资源,由于转换时无法识别哪些是项目需要的,需要在编译完成后再做一次过滤,避免不需要的文件占用空间。工程配置
勾选该项会在工程编译前更新工程配置,比如 kconfig 中一些新添的项目或者修改的默认选择等,不勾选则工具不会主动去更新,需要用户自己打开 menuconfig 去更新,建议勾选该项。表盘环境
表盘等动态应用编译时是否实时更新头文件路径及编译参数等, 需要耗时20-40秒, 默认会勾选,如果对编译时间比较敏感的用户建议使用时不勾选, 如发现表盘编译异常再勾选,注意每次打开软件该项都是默认勾选。搜索列表
多语言通过工程文件列表搜索时, 是否更新工程文件列表, 需要耗时20-40秒, 默认会勾选,如果对编译时间比较敏感的用户建议使用时不选择, 如发现HCPU因多语言编译异常再打开,注意每次打开软件该项都是默认勾选。编译
固件项目的编译,编译该面板中所有选择的项目。编译子项
这些选项是编译时的处理内容,每项后面按钮可以单独执行,部分项目会基于平台类型设定是否可用。eZIP
图片资源做eZIP处理,根据配置直接放入文件系统或随HCPU工程编译。语言
内置及外置多语言处理,内置随HCPU工程编译,外置放入文件系统。字体
处理选中的字体,根据配置直接放入文件系统或随HCPU工程编译。RING
铃声资源处理,根据配置直接放入文件系统或随HCPU工程编译。
ACPU
ACPU工程编译,目前只有LB58X芯片会用。OTA
OTA Manager工程编译。FTABLE
FTABLE工程编译。BOOT
二级bootloader工程编译。BT_HOST
BT host工程编译。LCPU
LCPU工程编译。HCPU
HCPU工程编译。T应用
用思澈表盘开发工具开发的表盘等动态应用。C应用
用C代码开发的表盘/APP/AOD等动态应用。JS应用
用 JS 开发的表盘/APP/AOD等动态应用。PY应用
用 Micro Python 开发的表盘/APP/AOD等动态应用。
simulator项目编译
编译该面板中所有选择的项目,大部分项目同固件编译时相同,有三个不同的子项:SIM更新
重新生成Simulator工程。SIM编译
Simulator工程编译。SIM打开
打开Simulator工程,方便调试时使用。
下载
下载选中的IMG文件到目标板,根据实际环境选择串口或者JLink以及合适的速率。类型
选择用串口或者JLink作为下载通道。端口
串口号或者JLink SN。速率
串口波特率(3M或6M,需要串口板支持)或JLink速率(推荐用4000或5000)。压缩
使用串口下载时,为提高下载速率,会对IMG做压缩下载,部分平台支持。查重
下载前检查该地址内容是否同下载文件相同,相同则不下载。校验
下载后是否做校验来保证下载内容的正确性。下载前
使用JLink下载时,是否先发送reset、hold等控制命令。下载后
下载完成是否重启运行。
FLASH 读写
主要用于板子flash/emmc/sd的读取和擦除,方便调试使用。FLASH全擦除会擦除片内和片外FLASH。
指定范围读取时,弹出的对话框如果选择了保存文件,则会将读出的数据保存在文件中,否则会在工具界面打印出来,在界面打印的场景建议长度不要超过1KB。
NAND flash时,有坏块保护区(最后1/32的size作为坏块保护区),如果选择WITH BBM则坏块保护策略起效,此种场景无法访问坏块保护区内容;NO BBM则可以访问到坏块保护区内容。
全清
工程/文件系统clean,对于工程主要是执行SCONS-C操作,清除编译生成的.o文件,文件系统clean,是将文件系统内容清空。点击全清则会执行选项中所有内容。文件系统打包
所有放到文件系统的资源会重新拷贝并生成文件系统镜像文件。制作
不同版本固件包的资源差分包,用于做资源OTA升级,主要用于 NAND/EMMC外部存储方案。图片资源分辨率转换
将大分辨率图片资源转换成指定的小分辨率图片资源,该功能需要安装第三方工具,主要是思澈内部调试使用,不建议其他客户使用。
3.2 参数配置区¶
参数配置区域主要包括4个部分,环境设置、编译信息,IMG备份、下载信息,此部分需要注意淡绿色背景的项目有 右键菜单 功能。
环境设置
Solution根目录
整个项目的第一级路径,一些工具及工程配置基于该目录取相对路径。一般工具启动时会根据自身的相对路径确认根目录,相对路径的配置在工具configure\MainCfg.ini文件的[COM_PARA]-> RELATIVE_PATH配置项。SDK代码目录
SDK代码的目录,一般是在项目目录下的sdk文件夹,如路径有改变请根据环境设置该项参数。第三方工具
通过右键菜单打开配置页面,根据提示配置相应工具的路径,该设置只需要配置一次即可,设置后需要重新启动Butterfli工具。参考第2章环境配置描述,该项展开可以看到工具当前使用的第三方工具路径。
编译信息
产品类型选择
Solution 2.0 版本有该项参数,按照产品类型做一下筛选,方便项目管理,有智能手表、码表、打印机等产品类型。编译分组选择
当项目较多或者同一个项目有不同屏幕配置时,一般会保存各自的参数,使用时可以在下拉菜单中选择切换配置。编译器
工具支持 Keil 和 GCC 编译器,根据需要选择。编译线程数 编译时并行调用的线程数,最大16个,默认数值为8。
设备类型
设备类型主要是确认芯片配型以及存储类型,主要用于烧录驱动的选择以及确认一些设置项是否可用。用户脚本
为方便用户扩展操作,添加编译前后调用脚本的接口,比如有用户在编译前需要拷贝一些文件或准备一些环境等,用户脚本可以是可执行文件或批处理文件。
ROOT预留空间
NAND方案root分区的资源文件更新时,可能会因为空间不够导致失败,此配置强制提醒预留足够的空间在root分区,root分区打包时如果剩余空间小于该值会报错。NAND方案使用OTAM工程
默认的NAND方案是不需要ota manager工程的,如客户特殊需求需要使用该工程做一些特殊处理,则勾选该项会编译ota manager工程。FAT打包保留最小BIN
SD/EMMC FAT文件系统打包时,如果分区超过128MB,选择该项则只生成实际预置文件占用大小BIN,否者生成分区大小BIN。此功能需要有配套的打包工具,当前版本暂时不要使用。不制作PAN/SD升级包
工程编译后,默认会制作用于PAN/SD的固件升级包,如果想节省时间可以不制作。工程根目录
选择project的目录,在该路径下,会有HCPU/LCPU/OTA/SIMULATOR/动态表盘/外置多语言等工程目录,该项目的参数配置文件PrjCfg.ini放在该路径下。工程模板路径
为方便工程建立维护,通用配置文件放到模板中,工程编译时会从模板中拷贝文件覆盖过来。各工程路径
项目中涉及到的工程路径,放在项目路径下的不可配置,其他工程路径根据实际环境选择。配置文件
各工程中的关键配置文件,包括sct文件和msp文件,这些配置按照发布版本中配置即可,需要关注的是flash分区文件的设置方法,后面有介绍。eZIP资源
Solution 2.0 有该项参数,配置图片资源路径,保存在项目路径下的PrjCfg.ini配置文件中;(Solution1.x这些参数配置在configure\CompileBurn.ini文件中)。字体
该大项配置字体路径,选择项目使用的字体库,并且可以在右键菜单中编辑字体库的顺序。多语言
该大项配置多语言excel表文件,选择搜索方式(目前建议使用“工程文件搜索”)。对于印地语,工具需要做特殊处理,所以如果有印地语需要配置印地语名称,即多语言excel表头中印地语名称,如Hi_IN(हिंदी)则填写括号前面部分“Hi_IN”。多语言选择内置则会生成C文件同HCPU工程一起编译,外置则会生成bin文件放在文件系统中,不选择则不会生成该语言文件。MUSIC
mp3音频文件,直接放置在文件系统中供方案使用。RING
铃声文件,如果.config中配置了CONFIG_SOLUTION_RING_BUILT_IN,则会生成c文件随HCPU工程编译,否则放置在文件系统中供方案使用。预置文件 方便用户将一些文件放置到文件系统的指定路径供方案使用,后面有介绍使用方法。
C/JS/PYTHON/表盘工具等格式动态应用
选择需要编译的动态表盘、APP、AOD等。不选择:不编译该表盘;非预置:只编译表盘,不随固件下载到板子中;预置(dyn):随固件下载到板子中,可被重置;预置(built_in):随固件下载到板子中,不可被重置。用户图片
方便用户将一些特殊用途图片做eZIP转换并放置到文件系统的指定路径供方案使用,后面有介绍使用方法。
IMG备份
固定路径保存
所有项目可以设置一个统一的保存路径,不选择该项则项目使用自己设置保存路径。IMG保存路径
编译后生成的bin/axf/map文件保存路径,方便版本备份,清空内容时会采用默认的路径保存。从MAP文件读取地址
勾选该项,则会在编译后,下载前都会从map文件中获取各个IMG的下载地址,不勾选则不会改变列表中显示的地址。MAP文件路径
HCPU工程编译的map文件路径,用于获取下载地址。
下载信息
各编译文件的信息
注意下载时只会下载勾选的文件,可以用右键菜单下载指定的文件。MAC/SN/BLE NAME/BT NAME/ALIPAY 三元组
这些信息是Solution可能会使用的信息,根据需要选择,在点击下载时是会下载到板子中。
3.3 信息显示区¶
该区域显示执行功能是的输出信息,每一项执行会用颜色标志成功或者失败。注意该区域有右键菜单方便进一步操作:复制、保存、清除、停止刷新、停止接收。
3.4 进度显示区¶
工具下方显示功能执行的耗时、百分比和进度条,下载的时候百分比和进度条是精确值,编译的时候是预估值,可能不精确。
4. 使用方法¶
4.1 固件编译¶
对于一个没有编译过的项目,第一次建议使用一键编译功能,勾选 一键编译 面板中所有可以勾选的项目,先做一次完整编译。
如果已经做过全项目编译后,在开发过程中为节约编译时间,可以根据修改的内容选择编译项目,具体修改内容对应操作建议如下:
特殊控制项和编译环境更新项按照 3.1节 描述的建议进行勾选。
普通代码修改,只需要编译涉及到的工程即可。
图片资源配有更新时,OTA工程图片更新(3.2节->eZIP资源->OTA工程图片 路径下的图片),只需要编译OTA 工程;其他配置的路径下图片改变时,首先需要做 eZIP,如果HCPU工程menuconfig中未配置
Solution resource using nand或者配置了Solution resource built_in则需要编译HCPU工程。字体文件内容或者选择有变化时,首先要做字体编译,如果HCPU工程menuconfig中未配置
Solution resource using nand或者配置了Solution resource built_in,则需要编译HCPU工程。多语言选择项目变化/excel表变化/代码中字符变化等,需要执行多语言编译,并执行HCPU工程编译。
动态C应用/表盘/AOD/TLV/POPUP等选择变化或内部资源代码更新时,需要执行C应用编译。
动态JS应用/表盘/AOD/TLV/POPUP等选择变化或内部资源代码更新时,需要执行JS应用编译。
MUSIC / RING / VIDEO / 预置文件的选择或资源更新时,执行该选项对应的处理。
FLASH 分区配置表更新时,自己不好确认影响范围的最好选中全部项目做编译。
4.2 simulator编译¶
Simulator工程直接用vs编译比较慢,为提高效率可以用scons命令编译,如果 项目模版\project\simulator\env_config 文件存在则说明支持命令行编译,否则应该打开Simulator的工程文件直接用vs编译,编译操作同固件编译类似,编译完成后打开工程里面的project.sln文件即可运行调试。
4.3 固件下载¶
在 一键下载 面板选择下载设备(UART/JLink)及对应的参数,其他配置按照工具默认即可。执行过一键编译后,在参数设置区域->下载信息项中会自动列出需要下载的文件及下载地址等信息,默认是全部勾选的。下载时可以选择全部下载,也可以勾选需要下载的文件,或者在对应文件通过右键菜单来下载文件。
备注
注意使用串口下载时芯片支持的最大波特率是6000000,选择的波特率要确保使用的USB转串口芯片支持;
55X/58X平台使用串口下载时必须要进入boot模式(即将boot mode管脚拉高),每次下载前需要重启一次板子;
52X/56X平台使用串口下载一般不需要进入boot模式,除非出现必现的下载失败时需要进入boot模式。
4.4 FLASH读写¶
使用Butterfli工具可以对思澈平台的FLASH/EMMC进行读取和擦除。
指定范围读取和指定范围擦除时,会根据填写的地址和长度进行操作;
指定范围读取时会弹出文件选择框来填写读取数据的保存文件,如果不填写则会显示在工具界面上,显示在工具界面上建议长度不要超过1KB;
FLASH全擦除会根据平台类型对flash内容进行擦除,不会擦除flash OTP内容以及NAND flash的坏块保护区数据。
4.5 命令行编译¶
Butterfli.exe支持命令行调用,格式如下:
Solution 1.0版本(工具表头显示为 SIFLI Butterfli S1)
Butterfli.exe --group (group_name) --binpath (img_save_path) --logpath (log_full_name) --hide 0Solution 2.0版本(工具表头显示为 SIFLI Butterfli S2)
Butterfli.exe --group2 (group_type group_name) --binpath (img_save_path) --logpath (log_full_name) --hide 0
参数说明:
group_type:编译分组类型group_name:编译分组名称img save path:编译后 img文件存放路径img_save_path:编译log保存全路径+log文件名hide:为1时表示隐藏工具界面,为0或者无该参数时显示工具界面
备注
命令行调用时使用配置文件为工具路径下configure\CompileBurnJenkins.ini,可以将configure\CompileBurnUser.ini复制一份,重命名为CompileBurnJenkins.ini,Butterfli工具4.6.2版本会自动拷贝该配置文件。