一. SDK 开发环境简介
SDK 开发环境主要有:
1. Linux 服务器
Linux 服务器主要用于建立交叉编译环境, 实现在 Linux 服务器上编译出可以在目标板上运行的可执行代码。
工作台主要用于目标板的烧录镜像和调试程序, 通过串口与目标板连接。
通常我们需要在工作台安装
(1)终端工具:用于登录 Linux 服务器, 通常有 SecureCRT、Putty、miniCom 等。
(2)HiBurn.exe:用于烧录目标板的镜像、调试程序。
3. 目标板
本文目标板为海思的 Hi3861 demo 板,demo 板通过 USB 转串口与工作台连接,工作台将交叉编译出来的镜像通过串口烧录到 demo 板上。 SDK 开发环境概念图如下:
二. 搭建 Linux 开发环境
2.1 环境准备
(1)Linux 系统推荐使用 Ubuntu 16.04(2)Shell 使用 bash
(3)交叉编译器使用 hcc_riscv32
(4)Python 使用 Python 3.7.3 (注: 可以使用更高版本,但可能遇到其他环境问题。)
(5)Scons 使用 Scons 3.0.4 (注: 可以使用更高版本,但可能遇到其他环境问题。)
2.2 交叉编译器安装
(1)下载 tar.gz(实际名称以编译器发布版本为准)。riscv 的 gcc 交叉编译器, 以开源的方式托管在 github 上, 我们使用到的 riscv-gcc 子仓库链接如下: https://github.com/riscv/riscv-gcc
将仓库 clone 下来,编译成 riscv32-unknown-elf-gcc 版本,具体方法可以参考下面的链接:https://blog.csdn.net/weiqi7777/article/details/88045720
(2)复制编译完成的文件夹或者下载的tar.gz 文件到根目录的 /toolchain 文件夹。
(3)解压缩(自己编译的可以跳过这步)
tar zxvf hcc_riscv32.tar.gz
(4)递归修改编译器安装目录权限
chmod -R 755 /toolchain
(5)设置环境变量
vim /etc/profile
(6)生效环境变量
source /etc/profile
(7)Shell 命令行输入
riscv32-unknown-elf-gcc -v
如果能正确显示编译器版本号,表明编译器安装成功
eg. gcc version 7.3.0 (Heterogeneous Compiler&Codesign V100R003C00SPC210B006)
2.3 Python 环境安装
(1)打开 Linux 终端, 输入命令:python3 -V , 查看 Python 版本号, 推荐 Python 3.7.3 以上。(2)如果自带的 Python 版本太低( Ubuntu 16.04 默认版本应该是 Python 2.7.12 ), 使用命令更新到最新:
# root/sudo 权限下
sudo apt-get install python3 -y
打印 Python 3.7.3 版本号
安装后请用第一步再次确认版本。如果仍不能满足版本要求, 建议直接在 Python 官网 https://www.python.org/downloads/source/
下载 Python 3.7.3 版本的源码包 https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
安装请阅读 https://wiki.python.org/moin/BeginnersGuide/Download
或者参考论坛文章 https://blog.csdn.net/u014775723/article/details/85213793?depth_1-
安装后请用第一步再次确认版本。
(3)安装 Python pip 工具( 包管理工具 ):
# root/sudo 权限下
sudo apt-get install python3-setuptools python3-pip -y
Python 环境安装相关的常见问题以及解决方案:
No module named “Crypto”
https://www.cnblogs.com/fawaikuangtu123/p/9761943.html
No module named ‘_ctypes’
https://blog.csdn.net/u014775723/article/details/85224447
安装 Python
https://www.jianshu.com/p/347e87e9d73b
安装 Python 3.7 并将 Python 默认指向为 Python 3.7
https://blog.csdn.net/u014775723/article/details/85213793?depth_1-
下载慢,更换软件源
https://blog.csdn.net/baidu_36602427/article/details/86551862
https://baijiahao.baidu.com/s?id=1669731390262884490&wfr=spider&for=pc
卸载指定版本的 Python
https://www.cnblogs.com/hellojesson/p/11394774.html
2.4 Python 依赖组件包安装
(1)Kconfiglib 组件包
安装 Kconfiglib 13.2.0+
自动安装
# root/sudo 权限
sudo pip3 install kconfiglib
手动安装
a: 从官网 https://pypi.org/project/kconfiglib 下载文件 kconfiglib-13.2.0-py2.py3-none-any.whl
b: root/sudo 下输入 pip3 install kconfiglibxxx.whl
安装完成,终端有打印出下面字段
Successfully installed kconfiglib-13.2.0
(2)升级文件签名依赖组件包 pycryptodome
https://pypi.org/project/pycryptodome/#files 下载 pycryptodome-3.7.3-cp37-cp37m-manylinux1x8664.whl
# root/sudo 权限
pip3 install pycryptodome-3.7.3-cp37-cp37m-manylinux1_x86_64.whl
安装完成后界面会提示 Successfully intalled pycryptodome-3.7.3
(3)升级文件签名依赖组件包 six
https://pypi.org/project/six/ 下载 six-1.12.0-py2.py3-none-any.whl
# root/sudo 权限
pip3 install six-1.12.0-py2.py3-none-any.whl
安装完成后界面会提示 Successfully intalled six-1.12.0
(4)升级文件签名依赖组件包 ecdsa
https://pypi.org/project/ecdsa/ 下载 ecdsa-0.14.1-py2.py3-none-any.whl
# root/sudo 权限
pip3 install ecdsa-0.14.1-py2.py3-none-any.whl
安装完成后界面会提示 Successfully intalled ecdsa-0.14.1
(5)查看安装完成的 pip 组件包
pip3 list
Package Version
------------ -------
ecdsa 0.14.1
kconfiglib 14.1.0
pip 20.1.1
pycryptodome 3.7.3
setuptools 40.8.0
six 1.12.0
2.5 Scons 安装
(1) 打开 Linux 终端,输入命令 # root/sudo 权限
sudo apt-get install scons -y
也可以在官网 https://scons.org/pages/download.html 下载源码包( Scons 3.0.4+ ), 解压到任意目录,进入目录运行 sudo python3 setup.py install 等待安装完成
(2) 查看是否安装成功 Scons -v
scons -v
script: v3.0.4.3a41ed6b288cee8d085373ad7fa02894e1903864, 2019-01-23 17:30:35, by bdeegan on kufra
engine: v3.0.4.3a41ed6b288cee8d085373ad7fa02894e1903864, 2019-01-23 17:30:35, by bdeegan on kufra
engine path: ['/usr/local/lib/scons/SCons']
Copyright (c) 2001 - 2019 The SCons Foundation
总结
本文主要介绍了基于海思 Hi3861 平台 SDK 开发环境搭建, 经过以上步骤 (主要是 Python 和 Scons 安装), 我们已经完成 Hi3861 SDK 开发所需的软硬件环境搭建, 接下来就可以利用 SDK 进行开发和编译了, 我会在后续的博文中给大家介绍。
参考资料
《 Hi3861V100/Hi3861LV100 SDK开发环境搭建 用户指南.pdf 》