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

news2024/11/26 2:28:37

第一部分:编译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

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

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

相关文章

汽车充电桩充电效率的四大决定因素

随着电动汽车的快速普及&#xff0c;交流充电桩作为电动汽车的充电基础设施&#xff0c;其充电效率受到了广泛的关注。接下来&#xff0c;我们将深入探讨交流充电桩的充电效率&#xff0c;包括充电效率的定义、影响因素以及提升方法。 充电效率的定义 交流充电桩的充电效率指的…

Transformer with Transfer CNN for Remote-Sensing-Image Object Detection

遥感图像&#xff08;RSI&#xff09;中的目标检测始终是遥感界一个充满活力的研究主题。 最近&#xff0c;基于深度卷积神经网络 (CNN) 的方法&#xff0c;包括基于区域 CNN 和基于 You-Only-Look-Once 的方法&#xff0c;已成为 RSI 目标检测的事实上的标准。 CNN 擅长局部特…

基于springboot实现编程训练系统设计项目【项目源码+论文说明】计算机毕业设计

基于springboot实现编程训练系统设计演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了编程训练系统的开发全过程。通过分析编程训练系统管理的不足&#xff0c;创建了一个计算机管理编程训练系统的方案。文…

【软件工程与实践】(第四版)第5章习题答案详解

第5章 一、填空题二、选择题三、简答题四、实践题 一、填空题 (1) 软件工程中的总体设计又称为 系统设计。 (2) 在软件工程中的设计阶段&#xff0c;需要充分体现软件工程的“模块化”“抽象”“信息隐藏”等基本原则。 (3) 系统详细设计阶段最后产生的文档是 软件设计文档。…

创建SpringBoot控制台程序并打包运行(Windows)

1. 新建一个Springboot项目Study (PS&#xff1a; 这个不需要演示了吧?) 注意pom.xml&#xff0c;是spring-boot-starter&#xff0c;不是spring-boot-web-starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

[spring] Spring Boot REST API - CRUD 操作

Spring Boot REST API - CRUD 操作 这里主要提一下 spring boot 创建 rest api&#xff0c;并对其进行 CRUD 操作 jackson & gson 目前浏览器和服务端主流的交互方式是使用 JSON(JavaScript Object Notation)&#xff0c;但是 JSON 没有办法直接和 Java 的 POJO 创建对应…

IO引脚服用和映射

什么是端口复用 STM32F4 有很多的内置外设&#xff0c;这些外设的外部引脚都是与 GPIO 复用的。也就是说&#xff0c;一个 GPIO如果可以复用为内置外设的功能引脚&#xff0c;那么当这个 GPIO 作为内置外设使用的时候&#xff0c;就叫做复用。在芯片数据手册或STM32F4XX参考手…

光纤和铜缆:了解不同通信媒介的优势

在现代通信技术中&#xff0c;光纤和铜缆是两种主要的数据传输媒介。它们各有优势和局限性&#xff0c;但都在我们的日常生活中扮演着不可或缺的角色。 左侧&#xff08;网络跳线&#xff09;右侧&#xff08;光纤跳线&#xff09; 一、光纤的原理与优势 ADOP光纤跳线 光纤通信…

Day38: 动态规划 LeedCode:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 蓝桥杯: 更小的数

对于动态规划问题&#xff0c;拆解为如下五步曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化(容易数组溢出)确定遍历顺序举例推导dp数组 509. 斐波那契数 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐…

STM32 HAL库F103系列之ADC实验(1)

ADC工作原理&#xff1a; 1、输入通道&#xff1a; 2、转换序列&#xff1a; A/D转换被组织为两组&#xff1a;规则组&#xff08;常规转换组&#xff09;和注入组&#xff08;注入转换组&#xff09; 规则组最多可以有16个转换&#xff0c;注入组最多有4个转换 规则组和注入…

艾迪比皮具携手工博科技SAP ERP公有云,打造数字化转型新标杆

4月1日&#xff0c;广州市艾迪比皮具有限公司&#xff08;以下简称“艾迪比”&#xff09;SAP S/4HANA Cloud Public Edition&#xff08;以下简称“SAP ERP公有云”&#xff09;项目正式启动。双方项目组领导、成员出席本次项目启动会&#xff0c;为未来项目的顺利实施打下坚实…

Computer Organization/Architecture 计算机组织/架构/结构 重要观念和笔记(陆续更新中,2024/04/17周三,已更新)

前情提要&#xff1a;我的说法比较白话&#xff0c;希望可以更好理解其中一些观念&#xff0c;这篇会以中文为主&#xff0c;专有名词还是用英文&#xff0c;好吧应该会中英穿插&#xff0c;自己学的时候感觉听中文会吸收比较快&#xff0c;也可能是我英文比较烂的关系&#xf…

软件产品许可证书 Licence 全流程研发(使用非对称加密技术,既安全又简单)

本篇博客对应的代码地址&#xff1a; Gitee 仓库地址&#xff1a;https://gitee.com/biandanLoveyou/licence 源代码百度网盘链接: https://pan.baidu.com/s/1_ZhdcENcrk2ZuL11hWDLTQ?pwdbmxi 提取码: bmxi 1、背景介绍 公司是做软件 SAAS 服务的&#xff0c;一般来说软件部…

《操作系统导论》第26章读书笔记:并发:介绍

《操作系统导论》第26章读书笔记&#xff1a;并发&#xff1a;介绍 —— 杭州 2024-04-18 夜 文章目录 《操作系统导论》第26章读书笔记&#xff1a;并发&#xff1a;介绍0.前言1.实例&#xff1a;线程创建(略)2.为什么更糟糕&#xff1a;共享数据(略)3.核心问题&#xff1a;不…

基于Springboot+Vue的Java项目-企业客户管理系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

uiautomation、pytest、schedule实现桌面程序自动化(初级)02

一&#xff1a;安装uiAutomation 前置条件:安装python、pycharm 命令行安装 Pip install uiautomation2.0.17 #指定版本 二&#xff1a;安装辅助工具&#xff1a;inspect.exe和、Accessibility Insights For Windows定位元素工具 辅助工具介绍 步骤中提到…

【每天一个linux小知识】tailf 和 tail -f

目录 典型使用场景区别 典型使用场景 如果我们实时查看文件的末尾内容&#xff0c;特别是当文件持续写入时&#xff0c;可以使用tailf 和 tail -f。两者都可以显示文件的最后几行内容&#xff0c;并且在文件被追加新内容时&#xff0c;会实时显示这些新内容。 tailf演示 区别 …

逆向案例二十八——红某点集登录接口逆向序

网址&#xff1a;aHR0cHM6Ly93d3cuaHJkanl1bi5jb20vIy9sb2dpbj9yZWRpcmVjdD0lMkZyZWFsVGltZUxpdmluZw 登录接口&#xff0c;发现两个参数加密&#xff0c;分别是pwd和sig,t很明显是时间戳。 观察pwd,发现很像md5加密&#xff0c;我输入的密码是123456&#xff0c;在在线加密网…

mac安装nvm详细教程

0. 前提 清除电脑上原有的node (没有装过的可以忽略)1、首先查看电脑上是否安装的有node,查看node版本node -v2、如果有node就彻底删除nodesudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*}2、保证自己的电脑上有安装git,不然下载n…

Python基于Django的旅游城市关键词分析和提取,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…