Linux下编译海思WS63 SDK全攻略
目录
引言
准备工作
编译方法
UTF-8问题的解决
结束语
引言
一般使用海思的WS63 SDK都是在Windows进行编译,以前在我博客也介绍过。不过以我多年的经验,总会有学生的电脑因为各种原因无法编译成功,所以还需要试试Linux下编译的方法作为备份推荐给学生。我基本上是按照官方文档做的(docs/zh-CN/software/SDK开发环境搭建用户指南/WS63V100 SDK开发环境搭建 用户指南.md · HiSpark/fbb_ws63 - Gitee.com),记录了几个自己遇到的问题。
准备工作
Linux系统推荐使用Ubuntu 20.04及以上版本,Shell使用bash ,SDK使用Cmake编译(3.14.1以上),编译工具还包括Python(3.8.0以上)等。这里我使用的是华为云免费提供的开发者云电脑。海思的WS63 SDK体积较小,所以使用这个云电脑也是可以的,而且默认的云电脑的环境也是符合要求的。
安装Kconfiglib 14.1.0+,使用命令“sudo pip install kconfiglib”(需root/sudo权限安装)。
安装pycparser,使用pip install pycparser进行安装。
编译方法
使用下面的命令下载代码:
git clone https://gitee.com/HiSpark/fbb_ws63.git
在src目录下执行“python3 build.py”指令运行脚本编译,即可编译出对应的SDK程序。编译命令列表如表1所示。
表 1 build.sh参数列表
表 2 编译目标介绍
编译得到的烧录镜像在“output/ws63/fwpkg/ws63-liteos-app”目录下(如表3所示)。
表 3 烧录镜像
注:编译得到的中间文件在“output/ws63/acore/ws63-liteos-app”目录下。
UTF-8问题的解决
按照上述步骤编译的时候,程序快要编译结束时遇到一个问题:
../../../../../output/ws63/acore/boot_bin/ws63-liteos-mfg.bin generated successfully!!![100%] Built target WS63_GENERAT_SIGNBIN[100%] Built target GENERAT_ASM[100%] Built target GENERAT_LST[100%] MEM_LIMIT[100%] Built target GENERAT_MEM_LIMITTraceback (most recent call last):File "/home/developer/fbb_ws63/src/build/script/utils/mem_stats.py", line 716, in <module>main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])File "/home/developer/fbb_ws63/src/build/script/utils/mem_stats.py", line 704, in mainlst_file.process()File "/home/developer/fbb_ws63/src/build/script/utils/mem_stats.py", line 394, in processsection = self.get_first_section()File "/home/developer/fbb_ws63/src/build/script/utils/mem_stats.py", line 337, in get_first_sectionif(self.find_file_sections()):File "/home/developer/fbb_ws63/src/build/script/utils/mem_stats.py", line 346, in find_file_sectionsfile_line = self.file.readline()File "/usr/lib/python3.10/codecs.py", line 322, in decode(result, consumed) = self._buffer_decode(data, self.errors, final)UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 4093: invalid start bytemake[2]: *** [CMakeFiles/GENERAT_MEM.dir/build.make:71:CMakeFiles/GENERAT_MEM] 错误 1make[1]: *** [CMakeFiles/Makefile2:5080:CMakeFiles/GENERAT_MEM.dir/all] 错误 2make: *** [Makefile:91:all] 错误 2######### Build target:ws63_liteos_app failed
这个问题是因为Python脚本在处理ws63-liteos-app.lst文件时遇到非标准的Unicode字符,所以报错了。要解决这个问题,可以修改一下 /home/developer/fbb_ws63/src/build/script/utils/mem_stats.py脚本,在696行, 在“with open(lst_file_name, "r") as fp_lst_file_name, open(”加上“, errors='ignore'”,意思是遇到非法字符就忽略,从而避免了报错的发生。
这样就可以最终完成编译了。
经过实际烧写测试,程序可以正常运行。
结束语
至此,完成了Linux下的编译操作,作为一个备选项,可以在下学期的课程中推荐给学生。