016-第三代软件硬件及系统选型

news2024/9/25 3:23:44
头图

第三代软件硬件及系统选型

文章目录

  • 第三代软件硬件及系统选型
    • 项目介绍
    • 硬件选型
    • 软件系统选型
    • 总结

关键字: QtQml研华ubuntux86

项目介绍

欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。

在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。

在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。

无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!

重要说明☝

☀该专栏在第三代软开发更新完将涨价

硬件选型

在这里插入图片描述

这个说来惭愧,就是本来这代系统设计之初就是因为第二代系统是使用QWidget开发,无法合理使用Arm GPU,所以为了合理利用 处理器,我们决定使用QML+C++开发,开始铺的时候,是在Windows下先写的框架,等移植到到板子上是,运行情况并不理想,比QWidget的效率还低,但是项目又进行到一定程度了,所以决定换型号,ARM 架构在功耗上有一定优势,但是我们是有源产品,功耗不是第一考虑因素,为了保险起见,我们还买了一个当下性能比较高的rk3588测试,结果还是很不理想。最终还是走上了换X86架构板子的路子。选板子就两个需求,成本最好和目前持平;尺寸也是最好和现在一样。

这里就要夸一下研华,ARM 的3.5寸板子和 X86的3.5寸板子的固定孔位都能对上,不管这是巧合还是研华的针对性设计,这里非常值得称赞,我们的结构都可以沿用第二代的;而且质量好的一批,EMC 从未出现过宕机,重启啥的情况,这里建议对成本不是特别在意的情况下,可以选择研华的产品。

最终,我们选择了一款4核心 主频可到3.0GHz的板子,内存硬盘采用8+128组合来满足我们当下软件需求。经过测试,满足需求。最终架构就是把原有的Arm板子换成我们的X86板子。下图依旧适用

image-20230630223606706

ARM架构和x86架构是两种不同的计算机处理器架构。

  1. 设计目标:ARM架构最初设计用于低功耗、嵌入式系统和移动设备,智能手机和平电脑。而x86架构主要用于个人电脑和服务器等高性能计算领域。

  2. 指令集:ARM架构使用RISC(精简指令集计算机)指令集,它有较少的指令集和固定长度的指令。而x86架构使用CISC(复杂指集计算机)指令集,它具有更多的指令和可变长度的指令。

  3. 性能和功耗:由于ARM架构的设计目标是低功耗,因此在相同功耗下,处理器通常比x86处理器具有更好的能效比。然而,在单个核心性能方面,x86处理器通常更强大,适用于需要高性能计的任务。

  4. 生态系统:ARM架构在移动设备和嵌入式系统领域拥有广泛的应用和支持,许多动应用程序和操作系统都是针对ARM架构开发的。而x86架构个人电脑服务器市场上占据主导地位,有更多的软件和操作系统支持。

  5. 可扩展性:ARM架构在多核处理器方面具有较好的可展性,可以实现更高的并行计算能力。而x86架构支持多核处理,但在某些情况下可能受到物理限制。

需要注意的是,随着技术的发,ARMx86架构之间的差距逐渐缩小。例如,ARM架构的性能不断提升,而x86架构也在努力降低功耗。此外,一些处理器还采用了混合构,将ARMx86结合在一起,以实现更灵活的应用场景。

软件系统选型

其实第二代软件我们也经历好几个月的时间,本应该继续沿用二代的Debian,我们和研华也是这么提的需求,研华还是很给力,做了适配,但是呢,尴尬的事情再次发生,我们测试的时候跑的是Ubuntu的系统,测试没有问题,但是当我们切换到Debian 下测试是,又回到的起点,非常的卡顿,正是因为这一个原因,导致我们不得不切换系统,最终选择了Ubuntu系统。

DebianUbuntu是两个流行的Linux发行版,它们有一些区别,包括以下几个方面:

  1. 基础:Ubuntu是基于Debian构建的。Debian是一个非常稳定和可靠的发版,而Ubuntu则在此基础上添加了一些额外的功能和改进。

  2. 发布周期:Debian发布新版本的周期相对较长通常需要几年时间。而Ubuntu采用期发布模式,每隔六个月发布一个新版本,并且每两年发布一个期支持(LTS)版本。

  3. 软件包选择:Debian注重件包的稳定性和安全性,因此在其件仓库中供的软件可能相对较旧。而Ubuntu更加注重最新的软件包和功能,因此它的软件仓库中通常包含更新的软包。

  4. 用户友好性:Ubuntu在用户友好性方面出了很多努力,提供了易于使用的图形界面和工具,使得初学者更容易上手。Debian则更注重自由和灵活性,更适合有经验的用户和系统管理员。

  5. 社区支持:Ubuntu拥有庞大社区支持,用户可以轻松地获取帮助和支持。Debian也一个活跃的社区,相对来说模较小。

总的来说,Debian更加注重稳定性和自由性,适合那些对系统控制有较高要求的用户和服务器环境。而Ubuntu则更加注重易用性和最新功能,适合桌面用户和那些希望快速搭建系统人。选择哪个发行版取决于你的需求和技术水平。

最后一句话真是好呀,选择哪个系统,取决于你的需求和技术水平,加油。

总结

第三代软件开局就意外,显示QMLArm 下意外的拉胯,颠覆了我对Qml 的第一影响,期次Ubuntu系统来自Debian ,运行软件效果却强于Debian,不知道为啥。意外+意外


博客签名2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1074607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java基础 日期工具类

目录结构: DateUtils.java package dateStudy; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class DateUtils {private static final String FORMAT_1"yyyy-MM-dd HH:mm:ss";//私有方法&#xf…

国家开放大学 模拟试题 训练

试卷代号:2136 管理会计 参考 试题 一、单项选择题(每小题1分,共20分) 1.管理会计依靠各种功能来助力企业战略,下列哪项是管理会计的核心功能( )。 A.评价功能 B.预测功能 C.决策功能…

计算机算法分析与设计(8)---图像压缩动态规划算法(含C++)代码

文章目录 一、知识概述1.1 问题描述1.2 算法思想1.3 算法设计1.4 例题分析 二、代码 一、知识概述 1.1 问题描述 1. 一幅图像的由很多个像素点构成,像素点越多分辨率越高,像素的灰度值范围为0~255,也就是需要8bit来存储一个像素的灰度值信息…

某果的一个小参数分析

分析链接:aHR0cHM6Ly9hcHBsZWlkLmFwcGxlLmNvbS9hY2NvdW50 分析目标:X-Apple-I-Fd-Client-Info 1.在浏览器搜索关键词,打下断点 我们再里面进行搜索,定位到这个位置,可以看到X-Apple-I-FD-Client-Info这个参数等于e,…

Netty深入浅出(无处不在的IO)

为什么要有Netty Netty是为了解决网络编程的复杂性和提供易于使用、高性能和可扩展的框架而开发的。它通过提供一组可重用的组件来处理网络通信的低级细节,例如套接字管理、线程和缓冲,简化了开发网络应用程序的过程。这使开发人员可以专注于应用程序逻…

前端学习| 第二章

CSS学习|第一章 前言一、概述1. 语法规定2. 代码风格 二、选择器1. 基础选择器标签选择器类选择器id选择器通配符选择器 2. 复合选择器后代选择器子元素选择器并集选择器伪类选择器链接伪类选择器focus 伪类选择器 三、引入方式四、显示模式1. 块元素2. 行内元素3. 行内块元素4…

FreeRTOS自我救赎3之USB虚拟串口

任何项目的功能都从需求出发,在这里我用的是斥侯蜂的一块STM32F407ZGT6 在开发一个项目的过程中,免不了串口调试,而这块板子板载的mircousb不是直接连的引脚而是一个OTGUSB

Qt实战 数据统计柱状图显示

前段时间有朋友找我做个问卷调查的软件,我说现在很多在线文档都有这功能,为啥还要使用Qt撸一个,他说要申请软著,我说,欧了。 我们先看看WPS在线问卷的统计中,柱状图统计的效果吧 我认为主要有以下几个关键…

集成显卡安装Pytorch

1、安装pytorch的第一步需要先安装Anaconda,安装步骤可看我这篇教程【Anaconda的下载与安装】 2、安装完Anaconda之后,第二步查看自己电脑的显卡类型,是集成显卡还是独立显卡,我的电脑是集成显卡,若你的是独立显卡&am…

磁盘满了对日志打印(Logback)的影响

背景 我们生产环境有一个服务半夜报警:磁盘剩余空间不足10%,请及时处理。排查后发现是新上线的一个功能,日志打太多导致的,解决方法有很多,就不赘述了。领导担心报警不及时、或者报警遗漏,担心磁盘满了对线…

OSPF的7大状态和5大报文详讲

- Down OSPF的初始状态 - Init 初始化——我刚刚给别人发Hello报文 我们可以将OSPF邻居建立的过程理解为:我和你打招呼,你和我打招呼,然后咱俩成了邻居 比如: R1和R2要建立OSPF邻居 R1给R2发送了Hello报文,但是R1此时…

如何提升和扩展 PostgreSQL — 从共享缓冲区到内存数据网格

利用共享缓存和操作系统缓存利用 RAM Postgres 是一个基于磁盘的数据库,即使您的整个架构是围绕磁盘访问设计的,利用 RAM 也很重要。如果按照人类规模的延迟来判断,这可以将延迟从几天缩短到几分钟(图 1)。只需看一下…

【SV中的多线程fork...join/join_any/join_none】

SV中fork_join/fork_join_any/fork_join_none 1 一目了然1.1 fork...join1.2 fork...join_any1.3 fork...join_none 2 总结 SV中fork_join和fork_join_any和fork_join_none; Note: fork_join在Verilog中也有,只有其他的两个是SV中独有的; 1 一目了然 1.…

CCF CSP认证 历年题目自练Day26

题目一 试题编号: 202012-1 试题名称: 期末预测之安全指数 时间限制: 1.0s 内存限制: 512.0MB 题目分析(个人理解) 还是先看输出,此题简单的离谱,第一行输入小菜有几个测评依据…

1.3 第一个JAVA程序

1.3 第一个JAVA程序 **1.3 第一个Java程序** **前言:** 在1.2节中,我们学习了如何搭建Java开发环境。本节将带你编写并执行你的第一个Java程序。 **1. 编写Java源文件** - 在JDK的bin文件夹下新建文本文档,并重命名为HelloWorld.java。 - 使用记…

Linux命令笔记

终端命令格式: bash command [-options] [parameter] 7个常见Linux命令: 01 ls | list | 查看当前文件夹下的内容 02 pwd | print work directory | 查看当前所在文件夹 03 cd [目录名] | change directory | 切换文件夹 04 touch [文件名] | touc…

使用ChatGPT和MindShow一分钟生成PPT模板

对于最近学校组织的实习答辩,由于时间太短了,而且小编也特别的忙,于是就用ChatGPT结合MindShow一分钟快速生成PPT,确实很实用。只要你跟着小编后面,你也可以快速制作出这个PPT,下面小编就来详细介绍一下&am…

idea(添加jsp文件模板)

代码模板 初始化&#xff1a; <%-- Created by IntelliJ IDEA. User: ${USER} Date: ${DATE} Time: ${TIME} To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-8" language&…

微服务09-Sentinel的入门

微服务中的雪崩现象 首先&#xff0c;我们介绍一下微服务中雪崩现象&#xff1a;因为微服务中服务是互相调用的&#xff0c;错综复杂&#xff0c;当一个服务D出现问题时&#xff0c;那么调用D的服务请求就会失败&#xff0c;当请求累积到一定的量时&#xff0c;请求D的服务也会…

常见排序算法Java版(待续)

冒泡排序O(n^2) public class Main {public static void main(String[] args) {Random random new Random();int[] nums new int[]{random.nextInt(100), random.nextInt(100), random.nextInt(100), random.nextInt(100), random.nextInt(100), random.nextInt(100)};for (i…