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

第一部分:编译rk3328 sdk

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

1. 安装依赖

sudo apt-get update

sudo 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-dev

sudo 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ //练习 12.26 用allocator重写第427中的程序。

C Primer&#xff08;第5版&#xff09; 练习 12.26 练习 12.26 用allocator重写第427中的程序。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /************************************************************************…

Linux入门攻坚——19、sed入门、bash脚本编程续

sed&#xff1a;Stream EDitor&#xff0c;流编辑器&#xff0c;行编辑器&#xff1a;实现文本编辑时是逐行进行的。 用法&#xff1a; sed [option]... script inputfile... script&#xff1a;‘地址命令’&#xff0c;如1,4d sed是将文件内容读取后放入自己的编辑…

Junit 历史-ApiHug准备-测试篇-008

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace 背景 J…

【人工智能书籍】一本书读懂AIGC:ChatGPT、AI绘画、智能文明与生产力变革(PDF分享)

今天又来给大家推荐一本人工智能方面的书籍<一本书读懂AIGC&#xff1a;ChatGPT、AI绘画、智能文明与生产力变革>。本书以通俗易懂的方式从各个层面介绍了AIGC的基础知识&#xff0c;并辅以大量案例引领读者了解AIGC的应用实践&#xff0c;让读者可以更快速地利用AIGC改善…

02节-51单片机-LED模块

文章目录 1.点亮一个LED灯2.LED闪烁3.LED流水灯 1.点亮一个LED灯 #include <REGX52.H> void main() {P20xFE; //1111 1110while(1){} }2.LED闪烁 增加延时&#xff0c;控制LED的亮灭间隙 延时函数的添加依靠STC-ISP软件的延时函数功能代码自动生成&#xff0c;如图 #i…

递归 python

↵一、简单理解 解决问题的一种方法&#xff0c;它将问题不断的分成更小的子问题&#xff0c;直到子问题可以用普通的方法解决。通常情况下&#xff0c;递归会使用一个不停调用自己的函数。 【注】&#xff1a;每一次递归调用都是在解决一个更小的问题&#xff0c;如此进行下…

数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)

数据库管理171期 2024-04-18 数据库管理-第171期 Oracle是用这种方式确保读一致的&#xff08;20240418&#xff09;1 基本概念2 用处3 注意事项总结 数据库管理-第171期 Oracle是用这种方式确保读一致的&#xff08;20240418&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#x…

Docker文档阅读笔记-How to Run GUI Based Applications inside Docker?

以后的文档阅读笔记不在一一介绍。以后只总结干货和重点。 Step 1 使用Systemctl命令启动docker服务&#xff1a; systemctl start docker // to start the docker service. systemctl status docker // to check the status . systemctl restart docke…

mybatis创建入门流程体验

mysql数据库中建表 drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30) );INSERT INTO tb_user VALUES (1, zhangsan, 123, 男, 北京); INSERT INTO tb_user …

四川易点慧电子商务抖音小店:安全先行,购物无忧

随着互联网的飞速发展&#xff0c;电子商务已成为人们日常购物的重要渠道。抖音小店作为新兴的电商平台&#xff0c;凭借其独特的社交属性和庞大的用户基础&#xff0c;迅速崛起并吸引了众多商家的入驻。在这个背景下&#xff0c;四川易点慧电子商务有限公司&#xff08;以下简…

Android11应用安装未知来源的权限改动

最近开发的App需要下载安装另一个App。这就涉及到了app的安装代码。关于App的安装代码&#xff0c;写了不少&#xff0c;所以这一块觉得不是问题&#xff1a; 判断版本&#xff0c;Android8.0判断是否有未知来源安装全选&#xff0c;没有则打开未知来源安装权限设置界面去开启…

Linux并发程序设计(1):进程的创建和回收

目录 1、基本概念概念 1.1 程序 1.2 进程 1.3 进程的内容 1.4 进程类型 1.5 进程状态 2、常用命令 2.1 查看进程信息 2.2 改变进程优先级 2.2.1 按用户指定的优先级运行进程 2.2.2 改变正在运行进程的优先级 2.3 其他相关指令 3、进程的创建和结束 3.1 子进程创建 3.1.1 …

Odoo讨论+聊天模块:一体化内部协作平台,赋能高效沟通与业务流程协作

Odoo讨论聊天模块&#xff1a;一体化内部协作平台&#xff0c;赋能高效沟通与业务流程协作 Odoo 讨论模块是一个集成了即时通讯、文件共享、业务关联、权限控制等功能于一体的内部协作工具&#xff0c;允许用户通过跨模块的聊天窗口或通过专用的“讨论”面板互相发送消息、分享…

Golang(一):基础、数组、map、struct

目录 hello world 变量 常量&#xff0c;iota 函数 init函数和导包过程 指针 defer 数组和动态数组 固定长度数组 遍历数组 动态数组 len 和 cap 截取 切片的追加 map 四种声明方式 遍历map 删除 查看键是否存在 结构体 声明 作为形参 方法 封装 继承…

笔记软件功能多样的是哪款?做笔记的软件哪个好用

在快节奏的现代生活中&#xff0c;笔记软件已成为我们提高工作效率、记录生活点滴的重要工具。想象一下&#xff0c;在繁忙的工作中&#xff0c;你能够快速记录下关键信息&#xff0c;或在灵感迸发时及时捕捉&#xff0c;这是多么方便高效。 一款功能多样的笔记软件&#xff0…

Syncovery for Mac:高效文件备份和同步工具

Syncovery for Mac是一款专为Mac用户设计的文件备份和同步工具&#xff0c;凭借其高效、安全和易用的特点&#xff0c;深受用户好评。 Syncovery for Mac v10.14.2激活版下载 该软件具备强大的备份功能&#xff0c;支持多种备份方案和数据格式&#xff0c;用户可以根据需求轻松…

Python教学入门:函数

在 Python 中&#xff0c;def 关键字用于定义函数。函数是一段可重用的代码块&#xff0c;用于执行特定的任务或操作。通过定义函数&#xff0c;可以将一段代码封装起来&#xff0c;使其可以在程序中被多次调用&#xff0c;提高代码的复用性和可维护性。 下面是 def 函数定义的…

pandas/python 一个实战小案例

上次写坦克游戏的时候&#xff0c;接触了一点pandas&#xff0c;当时只是简单了解了一下如何遍历行和列并获取值来替换图片&#xff0c;想更多了解pandas。正好有一些数据需要筛选&#xff0c;试试能不能用通过代码实现。虽然总的来说不复杂&#xff0c;但由于原始数据在命名、…

如何训练猫出门不害怕:耐心做好这些训练,轻松get能溜的小猫

一般我们外出见到的都是遛狗的&#xff0c;溜猫的相对少见&#xff0c;一方面是因为猫咪是喜欢安静独处的小动物&#xff0c;另一方面是糟乱的环境也容易引起猫咪的应激。对于是否应该“溜猫”&#xff0c;有两个极端的阵营。一些铲屎官认为应尊重猫的天性&#xff0c;胆小不爱…

如何使用AI写作扩写文章?看完这篇学会扩写

如何使用AI写作扩写文章&#xff1f;在数字化时代的浪潮下&#xff0c;人工智能&#xff08;AI&#xff09;已经深入渗透到我们生活的各个领域&#xff0c;其中&#xff0c;AI写作扩写技术更是以其高效、便捷的特点受到了广大用户的青睐。它不仅极大提升了写作效率&#xff0c;…