瑞芯微RK3328(ROC-RK3328-PC)buildroot 开发QT的hello world

第一部分:编译rk3328 sdk

0. 环境
- EC-R3328PC(ROC-RK3328-PC)
- ubuntu18(100GB)

1. 安装依赖

sudo apt-get updatesudo apt-get install repo git-core gitk git-gui gcc-arm-linux-gnueabihf u-boot-tools device-tree-compiler \
gcc-aarch64-linux-gnu mtools parted libudev-dev libusb-1.0-0-dev python-linaro-image-tools \
linaro-image-tools gcc-arm-linux-gnueabihf libssl-dev liblz4-tool genext2fs lib32stdc++6 \
gcc-aarch64-linux-gnu g+conf autotools-dev libsigsegv2 m4 intltool libdrm-dev curl sed make \
binutils build-essential gcc g++ bash patch gzip bzip2 perl tar cpio python unzip rsync file bc wget \
libncurses5 libqt4-dev libglib2.0-dev libgtk2.0-dev libglade2-dev cvs git mercurial rsync openssh-client \
subversion asciidoc w3m dblatex graphviz python-matplotlib libc6:i386 libssl-dev texinfo fakeroot \
libparse-yapp-perl default-jre patchutils

注意: Ubuntu17.04 或者更高的系统还需要如下依赖包:

sudo apt-get install lib32gcc-7-dev g++-7 libstdc++-7-devsudo apt install swig
sudo apt-get install python-dev
sudo apt install expect-dev

2. 解压 Firefly_Linux_SDK 分卷压缩包(晚上测试了网络不通,白天重试可以连上了)
确认无误后,就可以解压:

cat *firefly_split* | tar -xzv

#本SDK文件夹内包含一个 .repo 目录,解压之后,在当前目录下执行以下操作

cd rk3328_linux_release_v2.5.1_20210301/
ls -al
.repo/repo/repo sync -l
.repo/repo/repo sync -c --no-tags            
.repo/repo/repo start firefly --all

问题:error: Cannot remove project "distro": uncommitted changes are present
解决办法:rm -rf distro
重新执行 .repo/repo/repo sync -l

3. 编译buildroot

./build.sh roc-rk3328-pc-buildroot.mk        #文件路径在 `device/rockchip/rk3328/firefly-rk3328-buildroot.mk`
./build.sh

4. 裁剪内核

cd rk3328_linux_release_v2.5.1_20210301/kernel
make ARCH=arm64 firefly-rk3328_defconfig
make ARCH=arm64 menuconfig


5. 固件打包
5.1 同步更新各部分镜像

./mkfirmware.sh

5.2 打包统一固件
./build.sh updateimg

打包生成的完整固件会保存到 rockdev/pack/ 目录。

6. 配置环境变量
打开文件:
gedit ~/.bashrc
添加内容:

export PATH=/home/xxjianvm/work/rk3328_linux_release_v2.5.1_20210301_split_dir/rk3328_linux_release_v2.5.1_20210301/buildroot/output/rockchip_rk3328/host/bin:$PATH

测试验证:
重新打开命令行控制台

aarch64-linux-gcc -v


注意:
aarch64-linux-gcc 是在sdk里面的,aarch64-linux-gnu-gcc是在 /usr/bin 里面


参考:https://wiki.t-firefly.com/zh_CN/ROC-RK3328-PC/intro.html


第二部分:buildroot添加qt、vnc

0. 环境
- EC-R3328PC(ROC-RK3328-PC)
- ubuntu18(100GB)
- rk3328_linux_release_v2.5.1_20210301(编译好了一遍buildroot)

1. 配置变量
# 进入 SDK 根目录

cd path/to/SDK/
source envsetup.sh rockchip_rk3328

2. 自定义
cd buildroot
make menuconfig

2.1 qt5

Target packages -> Graphic libraries and applications (graphic/text) > Qt5
Target packages -> Graphic libraries and applications (graphic/text) > Qt5 -> gui module
Target packages -> Graphic libraries and applications (graphic/text) > Qt5 -> qt5charts
Target packages —> Graphic libraries and applications (graphic/text) —> Qt5 —> Enable Tslib support

2.2 vnc

Target packages -> Graphic libraries and applications (graphic/text)  -> X.org X Window System
Target packages -> Graphic libraries and applications (graphic/text)  -> x11vnc

2.3 保存配置

make savedefconfig

3. 编译
全自动编译

./build.sh

打包生成的完整固件会保存到 rockdev/pack/ 目录。

4. 下载新固件后测试
4.1 准备镜像和工具
开发板-LINUX资料、ROC-RK3328-PC

镜像:
ROC-RK3328-PC-UBUNTU-18.04_DESKTOP-GPT-20211230-1007.img

工具:
AndroidTool_Release_v2.71

4.2 进入烧写模式
打开 AndroidTool_Release_v2.71

用USB-TYPE-C线连接笔记本的USB和设备。注意不要用USB-HUB,供电不足,usb-hub外接5v电源也不够。刚开始没有网络,原来一直在重启。

拆下外壳,按下 reboot按键 reset。会提示发现一个LOADER设备。
也可以试试不拆外壳,用牙签按下耳机控位置内的按键,上电。

4.3 选择固件
升级固件 -> 固件-> 选择: ROC-RK3328-PC-UBUNTU-18.04_DESKTOP-GPT-20211230-1007.img
-> 擦除Flash
-> 升级

5. 测试
机子默认开机后有adb的。

参考:
[1]https://wiki.t-firefly.com/zh_CN/Firefly-RK3288/buildroot_develop.html
[2]buildroot配置QT5和tslib,https://blog.csdn.net/u012577474/article/details/103365647
[3]STM32MP157使用buildroot编译QT并且跑通QT demo应用程序,https://blog.csdn.net/qq_24622489/article/details/119881325


第三部分:QT hello world[PC]

0. 环境
vmware: ubuntu18
winscp: 
mobaterm: 

1. 获取linux-qt
https://download.qt.io/archive/qt/5.14/5.14.2/

下载
qt-opensource-linux-x64-5.12.2.run

这个版本是编译板子buildroot的qt5版本。

2. 安装
sudo chmod 777 qt-opensource-linux-x64-5.12.2.run
./qt-opensource-linux-x64-5.12.2.run
-> Next
-> 输入账号密码登录
-> Next
-> Installation Folder:    /home/xxjianvm/Qt5.12.2 -> Next
-> Select Components -> 勾选 Desktop gcc 64-bit,勾选 Qt Charts,勾选 Developer and Designer Tools -> Next
-> License Agreement -> Next
-> Install

3. 界面 helloworld
通过开始界面打开 Qt Creator

3.1 创建工程
Qt Creator -> File -> New File or Project -> Application -> Qt Widgets Application -> choose

Location
-> Name:         hello_qt
-> Create in:     /home/xxjianvm/work/workspace_qt/
-> Next

Kits -> Next
-> Finish

Build System:
-> Build System: qmake -> Next

Details
-> Class Information:    hello_qt -> Next

Translaton -> Next

3.2 修改界面
双击 helloworld_ui/Forms/hello_qt.ui

添加 Push Button -> 
-> objectName: Btn_Hello
-> 右键 -> Go to slot... -> clicked() -> OK

修改ep4ce30Adc_LinuxQt.cpp:
#include <QtWidgets/QMessageBox>

void hello_qt::on_Btn_Hello_clicked()
{
    QMessageBox msgBox;
    msgBox.setText("The document has been modified.");
    msgBox.exec();
}


修改 helloworld_ui.pro

QT       += core gui

修改为:
QT       += core gui
QT       += widgets

编译

运行

参考:
[1]Linux安装qt完整版教程,https://blog.csdn.net/m0_45463480/article/details/127696388
[2]qt-creator的hello world,https://blog.csdn.net/qq_27158179/article/details/122790006?spm=1001.2014.3001.5501
[3]究极保姆式教你如何在Ubuntu上源码安装Qt5.15.2,https://blog.csdn.net/qq_43459209/article/details/119336675
[4]Qt中QMessageBox的用法---看这一篇就够了,https://blog.csdn.net/qq_42250189/article/details/105178379
[5]QT系统学习系列:1.2 PushButton(常规按钮),https://blog.csdn.net/Fdog_/article/details/113041687


第四部分:QT hello world[arm64]

0. 环境
ROC-RK3328-PC,buildroot镜像
vmware: ubuntu18,编译好了 buildroot,qt creator,

winscp: 
mobaterm: 

1. 添加Kit
Qt Creator -> Tools -> Options -> 
-> Kits -> Compilers -> Manual -> C -> Add -> GCC -> C
-> Name:            aarch64-linux-gcc
-> Compiler path:    /home/xxjianvm/work/rk3328_linux_release_v2.5.1_20210301_split_dir/rk3328_linux_release_v2.5.1_20210301/buildroot/output/rockchip_rk3328/host/bin/aarch64-linux-gcc
-> Kits -> Compilers -> Manual -> C++ -> Add -> GCC -> C++
-> Name:            aarch64-linux-g++
-> Compiler path:    /home/xxjianvm/work/rk3328_linux_release_v2.5.1_20210301_split_dir/rk3328_linux_release_v2.5.1_20210301/buildroot/output/rockchip_rk3328/host/bin/aarch64-linux-g++

-> Kits -> Qt Versions -> Manual -> Add -> /home/xxjianvm/work/rk3328_linux_release_v2.5.1_20210301_split_dir/rk3328_linux_release_v2.5.1_20210301/buildroot/output/rockchip_rk3328/host/bin/qmake

-> Kits -> Kits -> Manual -> Add
-> Name:    arm64
-> Compiler C:        aarch64-linux-gcc
-> Compiler C++:    aarch64-linux-g++
-> Qt version:        Qt version 5.12.2 for Embedded Linux


2. 界面 helloworld
通过开始界面打开 Qt Creator

2.1 创建工程
Qt Creator -> File -> New File or Project -> Application -> Qt Widgets Application -> choose

Location
-> Name:         hello2_qt
-> Create in:     /home/xxjianvm/work/workspace_qt/
-> Next

Kits ->
-> 全选 -> Next

Build System:
-> Build System: qmake -> Next

Details
-> Class Information:    hello2_qt -> Next

-> Finish

2.2 修改界面
双击 helloworld_ui/Forms/hello_qt.ui

添加 Push Button -> 
-> objectName: Btn_Hello
-> 右键 -> Go to slot... -> clicked() -> OK

修改ep4ce30Adc_LinuxQt.cpp:
#include <QtWidgets/QMessageBox>

void hello2_qt::on_Btn_Hello_clicked()
{

    QMessageBox msgBox;
    msgBox.setText("The document has been modified.");
    msgBox.exec();
}


修改 helloworld_ui.pro

QT       += core gui

修改为:
QT       += core gui
QT       += widgets

2.3 编译
左下角可以切换 Kit了。

3. 运行
3.1 PC
qt creator直接运行

3.2 DEV
拷贝
build-hello2_qt-arm64-Debug/hello2_qt
到板子上的
/root/hello2_qt

配置QT程序的启动的方式 
export QT_QPA_PLATFORM=vnc

方式2:启动程序时指定启动方式

启动参数
./hello2_qt -platform vnc:size=1280x10,port=12345

mobaterm,用VNC打开 192.168.3.237:12345,输入密码 firefly


参考:
[1]记录QTCreator如何更换套件(Kit),切换QT不同版本,https://blog.csdn.net/Wslience/article/details/132159413
[2]Qt-Vnc远程,https://www.cnblogs.com/yaronzz/p/15723128.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【系统移植三】uboot移植

开发板类型&#xff1a;emmc、7寸屏 1 NXP官方开发板uboot编译测试 1.1 获取源码 1&#xff09;源码路径&#xff1a;1、例程源码->4、NXP 官方原版 Uboot 和 Linux -> uboot-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2。 2&#xff09;将源码拷贝到ubuntu中的~/linux/IMX6…

Linux 目录结构与基础查看命令

介绍 目录结构如下 /bin&#xff1a;存放着用户最经常使用的二进制可执行命令&#xff0c;如cp、ls、cat等。这些命令是系统管理员和普通用户进行日常操作所必需的。 /boot&#xff1a;存放启动系统使用的一些核心文件&#xff0c;如引导加载器&#xff08;bootstrap loader…

采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示

采用C#.Net JavaScript 开发的云LIS系统源码 二级医院应用案例有演示 一、系统简介 云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序&#xff0c;可协助区域内所有临床实验室相互协调并完成日常检验工作&#xff0c;对区域内的检验数据进行集中管理和共享&#xff0…

4*5的矩阵(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int result 0;//嵌套循环输出&#xff1b;for (i 1; i < 4; i){//列…

L2正则化——解释为什么可以减少模型的复杂度

L2正则化是一种用于机器学习模型的技术&#xff0c;旨在减少模型的复杂度&#xff0c;从而提高其泛化能力。在L2正则化中&#xff0c;通过添加一个惩罚项&#xff0c;模型的权重被迫保持较小的值&#xff0c;这有助于防止过拟合&#xff0c;即模型在训练数据上表现良好但在未见…

【Python】OPC UA模拟服务器实现

目录 服务器模拟1. 环境准备2. 服务器设置3. 服务器初始化4. 节点操作5. 读取CSV文件6. 运行服务器 查看服务器客户端总结 在工业自动化和物联网&#xff08;IoT&#xff09;领域&#xff0c;OPC UA&#xff08;开放平台通信统一架构&#xff09;已经成为一种广泛采用的数据交换…

单链表的基本操作实现:初始化、尾插法、头插法、输出单链表、求表长、按序号查找、按值查找、插入结点、删除结点。

1.参考学习博文&#xff08;写的相当好的文章&#xff09;&#xff1a; http://t.csdnimg.cn/AipNl 2.关于我的总结&#xff1a; 定义单链表&#xff1a; typedef struct LNode {Elemtype data;struct LNode* next; }LNode; data用来存放元素值&#xff0c;next用来指向后…

【算法】反转链表

本题来源---《反转链表》 题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输…

医学图像三维重建与可视化系统 医学图像分割 区域增长

医学图像的三维重建与可视化&#xff0c;这是一个非常有趣且具有挑战性的课题&#xff01;在这样的项目中&#xff0c;可以探索不同的医学图像技术&#xff0c;比如MRI、CT扫描等&#xff0c;然后利用这些图像数据进行三维重建&#xff0c;并将其可视化以供医生或研究人员使用。…

C++中的继承与多态

一、继承&#xff1a; 1.什么是继承&#xff1f; 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象…

golang map总结

目录 概述 一、哈希表原理 哈希函数 哈希表和哈希函数的关系 哈希表的优势 哈希冲突 什么是哈希冲突 如何处理哈希冲突 链表法 开放寻址法 哈希表常见操作过程 存储数据 检索数据 删除数据 常用的哈希算法 哈希表的应用场景 二、golang map map的内部结构 h…

Docker Volume (存储卷)

什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着&#xff0c;当我们在容器中的这个目录下写入数据时&#xff0c;容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。在宿主机上…

选课成绩管理系统

文章目录 员工管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目&#xff08;9.9&#xffe5;&#xff09; 员工管理系统 一、项目演示 课程管理系统 二、项目介绍 基于springbootvue的前后端分离选课成绩管理系统 该系统可做课程管理…

基础算法之二分算法

前言 本次博客&#xff0c;将要介绍二分算法的基本原理以及如何使用&#xff0c;深入浅出 二分可以针对整型以及浮点型接下来对其讲解希望对小白有所帮助吧 整型的二分法 一般要在一个数组中猜出一个数是否存在我们可以遍历一遍整个数组&#xff0c;判断是否存在&#xff0…

使用Windows11自带的WSL安装Ubuntu Linux系统教程

WSL介绍 WSL全称Windows Subsystem for Linux&#xff0c;它是Windows10带来的新特性&#xff0c;用于Windows系统上的Linux子系统。也就是说&#xff0c;可以在Windows系统中获取Linux系统&#xff0c;这个过程无需通过虚拟机&#xff0c;而是直连计算机硬件。 简而言之&#…

Linux--进程间的通信-命名管道

前文&#xff1a; Linux–进程间的通信-匿名管道 Linux–进程间的通信–进程池 命名管道的概念 命名管道是一种进程间通信&#xff08;IPC&#xff09;机制&#xff0c;运行不同进程之间进行可靠的、单向或双向的数据通信。 特点和作用&#xff1a; 跨平台性&#xff1a;在W…

ResNet最新变体!性能反超Transformer,模型准确率达98.42%

目前ResNet&#xff08;残差网络&#xff09;有两大主流创新思路&#xff1a;一是与其他技术或模型结合&#xff0c;比如前文讲到的ResNetTransformer&#xff1b;二是在原始设计的基础上进行改进。 尽管ResNet通过残差学习有效改善了深层网络的训练和性能&#xff0c;但同时它…

永磁同步电机无感FOC(扩展卡尔曼滤波EKF位置观测控制)

文章目录 1、前言2、扩展卡尔曼滤波器原理2.1 预测阶段&#xff08;时间更新阶段&#xff09;2.2 校正阶段&#xff08;状态更新阶段&#xff09; 3、永磁同步电机EKF的模型4、永磁同步电机EKF的无位置状态观测仿真4.1 核心模块&#xff08;在滑膜、龙伯格、磁链等观测器基础上…

三角洲期刊投稿发表论文

《三角洲》杂志是由国家新闻出版总署批准&#xff0c;南通市委宣传部主管&#xff0c;南通日报社、南通市文学艺术界联合会主办的正规文学类期刊。适用于发表高品质文学学术作品&#xff0c;科研机构的专家学者以及高等院校的师生等具有原创性的学术理论、工作实践、科研成果和…

openEuler-23.03下载

下载地址&#xff1a;openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网 下载版本&#xff1a;openEuler-23.03-x86_64-dvd.iso