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

ops/2025/3/17 0:45:33/

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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效果。


http://www.ppmy.cn/ops/166358.html

相关文章

用Lua脚本实现Redis原子操作

1. 环境准备 依赖&#xff1a;在pom.xml中添加Spring Data Redis&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>配置RedisTemplate&#…

SpringBoot 开启配置绑定:@EnableConfigurationProperties

文章目录 EnableConfigurationProperties 开启单个配置属性绑定EnableConfigurationProperties 开启多个配置属性绑定EnableConfigurationProperties 的应用场景 EnableConfigurationProperties 是 SpringBoot 在 org.springframework.boot.context.properties 包下提供的一个…

OpenCV实现图像特征提取与匹配

‌一、特征检测与描述子提取‌ ‌选择特征检测器‌ 常用算法包括&#xff1a; ‌ORB‌&#xff1a;一种高效的替代SIFT和SURF的算法&#xff0c;主要用于移动机器人和增强现实等领域。适合实时应用&#xff0c;结合FAST关键点与BRIEF描述子‌。‌SIFT&#xff08;尺度不变特征变…

王者荣耀道具页面爬虫(json格式数据)

首先这个和英雄页面是不一样的&#xff0c;英雄页面的图片链接是直接放在源代码里面的&#xff0c;直接就可以请求到&#xff0c;但是这个源代码里面是没有的 虽然在检查页面能够搜索到&#xff0c;但是应该是动态加载的&#xff0c;源码中搜不到该链接 然后就去看看是不是某…

mac安装mysql之后报错zsh: command not found: mysql !

在Mac上安装MySQL后&#xff0c;如果终端中找不到mysql命令&#xff0c;通常是 因为MySQL的命令行工具&#xff08;如mysql客户端&#xff09;没有被正确地添加到你的环境变量中。 检查 MySQL 是否已安装 ps -ef|grep mysql查看到路径在 /usr/local/mysql/bin 查看 .bash_pro…

【SpringMVC】常用注解:@ModelAttribute

1.作用 该注解是在SpringMVC4.3版本后新加入的。它可以修饰方法和参数。出现在方法上&#xff0c;表示当前方法会在控制器的方法之前执行。它可以修饰 没有返回值的方法&#xff0c;也可以修饰没有返回值的方法。它修饰参数&#xff0c;获取指定 的数据给参数赋值。 当表单提…

多线程到底重不重要?

我们先说一下为什么要讲多线程和高并发&#xff1f; 原因是&#xff0c;你想拿到一个更高的薪水&#xff0c;在面试的时候呈现出了两个方向的现象&#xff1a; 第一个是上天 项目经验高并发 缓存 大流量 大数据量的架构设计 第二个是入地 各种基础算法&#xff0c;各种基础…

3ds Max 导入到 After Effects 还原摄像机要注意事项--deepseek

我&#xff1a;dp我这有两个脚本分别是syn软件相机导出到max的和syn软件相机导出到ae的&#xff0c;你能看出差别来吗&#xff1f;如果我想把max里的相机导入到ae里&#xff0c;保持原来的位置方向&#xff0c;该怎么做 dp&#xff1a;从这两个脚本可以看出&#xff0c;3ds Ma…