【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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 cleanINCLUDE_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/QtCoreall: mainmain: main.o QtWidgetsApplication.o moc_QtWidgetsApplication.og++ -g $^ -o main -lQt5Widgets -lQt5Gui -lQt5Coremain.o: main.cpp QtWidgetsApplication.hg++ -fPIC -g -c main.cpp -o main.o $(INCLUDE_DIR)QtWidgetsApplication.o: QtWidgetsApplication.cpp QtWidgetsApplication.hg++ -fPIC -g -c QtWidgetsApplication.cpp -o QtWidgetsApplication.o $(INCLUDE_DIR)QtWidgetsApplication.h:ui_QtWidgetsApplication.hui_QtWidgetsApplication.h: QtWidgetsApplication.uiuic $^ -o ui_QtWidgetsApplication.hmoc_QtWidgetsApplication.o : moc_QtWidgetsApplication.cppg++ -fPIC -g -c moc_QtWidgetsApplication.cpp -o moc_QtWidgetsApplication.o $(INCLUDE_DIR)moc_QtWidgetsApplication.cpp : QtWidgetsApplication.hmoc -o moc_QtWidgetsApplication.cpp QtWidgetsApplication.hclean: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效果。