50元买的【泰奇猫】机顶盒 1G+8G
可当小电脑/服务器使用,性能可比树莓派3
可当Linux开发板,资料参考市场使用全志H5/H6的派(香橙派3,Nanopi等)
主控:全志H6,ARM四核64位 A53 CPU,1.8G主频
armbian+Qt5.12+opencv3.3
先帖几张图,教程慢慢更
离线
1.镜像烧录
镜像地址:链接:https://pan.baidu.com/s/1Fl-2TPq1sLOBVFnmoPopbA 提取码:leiy
准备软件:SD Card Formatter Win32DiskImager
先用SD Card Formatter对SD卡镜像格式化
然后用Win32DiskImager烧录镜像,需等待10分钟
注意:选择一张8G及以上的内存卡,小心扩容卡
离线
楼主是用乐高积木搭了一个外壳?
别的公司送的积木,顺便搭了下
离线
2.查看结果
拆开盒子,用杜邦线引出Rx Tx GND 用于登录串口终端(需要usb转串口模块)
将烧录好的SD卡插入机顶盒SD卡槽中,上电
账号密码都是alarm
HDMI输出
进入桌面后连接wifi,便也实现远程登录及文件传输
SSH远程登录
远程文件传输
离线
资本家大善人 说:Meekdai 说:楼主是用乐高积木搭了一个外壳?
别的公司送的积木,顺便搭了下
差点以为楼主是今年毕业联发科的:lol:
确实是联发科送的,芯动之旅
离线
这货wifi太拉胯了
我用USB wifi🤣
离线
3.安装交叉编译工具
Ubuntu下的
地址:https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
我选的是gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz
解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。
或者 tar -Jxf xxx.tar.xz
root下将gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu移动到/opt目录下
mv gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu /opt
vim /etc/bash.bashrc
最后加入PATH="$PATH:/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin"
source /etc/bash.bashrc
aarch64-none-linux-gnu-gcc -v
如图显示,说明交叉编译工具以及安装成功
离线
4.Qt移植
我用的Qt5.12(linux下的)
链接:https://pan.baidu.com/s/1H7BDKXv_6QtNnhcyKJ1qaA 提取码:e4w2
安装:1)chmod +x 软件.run 2)./软件.run
Qt交叉编译包/opencv包:链接:https://pan.baidu.com/s/1h5EzGjsm0M2pSvjQdO6Z2A 提取码:0jsl
用tar指令将Qt交叉编译包解压到/opt目录下
照着图片敲指令,结果如图所示,表示以及安装好
linux下Qt交叉编译配置
1.打开Qt,点击实例时钟工程
2.点击Manage Kits...
3.添加全志H6的GCC G++ GDB
4.添加交叉编译好的Qmake
5.创建设备
6.选择我们的设备,编译,无错误即可
离线
4.Qt移植
泰奇猫(全志H6)下
将烧录好的SD卡插入电脑,在Ubuntu下挂载
fdisk -l
然后将Qt交叉编译包解压到/mnt/opt下,即SD卡下的opt目录
取消挂载1)cd / 2)umount /mnt
拔出SD卡,插到泰奇猫(全志H6)上,上电
1)root模式 sudo -s
2)vi /etc/bash.bashrc
在前面添加如下代码
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/opt/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/opt/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:/opt/tslib/lib:/opt/A53_qt5.12.9/lib
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/opt/tslib/bin
export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/A53_qt5.12.9/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/opt/A53_qt5.12.9/lib/fonts
#export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
3)source /etc/bash.bashrc
离线
4.Qt移植
将编译生成的运行文件远程传输到泰奇猫(全志H6)下
root模式下 chmod +x 程序名
泰奇猫接入键盘,按下ctrl+alt+f4退出桌面系统
./程序名
运行结果如下
最近编辑记录 资本家大善人 (2021-09-15 23:54:04)
离线
5.opencv移植
Qt交叉编译包/opencv包:链接:https://pan.baidu.com/s/1h5EzGjsm0M2pSvjQdO6Z2A 提取码:0jsl
将opencv包分别解压到Ubuntu和泰奇猫(全志H6)的/usr/local下
创建Qt工程,在pro文件里加入
CONFIG += c++11
INCLUDEPATH += /usr/local/include \
/usr/local/A53_opencv/include/opencv \
/usr/local/A53_opencv/include/opencv2
LIBS += /usr/local/A53_opencv/lib/libopencv*.so
用x86的opencv就改成x86的opencv库路径,这个自己去百度学习如何编译,很简单
将编译好的文件传输到泰奇猫(全志H6)上运行
结果如下:
人脸检测Qt工程(包含模型):
人脸检测.zip
注意路径:
离线
H6Qt交叉编译配置
#
# qmake configuration for building with aarch64-linux-gnu-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM=linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
QMAKE_CXX =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++
QMAKE_LINK =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++
QMAKE_LINK_SHLIB =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-objcopy
QMAKE_NM =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-nm -P
QMAKE_STRIP =/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-strip
load(qt_config)
最近编辑记录 资本家大善人 (2021-09-16 22:06:13)
离线
./configure -prefix /opt/A53_qt5.12.9 \
-opensource -confirm-license \
-release \
-strip \
-shared \
-xplatform aarch64 \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
--glib=no \
--iconv=no \
--pcre=qt \
--zlib=qt \
-no-openssl \
--freetype=qt \
--harfbuzz=qt \
-no-opengl \
-linuxfb \
--xcb=no \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-recheck-all
make -jn(n为内核数,如:make -j12)
make install
我12核编译花了半小时,先编译麻烦的可以用我编译好的,见4.Qt移植
离线
软件用pacman指令安装
离线
可以用它玩2D游戏
某个大佬录的视频
离线
附个Framebuffer程序
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <linux/fb.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/ioctl.h>
#include <stdlib.h>
static int fd_fb;
static struct fb_var_screeninfo var; /* Current var */
static struct fb_fix_screeninfo finfo;
static int screen_size;
static unsigned char *fb_base;
static unsigned int line_width;
static unsigned int pixel_width;
/**********************************************************************
* 函数名称: lcd_put_pixel
* 功能描述: 在LCD指定位置上输出指定颜色(描点)
* 输入参数: x坐标,y坐标,颜色
* 输出参数: 无
* 返 回 值: 会
* 修改日期 版本号 修改人 修改内容
* -----------------------------------------------
* 2020/05/12 V1.0 zh(angenao) 创建
***********************************************************************/
void lcd_put_pixel(int x, int y, unsigned int color)
{
unsigned char *pen_8 = fb_base+y*line_width+x*pixel_width;
unsigned short *pen_16;
unsigned int *pen_32;
unsigned int red, green, blue;
pen_16 = (unsigned short *)pen_8;
pen_32 = (unsigned int *)pen_8;
switch (var.bits_per_pixel)
{
case 8:
{
*pen_8 = color;
break;
}
case 16:
{
/* 565 */
red = (color >> 16) & 0xff;
green = (color >> 8) & 0xff;
blue = (color >> 0) & 0xff;
color = ((red >> 3) << 11) | ((green >> 2) << 5) | (blue >> 3);
*pen_16 = color;
break;
}
case 24:
{
*pen_32=color;
break;
}
case 32:
{
*pen_32 = color;
break;
}
default:
{
printf("can't surport %dbpp\n", var.bits_per_pixel);
break;
}
}
}
int main(int argc, char **argv)
{
int i,j;
fd_fb = open("/dev/fb0", O_RDWR);
if (fd_fb < 0)
{
printf("can't open /dev/fb0\n");
return -1;
}
if (ioctl(fd_fb, FBIOGET_VSCREENINFO, &var))
{
printf("can't get var\n");
return -1;
}
if (ioctl(fd_fb,FBIOGET_FSCREENINFO,&finfo))
{
printf("Error reading fixed information\n");
exit(-1);
}
//显示结构体信息
printf("The mem is :%d\n",finfo.smem_len);
printf("The line_length is :%d\n",finfo.line_length);
printf("The xres is :%d\n",var.xres);
printf("The yres is :%d\n",var.yres);
printf("bits_per_pixel is :%d\n",var.bits_per_pixel);
line_width = var.xres * var.bits_per_pixel / 8;
pixel_width = var.bits_per_pixel / 8;
//计算显存大小
screen_size = var.xres * var.yres * var.bits_per_pixel / 8;
/*这就是把fp所指的文件中从开始到screensize大小的内容给映射出来,得到一个指向这块空间的指针*/
fb_base = (unsigned char *)mmap(NULL , screen_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd_fb, 0);
if (fb_base == (unsigned char *)-1)
{
printf("can't mmap\n");
return -1;
}
/* 清屏: 全部设为白色 */
memset(fb_base, 0xff, screen_size);
for(i = 0 ; i < var.xres/2 ; i++)
for(j = 0 ; j < var.yres/2 ; j++)
lcd_put_pixel(i,j, 0xFF0000); //设为红色
for(i = var.xres/2 ; i < var.xres ; i++)
for(j = var.yres/2 ; j < var.yres ; j++)
lcd_put_pixel(i,j, 0xFF0000); //设为红色
munmap(fb_base , screen_size);/*解除映射*/
close(fd_fb); /*关闭文件*/
return 0;
}
离线
楼主可以分享一下dts文件吗,我提取了却不会修改
不好意思,这个我也没有弄
离线
有原理图的吗?
搜搜香橙派5,都是公版方案
离线
@资本家大善人
离线
香橙派3的armbian镜像,完全兼容,WIFI可用
使用香橙派3的镜像记得取消自动扩容,不然要等很久
离线
我都是是卡在Scanning for Btrfs filesystems
进不去,这是什么原因?
显示屏上显示的啥
离线
@chenqiang
你这是哪个镜像,如果是armbian香橙派镜像,要关闭自动扩容
离线
版本是
Armbian_22.02.1_Orangepi3_focal_current_5.15.25_xfce_desktop
关闭自动扩容,用HDMI显示器查看
镜像卡root目录下
touch .no_rootfs_resize
自己在虚拟机用Gparted扩 顺便建立个交换分区
最近编辑记录 资本家大善人 (2022-05-21 19:53:07)
离线
资本家大善人 说:chenqiang 说:版本是
Armbian_22.02.1_Orangepi3_focal_current_5.15.25_xfce_desktop关闭自动扩容,用HDMI显示器查看
镜像卡root目录下
touch .no_rootfs_resize
自己在虚拟机用Gparted扩 顺便建立个交换分区网卡可以用吗
可以的,看36楼,还能上B站播放金坷垃
离线
@lixianji
换张好SD卡试试,我之前也出现过,换SD卡就OK了
离线
@1070758302
可能是SD卡镜像不完整
离线
楼主的屏幕是用哪个芯片转的?芯片好买吗?大概多少钱?
就是普通的迷你HDMI屏幕,闲鱼上搜索,整套100块
离线
sd卡启动之后怎么把系统装到emmc
直接从SD启动的,没有用emmc
离线
楼主你好,可以分享一下archlinux的镜像么,我在闲鱼上买了两个,但是找不到archlinux打包好的镜像
全志h6,香橙派3镜像,armbian官网上找也可以
离线
换了个armbian镜像,用旧的就可以了Armbian_23.02.2_Orangepi3_jammy_current_5.15.93_xfce_desktop.img
搞不懂为啥但是启动出来之后,有线网卡和无线网卡都没法识别到
机顶盒自带的网卡可能识别不到或者需要额外手动操作(官网看看香橙派3怎么搞的)
用个usb的网卡看看,或者用我论坛里的镜像,那个可以用机顶盒自带的WiFi
离线
@资本家大善人
论坛里的镜像在哪里呀,可以提供一下么,谢谢啦:)
看看二楼的
离线