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效果。

相关推荐
刘某的Cloud14 分钟前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume
酸菜。2 小时前
dw_axi_dmac总结
linux
神奇霸王龙2 小时前
Agent 准入门控屠夫:5 旗舰 4 维度评估
linux·运维·数据库·ai·ai作画·agent·ai编程
cfm_29143 小时前
基于Binlog实现不停机数据库平滑迁移技术
运维·数据库·架构
迪康Defender3 小时前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
zlinear数据采集卡4 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
HiDev_4 小时前
【非标自动化】2、认识元器件(固态继电器)
运维·自动化
明达智控技术5 小时前
国产 PLC 落地立库自动化,MC5000边缘智能控制器破局
运维·自动化
小绫网络安全5 小时前
Kali Linux渗透测试入门教程:从零搭建到实战攻防
linux·运维·服务器
西安景驰电子5 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php