DAPLINK编译使用python2还是python3

在DAPLINK进行源码编译的时候,需要依赖python的环境,来执行一些工具脚本。那么问题就来了,马上python2支持就要到期了,到底我使用2还是3?

如果你还不清楚daplink的编译流程可以查看我之前的文章:https://www.eemaker.com/daplink-yuanmabianyi.html

但是需要强调的是之前的编译是基于python2版本的。所以为了顺应时代潮流的发展我们也对不同版本的DAPLINK源码可否使用python3进行的测试。

截至到目前,ARM官方发布的最新版本固件为0254版本。但是我们却更建议用户使用0253版本来作为你二次开发编译的版本。下面是我们针对最新的三个版本进行了测试:

是否支持python2是否支持python3
0252版本
0253版本
0254版本 编译会出错

以上信息是笔者根据实际测试的结果。最新版本0254在使用python3编译的时候会有错误。0252和0253就可以随意使用python2或者python3都可以。所以我们建议如果不是特别依赖0254的新功能就使用0253版本代码来做编译开发。

那么如果就想使用python3环境来作为0254编译开发是否不可行,实际上也可以解决。我们先看下编译时候在MDK信息框中的错误提示:

File “……\tools\post_build_script.py”, line 144
pack_flash_algo.symbols[‘EraseChip’] + blob_header_size + flash_blob_entry if pack_flash_algo.symbols[‘EraseChip’] != 0xffffffffL else 0,

如上所示,实际上这个错误是源于python3和python2中有些语法不兼容导致的,那么我们就可以修复它,找到post_build_script.py 这个文件,并把里面所有的0xffffffffL结尾的‘L’去掉。

然后重新编译你会发现还有一个错误,这个错误修复办法为:修改 .\tools\flash_algo.py 文件中 import StringIO为from io import StringIO

经过以上两个步骤,0254版本的源码也可以使用python3编译成功。但是修改过的已经不能再基于python2进行编译。所以我宁愿使用0253的软件版本,想用哪个用哪个。


2021年4月5日更新

到目前为止,从github上拉取最新的源码可完全使用python3编译了,所以大家也可以不用纠结了,python2已经淘汰了,之后都默认安装python3就可以了。

您可能还喜欢...