【全志V821_FoxPi】2-1 首次编译Tina5.0 SDK
【全志V821_FoxPi】2-1 首次编译Tina5.0 SDK
- 一、获取SDK
- 二、解压SDK
- 三、安装基本环境
- 3.1 安装软件
- 3.2 从仓库恢复SDK
- 3.2.1 ubuntu24.04 不支持python2
- 3.2.2 不支持的原因
- 3.2.3 下载安装python2
- 3.2.3.1 安装编译依赖
- 3.2.3.2 下载Python 2源码
- 3.2.3.3 编译安装
- 3.2.3.4 验证安装
- 3.2.3.5 创建软链接
- 3.2.3.6 从本地仓库恢复SDK
- 四、首次编译
- 4.1 创建自己的板级方案
- 4.1.1 初始化环境变量
- 4.1.2 选择一个基本方案
- 4.1.3 create_new_board
- 4.2 编译打包
一、获取SDK
请向代理或FAE获取全志V821的SDK,本博客使用的SDK是 V821_SDK_V1.1.tar
二、解压SDK
先确认压缩包里面是否包含了opt目录
tar tf V821_SDK_V1.1.tar | head -1
这个就是包含了opt目录,直接解压到根目录就可以
tar xvf V821_SDK_V1.1.tar -C /
三、安装基本环境
3.1 安装软件
本文环境:Ubuntu 24.04
sudo apt-get updatesudo 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 16.04以上版本,部分软件包已不再提供或者采用了其他的包,执行上述命令时, 安装失败的包可先忽略,进一步执行以下命令:
sudo apt-get install libc6:i386 libstdc++6:i386 lib32ncurses5 lib32z1
3.2 从仓库恢复SDK
cd /opt/V821_SDK_V1.1
.repo/repo/repo sync -l
3.2.1 ubuntu24.04 不支持python2
root@foxpi:/opt/V821_SDK_V1.1# .repo/repo/repo sync -l
warning: Python 3 support is currently experimental. YMMV.
Please use Python 2.6 - 2.7 instead.
Traceback (most recent call last):File "/opt/V821_SDK_V1.1/.repo/repo/main.py", line 19, in <module>import imp
ModuleNotFoundError: No module named 'imp'
3.2.2 不支持的原因
Python 2自2020年1月1日起停止维护,Ubuntu 22及以后版本官方仓库已移除Python 2相关包
Tips: 用ubuntu 16、18、20的就不用担心啦
3.2.3 下载安装python2
3.2.3.1 安装编译依赖
sudo apt update
sudo apt install -y build-essential wget libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libncursesw5-dev libffi-dev zlib1g-dev
3.2.3.2 下载Python 2源码
cd /usr/src
sudo wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
sudo tar xzf Python-2.7.18.tgz
cd Python-2.7.18
3.2.3.3 编译安装
sudo ./configure
sudo make -j$(nproc)
sudo make altinstall
# 注意:使用make altinstall避免覆盖系统默认的python3命令。
3.2.3.4 验证安装
root@foxpi:/usr/src/Python-2.7.18# python2.7 --version
Python 2.7.18
3.2.3.5 创建软链接
查找当前路径
root@foxpi:/opt/V821_SDK_V1.1# whereis python
python: /usr/src/Python-2.7.18/python
创建链接
sudo ln -s /usr/local/bin/python2.7 /usr/bin/python
查看结果
root@foxpi:/opt/V821_SDK_V1.1# whereis python
python: /usr/bin/python /usr/src/Python-2.7.18/python
3.2.3.6 从本地仓库恢复SDK
root@foxpi:/opt/V821_SDK_V1.1# .repo/repo/repo sync -l
Updating files: 100% (14861/14861), done.iles: 96% (14413/14861)
Updating files: 100% (16190/16190), done.iles: 41% (6730/16190)
Updating files: 100% (124/124), done.ing files: 69% (86/124)
Updating files: 100% (65911/65911), done.files: 26% (17678/65911)
Updating files: 100% (320/320), done.ing files: 57% (184/320)
Updating files: 100% (4286/4286), done.g files: 94% (4044/4286)
Updating files: 100% (2934/2934), done.ng files: 9% (284/2934)
Updating files: 100% (1901/1901), done.ng files: 62% (1193/1901)
Updating files: 100% (9418/9418), done.ng files: 42% (4035/9418)
Syncing work tree: 100% (109/109), done.
四、首次编译
- source build/envsetup.sh :初始化Tina环境变量
- lunch 会提供方案选项以供选择
- make -j$(nproc) :编译,其中-j后面的数字参数为编译用的线程数,可根据开发者编译用的PC实际情况选择。
- pack : 打包,将编译好的固件打包成一个.img格式的固件,固件路径 out/v821_linux_foxpi_uart0.img
4.1 创建自己的板级方案
4.1.1 初始化环境变量
foxpi@foxpi:/opt/V821_SDK_V1.1$ source build/envsetup.sh
NOTE: The SDK(/opt/V821_SDK_V1.1) was successfully loaded
load openwrt... ok
Please run lunch next for openwrt.
load bsp...ok
4.1.2 选择一个基本方案
创建自己的板级方案会在这个基础上进行修改
foxpi@foxpi:/opt/V821_SDK_V1.1$ lunchYou're building on LinuxLunch menu... pick a combo:1 v821-aiglass-tina2 v821-ipc-tina3 v821-perf2-tina4 v821-perf2_fastboot-tina5 v821-perf2b-tina6 v821-perf2b_fastboot-tina7 v821-ver1-tina
Which would you like?: 3
4.1.3 create_new_board
SDK提供便捷的方式创建板级档案 create_new_board
foxpi@foxpi:/opt/V821_SDK_V1.1$ create_new_board_______ _____ __ ___ __
/_ __(_)__ ___ _ / ___/______ ___ _/ /____ / _ )___ ___ ________/ // / / / _ \/ _ / / /__/ __/ -/) _ / __/ -/) / _ / _ \/ _ `/ __/ _ /
/_/ /_/_//_/\_,_/ \___/_/ \__/\_,_/\__/\__/ /____/\___/\_,_/_/ \_,_/-------------------------------------------------------------------------
Base on board name: v821-perf2-tina
Please input new board name (eg. custom_board): foxpi
Start generate new board: v821-foxpi-tina
-------------------------------------------------------------------------
Board foxpi now created. Please reload environment and lunch your new board:
source build/envsetup.sh && lunch
4.2 编译打包
然后按照下面顺序进行编译和打包
source build/envsetup.sh
lunch {刚才创建的序号}
make
pack
第一次编译建议单线程编译
make -j1 V=sc
以下为部分编译日志
foxpi@foxpi:/opt/V821_SDK_V1.1$ make
===There is tina environment.===Note: make is the shell functon in envsetup.sh.== action: openwrt_build, action_args: ==
========ACTION List: build_linuxdev ;========
options :
INFO: ----------------------------------------
INFO: build linuxdev ...
INFO: chip: sun300iw1p1
INFO: platform: linux
INFO: kernel: linux-5.4-ansc
INFO: board: foxpi
INFO: output: /opt/V821_SDK_V1.1/out/v821/foxpi/openwrt
INFO: ----------------------------------------
INFO: build rtos ...
Setup env done!
Run lunch_rtos to select project
last=
select=v821_e907_foxpi...
v821_e907/foxpi
'/opt/V821_SDK_V1.1/rtos/lichee/rtos/projects/v821_e907/foxpi/defconfig' -> '/opt/V821_SDK_V1.1/rtos/lichee/rtos/.config'
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.1/
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.1/share/
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.1/share/locale/
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.1/share/locale/bg/
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.1/share/locale/bg/LC_MESSAGES/
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.1/share/locale/bg/LC_MESSAGES/gprof.mo
Xuantie-900-gcc-elf-newlib-x86_64-V2.10.1/share/locale/bg/LC_MESSAGES/ld.moGenerating index for package
...
...
...
...
..../wifimanager-v2.0-demo_0.1-1_riscv32_a27l2_rv32imac_zicsr_zifencei.ipk
Generating index for package ./wifimanager-v2.0-lib_0.1-1_riscv32_a27l2_rv32imac_zicsr_zifencei.ipk
Generating index for package ./wifimanager-v2.0_0.1-1_riscv32_a27l2_rv32imac_zicsr_zifencei.ipk
Generating index for package ./wireless-regdb_2021.08.28-1_all.ipk
Generating index for package ./wirelesscommon_1.0.0-1_riscv32_a27l2_rv32imac_zicsr_zifencei.ipk
Generating index for package ./zlib_1.2.11-4_riscv32_a27l2_rv32imac_zicsr_zifencei.ipk
make[2]: Leaving directory '/opt/V821_SDK_V1.1/openwrt/openwrt'
export MAKEFLAGS= ;/opt/V821_SDK_V1.1/prebuilt/hostbuilt/make4.1/bin/make -w -r json_overview_image_info
make[2]: Entering directory '/opt/V821_SDK_V1.1/openwrt/openwrt'
make[2]: Nothing to be done for 'json_overview_image_info'.
make[2]: Leaving directory '/opt/V821_SDK_V1.1/openwrt/openwrt'
export MAKEFLAGS= ;/opt/V821_SDK_V1.1/prebuilt/hostbuilt/make4.1/bin/make -w -r checksum
make[2]: Entering directory '/opt/V821_SDK_V1.1/openwrt/openwrt'
make[2]: Leaving directory '/opt/V821_SDK_V1.1/openwrt/openwrt'
make[1]: Leaving directory '/opt/V821_SDK_V1.1/openwrt/openwrt'
make: Leaving directory '/opt/V821_SDK_V1.1/openwrt/openwrt'
INFO: ----------------------------------------
INFO: build OK.
INFO: ----------------------------------------
然后pack生成