Tina5 Linux开发

准备开发环境

首先准备一台 Ubuntu 20.04 / Ubuntu 18.04 / Ubuntu 16.04 / Ubuntu 14.04 的虚拟机或实体机,其他系统没有测试过出 BUG 不管。

更新系统,安装基础软件包

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install build-essential subversion git libncurses5-dev zlib1g-dev gawk flex bison quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip lsof python3 python2 python3-dev android-tools-mkbootimg python2 libpython3-dev

安装完成后还需要安装 i386 支持,SDK 有几个打包固件使用的程序是 32 位的,如果不安装就等着 Segment fault 吧。

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt install gcc-multilib 
sudo apt install libc6:i386 libstdc++6:i386 lib32z1

下载 AWOL Tina Linux BSP

注册一个 AWOL 账号

下载 SDK 需要使用 AWOL 的账号,前往 https://bbs.aw-ol.com/ 注册一个就行。其中需要账号等级为 LV2,可以去这个帖子:https://bbs.aw-ol.com/topic/4158/share/1 水四条回复就有 LV2 等级了。

安装 repo 管理器

BSP 使用 repo 下载,首先安装 repo ,这里建议使用国内镜像源安装

mkdir -p ~/.bin
PATH="${
    HOME}/.bin:${
    PATH}"
curl https://mirrors.bfsu.edu.cn/git/git-repo > ~/.bin/repo
chmod a+rx ~/.bin/repo

请注意这里使用的是临时安装,安装完成后重启终端就没有了,需要再次运行下面的命令才能使用,如何永久安装请自行百度。

PATH="${
    HOME}/.bin:${
    PATH}"

安装使用 repo 的过程中会遇到各种错误,请百度解决。repo 是谷歌开发的,repo 的官方服务器是谷歌的服务器,repo 每次运行时需要检查更新然后卡死,这是很正常的情况,所以在国内需要更换镜像源提高下载速度。将如下内容复制到你的~/.bashrc

echo export REPO_URL='https://mirrors.bfsu.edu.cn/git/git-repo' >> ~/.bashrc
source ~/.bashrc

如果您使用的是 dash、hash、 zsh 等 shell,请参照 shell 的文档配置。环境变量配置一个 REPO_URL 的地址

配置一下 git 身份认证,设置保存 git 账号密码不用每次都输入。

git config --global credential.helper store

新建文件夹保存 SDK

使用 mkdir 命令新建文件夹,保存之后需要拉取的 SDK,然后 cd 进入到刚才新建的文件夹中。

mkdir tina-v853-open
cd tina-v853-open

初始化 repo 仓库

使用 repo init 命令初始化仓库,tina-v853-open 的仓库地址是 https://sdk.aw-ol.com/git_repo/V853Tina_Open/manifest.git 需要执行命令:

repo init -u https://sdk.aw-ol.com/git_repo/V853Tina_Open/manifest.git -b master -m tina-v853-open.xml

拉取 SDK

repo sync

创建开发环境

repo start devboard-v853-tina-for-awol --all

适配 TinyVision 板子

刚才下载到的 SDK 只支持一个板子,售价 1999 的 V853-Vision 开发板,这里要添加自己的板子的适配。

下载支持包:

版本 下载地址
1.0 https://github.com/YuzukiTsuru/YuzukiTsuru.GitHub.io/releases/download/2024-01-21-20240121/tina-bsp-tinyvision.tar.gz
1.1 https://github.com/YuzukiHD/TinyVision/releases/download/tina.0.0.1/tina-bsp-tinyvision.tar.gz
1.2 https://github.com/YuzukiHD/TinyVision/releases/download/tina.0.0.2/tina-bsp-tinyvision.tar.gz

或者可以在:https://github.com/YuzukiHD/TinyVision/tree/main/tina 下载到文件,不过这部分没预先下载软件包到 dl 文件夹所以编译的时候需要手动下载。

放到 SDK 的主目录下

在这里插入图片描述

运行解压指令

tar xvf tina-bsp-tinyvision.tar.gz

即可使 Tina SDK 支持 TinyVision 板子

在这里插入图片描述

初始化 SDK 环境

每次开发之前都需要初始化 SDK 环境,命令如下

source build/envsetup.sh

然后按 1 选择 TinyVision

在这里插入图片描述

适配 ISP

Tina SDK 内置一个 libAWispApi 的包,支持在用户层对接 ISP,但是很可惜这个包没有适配 V85x 系列,这里就需要自行适配。其实适配很简单,SDK 已经提供了 lib 只是没提供编译支持。我们需要加上这个支持。

前往 openwrt/package/allwinner/vision/libAWIspApi/machinfo 文件夹中,新建一个文件夹 v851se ,然后新建文件 build.mk 写入如下配置:

ISP_DIR:=isp600

在这里插入图片描述

对于 v851s,v853 也可以这样操作,然后 m menuconfig 勾选上这个包

在这里插入图片描述

开启 camerademo 测试摄像头

进入 m menuconfig 进入如下页面进行配置。

Allwinner  --->
	Vision  --->
		<*> camerademo........................................ camerademo test sensor  --->
			[*]   Enabel vin isp support

编译系统然后烧录系统,运行命令 camerademo ,可以看到是正常拍摄照片的

在这里插入图片描述

适配板载 SD NAND

设备树中的 SDC2 节点修改如下,之后线刷即可

&sdc2 {
	non-removable;
	bus-width = <4>;
	mmc-ddr-3_3v;
	/*mmc-hs200-1_8v;*/
	/*mmc-hs400-1_8v;*/
	no-sdio;
	/delete-property/ no-sd;
	no-mmc;
	ctl-spec-caps = <0x8>;
	cap-mmc-highspeed;
	sunxi-signal-vol-sw-without-pmu;
	sunxi-power-save-mode;
	/*sunxi-dis-signal-vol-sw;*/
	max-frequency = <50000000>;
	/*vmmc-supply = <&reg_dcdc1>;*/
	/*emmc io vol 3.3v*/
	/*vqmmc-supply = <&reg_aldo1>;*/
	/*emmc io vol 1.8v*/
	/*vqmmc-supply = <&reg_eldo1>;*/
	status = "okay";
};

适配 OpenCV

勾选 OpenCV 包

m menuconfig 进入软件包配置,勾选

OpenCV  --->
	<*> opencv....................................................... opencv libs
	[*]   Enabel sunxi vin isp support

OpenCV 适配过程

本部分的操作已经包含在 tina-bsp-tinyvision.tar.gz 中了,已经适配好了,如果不想了解如何适配 OpenCV 可以直接跳过这部分

OpenCV 的多平面视频捕获支持

一般来说,如果不适配 OpenCV 直接开摄像头,会得到一个报错:

[  702.464977] [VIN_ERR]video0 has already stream off
[  702.473357] [VIN_ERR]gc2053_mipi is not used, video0 cannot be close!
VIDEOIO ERROR: V4L2: Unable to capture video memory.VIDEOIO ERROR: V4L: can't open camera by index 0
/dev/video0 does not support memory mapping
Could not open video device.

这是由于 OpenCV 的 V4L2 实现是使用的 V4L2_CAP_VIDEO_CAPTURE 标准,而 sunxi-vin 驱动的 RAW Sensor 平台使用的是 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE ,导致了默认 OpenCV 的配置错误。

V4L2_CAP_VIDEO_CAPTURE_MPLANEV4L2_BUF_TYPE_VIDEO_CAPTURE是 Video4Linux2(V4L2)框架中用于视频捕获的不同类型和能力标志。

  1. V4L2_CAP_VIDEO_CAPTURE_MPLANE: 这个标志指示设备支持多平面(multi-plane)视频捕获。在多平面捕获中,图像数据可以分解成多个平面(planes),每
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值