R329 Tina SDK 编译与烧录

  • 原参考文章写于2021年4月

获取仓库

https://github.com/sipeed/R329-Tina-jishu
git clone https://github.com/sipeed/R329-Tina-jishu
cd R329-Tina-jishu
git submodule update --init --recursive

整个仓库不重要的部分经过 coding 仓库加速,所以只需要关注以下这几个仓库即可。(该版本为开源 SDK 版本,加上了一些驱动配置以支持 Sipeed 的 R329 板)

https://github.com/sipeed/r329-package
https://github.com/sipeed/r329-linux-4.9
https://github.com/sipeed/r329-target

开源的只是裁剪了一些不必要的版型和暂不公开 DSP 和 NPU 的代码,其他的没有区别,正常使用就好。

  • package 实际上就对应系统里的软件功能包,如一些 shell 命令或程序。
  • linux-4.9 对应的 linux 内核,主要影响底层的驱动,需要移植到其他硬件时会来这里更改设备树和相关的裸机驱动即可。
  • target 对应的是版型的一些配置文件和预置脚本等。

其他的很少改动,可以不用太关心,如 boot 、prebuild 等,在等项目的主仓库拉取的过程中,来认识一下 SDK 的构成吧,等看完了就差不多可以开始进行编译了。

SDK 结构

  • 由于SDK目录结构有点长所以仅给传送门 点我

看完后你已经有一些sdk相关概念了,那就开始编译吧。

可以先看这两篇完成基本的安装,我直接列一下必要的库,编译与测试环境在 ubuntu20 (wsl2)建议大于 8G 内存。

连接开发板 https://r329.docs.allwinnertech.com/devboardstudy/r329evb5studyadbuart/
编译环境配置 https://r329.docs.allwinnertech.com/devboardstudy/r329evb5ubuntu/

上面两篇参考资料废话很多,如果你已经有经验了,就直接看脚本开始吧。

基础环境的安装:

sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync intltool busybox cmake

Ubuntu20 要增强一下,补一下下面两个包 libffi6 (python3 需要)。

wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb
sudo apt install ./libffi6_3.2.1-8_amd64.deb
sudo apt-get install uuid-dev

其他的,自己丟了就找一下。

在 R329-Tina-jishu 下执行编译命令

编译前建议设置一下 export FORCE_UNSAFE_CONFIGURE=1 ,第一次编译 host 的软件,会出现 set FORCE_UNSAFE_CONFIGURE=1 这个变量的提示。

cd R329-Tina-jishu
source build/envsetup.sh
lunch r329_evb5-tina
make -j32
pack

对应的意思是:source 加载编译环境,你可以得到 croot / cout 等跳转目录的功能,lunch 选择版型,确定要编译的版型。

dls@DESKTOP-XPS13:~/R329-Tina-jishu$ source build/envsetup.sh
Setup env done! Please run lunch next.
dls@DESKTOP-XPS13:~/R329-Tina-jishu$ lunch

You're building on Linux

Lunch menu... pick a combo:
     1. r329_evb5-tina
     2. r329_evb5_min-tina

Which would you like? [Default r329_evb5]: 1
============================================
TINA_BUILD_TOP=/home/dls/R329-Tina-jishu
TINA_TARGET_ARCH=aarch64
TARGET_PRODUCT=r329_evb5
TARGET_PLATFORM=r329
TARGET_BOARD=r329-evb5
TARGET_PLAN=evb5
TARGET_BUILD_VARIANT=tina
TARGET_BUILD_TYPE=release
TARGET_KERNEL_VERSION=4.9
TARGET_UBOOT=u-boot-2018
TARGET_CHIP=sun50iw11p1
============================================
dls@DESKTOP-XPS13:~/R329-Tina-jishu$

make 有以下常用命令:

  • make menuconfig 配置软件包
  • make kernel_menuconfig 配置内核包
  • make clean 清理项目
  • make defconfig 保存当前软件配置,主要影响 defconfig。
  • mkernel 是编译内核的简写命令。

boot 要到目录下进行配置,具体怎么使用,就自己参考荔枝派 linux 的配置加入 arch= 即可。

make 单独编译模块的时候 make package/xxx/xxxx/compile 或 clean 即可。

make -j32 的意思是 使用 32 核并行编译,建议第一次用 -j1, V=s 意思是单核并开启日志输出。

如果想要有颜色的输出可以按照 colormake 方便看异常和过滤输出。

pack 会进行打包变成 img ,供 PhoenixSuit 等全志提供的软件进行烧录,可能需要注意的是分区大小之类的调整,当然你可以烧录一次后通过 dd 命令导出镜像,方便其他人烧写。

如何烧写?

可以参考 V831 Sipeed 的烧录。

板子图片

按上图的核心板上的小按钮后通电,就会进入 fel 模式,或不插 SD 卡上电就会自动进入烧写模式(这要基于硬件设计),软件就会检测到了。

这种官方的烧录方法,在开发系统结束后就不会需要了,所以看过一次官方教程就行了 https://r329.docs.allwinnertech.com/devboardstudy/r329evb5compile