当前位置: 首页 > article >正文

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


http://www.kler.cn/a/581420.html

相关文章:

  • SQLiteStudio:一款免费开源跨平台的SQLite管理工具
  • 【Troubleshot】Qt 长按按键 keyPressEvent keyReleaseEvent 自动重复问题
  • QT通过DeepSeek API获取公式正常显示的方法
  • postgresql 15.2 用pgbackup搭建备库后,主从复制一直无法启动
  • 卷积神经网络与计算机视觉:从数学基础到实战应用
  • LeetCode 1447 最简分数
  • flink依赖版本选择
  • jmeter:登录接口的token用于下一个接口
  • ArcGIS Pro中字段的新建方法与应用
  • Leetcode2012:数组美丽值求和
  • 一文读懂IEC103 转 Modbus TCP
  • 光电感知赋能智能未来 灵途科技护航新质生产力发展
  • APlayer漂亮的音乐播放器
  • vscode 源代码管理
  • 使用ngnix进行负载均衡部署deepseek蒸馏版
  • 【NexLM 开源系列】如何封装多个大模型 API 调用
  • go的grpc
  • 使用服务器搭建开源问答平台Answer
  • Charles VPN 同时使用冲突问题,手机 wifi 连接电脑并接入内网
  • blender学习25.3.11