Butterfli

1. 概述

Butterfli 是思澈公司自研工具, 主要功能是Solution的编译、烧录,以及存储器擦除读取等,该工具存放在 固件包\solution\tools\sifli_develop\Butterfli 路径下。

2. 环境配置

Butterfli 免安装,可直接运行于WINDOWS系统,WINXP/WIN7/WIN10/WIN11…

Butterfli 工具使用前需要先配置好编译环境,请参考 开发环境配置

3. 功能介绍

../_images/Butterfli_002.png

工具界面如图所示,主要包括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 0

  • Solution 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版本会自动拷贝该配置文件。