[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
RISC-V AI 开发:D1 开机入门
Corrector: TinyCorrect v0.1-rc3 - [pangu epw] Author: Jinwen Zhou zhoujwtony@163.com Date: 2022/08/09 Revisor: Falcon falcon@tinylab.org Project: RISC-V Linux 内核剖析 Sponsor: PLCT Lab, ISCAS
本文介绍 D1 开发板应用开发的软硬件准备工作。
编译环境
根据官方 SDK 环境建议,Tina Linux SDK 是在 Ubuntu14.04 开发测试的,因此推荐使用 Ubuntu 14.04 主机环境进行源码编译,Ubuntu 16、18、20 等版本也可以支持,但是可能需要开发者另外配置一些包。本文采用 VirtualBox 安装 Ubuntu14.04,相关配置建议参考官方文档:
- 内存大小设置:建议大于 2GB
- 虚拟硬盘大小设置:建议至少设置 50GB(SDK 所需较大空间)
- 安装好 Ubuntu14.04 虚拟机环境后,建议不要在线升级 Ubuntu 版本
安装增强功能,包含共享剪贴板,共享文件夹,自动调节屏幕大小等功能,比较方便:
点击虚拟机界面上面菜单栏的【设备】–【安装增强功能】。然后可以看到在虚拟机的光驱中自动加载了增强 iso 的文件(VBoxGuestAdditions.iso),点击『Run』运行按钮。接着按虚拟机所指引步骤进行即可。
Ubuntu 环境配置
用以下命令安装一些必要的包:
sudo apt-get update
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lib32z1 lib32z1-dev lib32stdc++6 libstdc++6 -y
为了提高下载速度,官方建议将 Ubuntu 下 /etc/apt/sources.list
的内容全部替换成如下内容(修改需 sudo 获取权限):
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
SDK 下载与配置
直接参考官方文档:源码下载。
官方提供的 SDK 除了可配置编译系统外,还包含了已适配的各种工具链及软件包,方便开发人员使用。
在 Tina Linux SDK 中有完整的编译工具链,路径如下:
tina/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702
将编译工具路径设置为全局变量:
vim ~/.bashrc
命令打开 bashrc 文件,输入:
export PATH=/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/:$PATH
然后输入 source ~/.bashrc
使之生效。
D1 系统的烧写
本文推荐的的是全志原厂提供的 固件,无需编译,可直接烧录。经测试,也可以正常运行后续要用到的 ncnn 框架和摄像头测试程序。
在本次实验过程中,也尝试了另外两种方式,但是都以失败告终,请勿浪费时间尝试。具体问题如下:
通过 Tina Linux SDK 编译
烧写和编译方法参照:烧写编译方法
该系统需要自己编译,但该镜像执行后续需要的 ncnn 程序时会发生非法指令错误,根据 ncnn 作者所说,在执行 vgg16 这类大型模型在内存不足时会发生 segmentation fault,是 D1 开发板硬件条件不够,不管即可。
Debian by Sipeed
此方案需要将系统镜像烧录到 SD 卡中。有 SD 卡插入时,D1 会优先启动 SD 卡中的系统。
该系统优点是可直接下载固件进行烧录,可以用 apt 命令下载软件,可在板子上直接编译运行程序,同时也支持 ncnn 框架;但是在运行摄像头采图 demo 时会出错,换成 Tina 系统没问题,在 Ubuntu 的 PC 上执行也没有问题。目前看来是该系统对摄像头驱动支持的问题。
烧录需要下载全志制卡工具 PhoenixCard.zip,解压并打开使用。下载地址:PhoenixCard 下载,使用该系统的 SD 卡内存推荐用 32G 以上的,使用 16G 的 SD 卡会出现烧录后系统无法启动的问题。
Helloworld 程序测试
hello_world.c 文件:
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("Hello NeZha\n");
return 0;
}
编译文件
编译命令:
riscv64-unknown-linux-gnu-gcc -o hello_word hello_world.c
编译完成后会在当前文件夹生成名为 hello_word 文件,这个就是可以在开发板上运行的可执行文件。
开发板上电
分别用一根 USB 线和一根串口线连接电脑的 USB 端口,如图所示:
然后,可以选择一款自己熟悉的串口客户端,这里选择 xshell,它拥有图形化界面,操作简单。
xshell 仅需通过 “文件->新建->设置协议 SERIAL” 选择对应的端口即可通过串口登录查看系统。
Linux 用户可以选择 minicom。
文件上传到开发板
首先下载 ADB 工具,在 研发生产工具 找到下载链接,安装即可。
打开电脑 CMD,检查设备与电脑的连接情况,可以使用(ADB 工具是 Windows 下的工具,使用虚拟机编译的,编译文件还在虚拟机里,可以通过共享文件夹或者 ssh 把文件传给 Windows):
adb devices
把电脑文件传给开发板:
adb push <电脑上的文件路径> <开发板上的目标路径> adb push hello_word ./. #.表示根目录
执行
上传成功后,就可以在
Tina
系统中的/root
目录下就有hello_word
文件。然后赋予它可执行权限,执行即可:chmod +x hello_word ./hello_word
输出 Hello NeZha
就成功了!
小结
开发板准备工作完成,可以进行后续的开发流程。
参考资料
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |
Read Album:
- TinyBPT 和面向 buildroot 的二进制包管理服务(1):设计简介与框架
- RISC-V Linux 内核及周边技术动态第 118 期
- RISC-V Linux 内核及周边技术动态第 117 期
- 实时分析工具 rtla timerlat 介绍(二):延迟测试原理
- 实时分析工具 rtla timerlat 介绍(一):交叉编译及使用