Linux上位机开发实战(x86和arm自由切换)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

前面我们说过,qt本身支持windows系统,也支持linux系统。不仅如此,qt除了支持传统的x86 cpu之外,还支持arm、aarch64 cpu。这样的话,就有很多、很多的好处,我们一一道来。

1、跨OS平台编译

所谓的跨平台,就是如果喜欢windows开发的朋友,可以先使用visual studio做完界面开发之后,再port到嵌入式设备也是可以的。一般来说,界面部分都比较繁琐,所以调整和细节优化的工作非常多。这一部分对于使用习惯windows平台的同学来说,还是非常方便的。

2、没有板子可以先ubuntu虚拟机开发

很多时候,嵌入式arm平台的资源本来就不是很多。上面未必有g++编译环境、gdb调试环境。这种情况下,完全可以先在ubuntu完成大部分linux工作的开发,然后切换到嵌入式设备上面去。很多时候,pc资源要比嵌入式设备多得多,调试也很方便。

3、Makefile切换也很容易

前面我们说过,尽量使用Makefile的方式来进行软件开发。这个时候,优势就体现出来了。如果我们在嵌入式平台开发的软件,完全可以提前在x86 pc平台开发好,等到板子ready了之后,再port到板子上也是完全可以的。所要做的工作,就是切换一下Makefile即可,比如arm的Makefile改一下,就是x86_64的Makefile,

.PHONY: all clean

INCLUDE_DIR=-I /usr/include/x86_64-linux-gnu/qt5 \
            -I /usr/include/x86_64-linux-gnu/qt5/QtWidgets\
            -I /usr/include/x86_64-linux-gnu/qt5/QtGui \
            -I /usr/include/x86_64-linux-gnu/qt5/QtCore

all: main

main: main.o QtWidgetsApplication.o moc_QtWidgetsApplication.o
	g++ -g $^ -o main -lQt5Widgets -lQt5Gui -lQt5Core

main.o: main.cpp QtWidgetsApplication.h
	g++ -fPIC -g -c main.cpp -o main.o $(INCLUDE_DIR)

QtWidgetsApplication.o: QtWidgetsApplication.cpp QtWidgetsApplication.h
	g++ -fPIC -g -c QtWidgetsApplication.cpp -o QtWidgetsApplication.o $(INCLUDE_DIR)

QtWidgetsApplication.h:ui_QtWidgetsApplication.h

ui_QtWidgetsApplication.h: QtWidgetsApplication.ui
	uic $^ -o ui_QtWidgetsApplication.h

moc_QtWidgetsApplication.o : moc_QtWidgetsApplication.cpp
	g++ -fPIC -g -c moc_QtWidgetsApplication.cpp -o moc_QtWidgetsApplication.o $(INCLUDE_DIR)

moc_QtWidgetsApplication.cpp : QtWidgetsApplication.h
	moc -o moc_QtWidgetsApplication.cpp QtWidgetsApplication.h

clean:
	rm -rf main *.o ui_*.h moc_*.cpp

4、外设接口部分先打桩

很多嵌入式开发会涉及到232/485/can/usb/ethernet,这里面除了usb/以太网之外,大部分功能没有办法在pc上做实际功能的开发,因此这个时候可以先做打桩处理。打桩的函数不需要写的很具体,保证整体工程可以编译通过即可。等到后期硬件ok了,再放开即可。如果比较紧急,打桩函数简单实现一下也行,这样可以保证项目进展的推动。

5、soc硬件加速一定要使用起来

我们使用嵌入式设备除了方便、便捷之外,很大的一个原因就是成本。很多soc,本身就是为了特定场景来设计的。所以这种情况下,如果遇到cpu比较差的嵌入式设备,不能把所有的功能全部用cpu来完成,这样肯定是没有办法达到满意效果的。**比较好的做法,就是尽可能把soc的硬件加速功能用起来,这里包括不限于硬件编码、解码、crc计算、dma、gpu、npu、mcu、显示加速等等。**总是,板子上有什么资源,都尽可能用起来,这样才能用很少的钱,就能实现一样的pc效果。

相关推荐
好多知识都想学4 分钟前
第二章Linux 命令概述
linux·运维·服务器
wo3258661456 分钟前
浪潮英政服务器CS5420H2配置阵列时报错The reguested command has inualid arguments.解决方法
运维·服务器
熊峰峰12 分钟前
Linux第0节:Linux环境的搭建
linux·运维·服务器
一点多余.14 分钟前
nginx的使用
运维·nginx
鸭梨山大。34 分钟前
linux命令-iptables与firewalld 命令详解
linux·运维·网络
半夏知半秋40 分钟前
linux下的网络抓包(tcpdump)介绍
linux·运维·服务器·网络·笔记·学习·tcpdump
o0o_-_1 小时前
【瞎折腾/ragflow】构建docker镜像并部署使用ragflow
运维·docker·容器
深思慎考1 小时前
Linux——进程间通信初解(匿名管道与命名管道)
java·linux·服务器
深思慎考1 小时前
Linux——进程间通信(system V共享内存)
linux·服务器·算法
Watink Cpper1 小时前
[多线程]基于环形队列(RingQueue)的生产者-消费者模型的实现
linux·运维·服务器·消费者·生产者·生产者消费者模型