Simplicity Studio通过makefile.targets实现post-build

在开发产品的过程中,对于生成firmware文件通常会加入一些checksum或者flag,避免用户更新了错误的文件导致无法开机等严重后果。

有时是编写一个图形界面的程序,然后手动运行修改firmware文件,但是这样做比较繁琐,每次测试时都需要手动操作一次,其实很多编译工具都支持post-build的功能,可以在build之后自动执行一些命令来达到自动添加checksum和flag的目的。

现在来讲一下Silicon Simplicity Studio post-build的用法。

原本在Simplicity Studio的图像设备界面里是有post-build选项的,Project的Properties-> C/C++ Build-> Build Steps-> Post-build steps Command,Silicon的官方网站上介绍了些功能:Adding a post build step in Simplicity IDE

但是此功能有个问题,它是在编译出*.axf后就执行的,然后才生成bin和hex文件,想要针对bin或者hew文件做些文章很明显从先后顺序上看不合理,于是在官网上看到这个帖子:Post-build steps,在工程根目录添加makefile.targets的方式可以解决此问题,实践后有效。

以下是我的makefile.targets文件内容,针对链接中的范例加入了环境变量判断工程名字和路径等内容。

NewFileName=FW-FLAG.bin
CurFolder=$(notdir $(CURDIR))
ProjectPath=$(subst /$(CurFolder),,$(CURDIR))
Projectname=$(notdir $(ProjectPath))
ProductName=$(shell cat $(ProjectPath)/Product_Name.inc)
all: $(Projectname).axf post-build
.NOTPARALLEL:
 
post-build:
	-../AddIdentify "$(CURDIR)/$(Projectname).bin" "$(NewFileName)" $(ProductName)

  • NewFileName:想要生成带checksum和flag的新文件名。
  • CurFolder:当前文件夹名字,通过notdir去掉当前路径中的,GNU ARM v4.8.3 - Debug。
  • ProjectPath:工程路径,通过当前路径中去掉编译路径来得到。
  • Projectname:工程名,通过去掉路径得到,
  • ProductName:自定义内容,可以通过从文件中读取,比如我的文件中写的是Product-BrightWaters
  • all行,默认情况下生成的axf文件为项目名.axf。
  • Post-build:想执行的命令,此处通过自己编写的AddIdentify.exe的控制台程序来给bin文件添加checksum和flag

文件中各变量的值有些繁琐,原本是想直接使用ProjName这样的变量,但是无法使用,可能是编译过程中IDE没有把相应变量传递给makefile.targets文件吧。

下边是我的AddIdentify示例程序:

int main(int argc, char* argv[])
{
    printf("\n************************\n  Add identify to image\n");
    nError = 0;
    printf("argc = %d\n",argc);
    for(int i = 0; i < argc; i++)
    {
        printf("argv[%d]: %s\n",i,argv[i]);
    }
	printf("-->Output: %s\n",szNewFile);
    return 0;
}

可以通过printf将运行中的内容传递给Simplicity Studio显示。

编译结果:

main函数的返回值会被Simplicity Studio识别为错误的个数。

根据自己的需要修改makefile.targets和AddIdentify,编译后直接生成所需要的文件,相当方便,有兴趣的就尝试一下吧。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按照以下步骤来安装Simplicity Studio: 1. 首先,您需要从官方网站下载Simplicity Studio的安装包。您可以在以下链接找到官方安装包下载链接:\[1\] 2. 下载完成后,双击安装包以将.iso映像挂载为驱动器。 3. 在驱动器中找到并双击setup.exe文件以启动安装程序。 4. 当Simplicity Studio安装程序首次启动时,会显示一个许可协议对话框。请阅读并接受协议条款,然后点击下一步。 5. 在登录之前,您需要同意体验跟踪。您可以稍后在SSv5 Preferences >> Simplicity Studio >> User Experience中更改状态。点击下一步。 6. 安装设备检查器时,选择"Yes"。 7. 如果您选择了多个具有不同软件兼容性的设备,Simplicity Studio将下载与任何设备兼容的软件包。点击下一步。 8. 接下来,您将面临两个安装选项:Auto和Advanced。Auto选项会自动下载与您连接的硬件兼容并且您根据登录名拥有权限的所有软件包。Advanced选项允许您选择要安装的软件包。您可以根据自己的需求选择其中之一。 这样,您就可以按照上述步骤成功安装Simplicity Studio了。祝您使用愉快! #### 引用[.reference_title] - *1* *2* *3* [Silicon Zigbee3.0 EmberZNet入门教程0——安装SSv5(Simplicity Studio v5)IDE软件](https://blog.csdn.net/u011525592/article/details/119755401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值