Linux上位机开发实践(SoC和MCU的差异)

news2025/5/9 17:08:53

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        soc一般是指跑linux的芯片,而mcu默认是跑rtos的芯片,两者在基本原理方面其实差异不大。只不过,前者由于性能的原因,会被用在性能较高的场景之下,后者则多用于实时应用的场合,本质上两者的差别没有大家想象的那么大。

1、soc+ddr+flash=mcu

        mcu可以看成是soc、ddr、flash的一个集合体。mcu的cpu一般是8051,或者是arm,频率不是很高,通常是几十到上百M不等,内部集成了232等低速接口。ddr就是ram,一般几k到上百k,当然soc的内部用mmu管理ddr。flash就是代码存储的地方,一般也是几十到1M不等。这部分集成在一起,就是mcu。

        当然现在也有一种mcu是集成在soc里面,这种mcu,当成soc的一个设备节点就可以了。

2、mcu电源要求不高

        mcu的电压,大多数情况都是5v转3.3v。soc则要复杂的多,很多时候除了3.3v,可能还需要2.5v、1.8v、1.2v等等,所以为了简便,soc的外围很多时候会集成一个pmic芯片,专门用来负责不同电压的输出。

3、烧入方式稍有差异

        mcu目前swd烧入基本是标配,soc的话,则是usb otg烧入为主。mcu就是内部flash启动,soc则是spi nor、spi nand、emmc或者tf卡启动。至于晶振和复位,两者一样。

4、除非特定camera产品,mcu一般低速接口为主

        这里的低速接口就是大家一直使用的gpio、232、485、can、spi、i2c、pwm,少部分集成了sdio、usb和eth。有一些mcu是专门用来处理camera数据的,左边从mipi进来之后,经过isp,通过usb uvc协议送出去,这种专门处理camera的mcu芯片也是存在的,很多的usb相机也是这么做的。只不过这种芯片都是专款专用,除了camera,就不能用在其他方面了。与此相比较,soc则是聚集了很多高速的接口,这些接口都是以差分总线的形式存在。

5、mcu价格普遍不高

        大多数mcu的价格都是在10块钱以下,2-3块钱的mcu也是不稀奇,甚至是1块钱、几毛钱。当然,很多高端的mcu还是不便宜的,比如m7的mcu。soc的价格则相对贵一点,大部分都是10块钱以上,哪怕是f1c100s这样内部集成32m ddr的soc,价格也在1.5个美金,大约10块钱左右。

        当然要想soc运行起来,外部还要一个nandflash,这相当于成本上又多了几块钱。

6、mcu可以实现soc的大多数功能

        一般soc可以做的,mcu都可以做。比如传感器数据的处理、普通接口的处理、屏幕显示、网络通信、文件系统、usb通信等等,这部分mcu都可以完成。所以,mcu能做的工作事实上,要比大家认为的多得多。

7、图像数据是mcu、soc应用的分水岭

        对于低速数据,mcu和soc差异不大,但是高速总线部分,两者就慢慢拉开差距。比如复杂的soc,一般默认集成了isp,可以对图像数据进行编码、解码的处理,除此之外,soc通常还会集成npu,实现图像ai处理,这些都是目前为止soc才有的功能。

        图象处理是生产、生活中很大的一个应用,从最基础的显示、截图和录制,到rtsp低时延访问,再到工业相机、内窥镜、ai部分,这块市场其实非常大。mcu虽然也可以做一部分usb camera的工作,不过主力的实现还是通过soc+linux+加速ip来完成的。哪怕是usb camera,用mipi+soc+usb otg实现,效果也会更好,功能也会更全。

        有了图像数据,所有的配套都要修改,比如cpu频率要提高,ddr要扩大,flash要增大,算法要硬加速,网络传输也要更快,所以数据量的提高、需求的变化是嵌入式技术发展最本质的原因。

8、实时控制是mcu的拿手好戏

        一开始mcu就是被用来进行控制处理的,比如电机的控制周期是6ms、8ms这样,用windows或者linux是没有办法完成的,但是对mcu来说却是很容易做到的事情。所以,只要是涉及到实时处理的部分,哪怕外挂都会外挂一个mcu来处理。

9、mcu非常适合个人来做

        从软硬件协同的角度说,mcu非常适合个人来做,本身电路不复杂,而且大部分mcu的应用就是while(1)+中断的形式来进行,就算是需要上位机适配,做一个qt上位机就好了,自己可以把大部分精力放在业务端来进行,养活自己肯定是没有问题的。

        相比较而言,soc要复杂一点,首先电路涉及到soc+ddr+nand+pmic,弄好了硬件,接着还得继续搭建uboot/kernel/rootfs的框架,不同的外设还得找不同的驱动,哪怕是一个屏幕,还有spi、iic、rgb、mcu接口、mipi、hdmi、lvds等很多的标准。等到这些都做好了,才能开始业务开发。为了突出业务的竞争力,必须适配厂家的sdk平台,寻找开源代码,这方面自然就没有mcu方便。这一切都做好了之后,才能慢慢去找客户,找市场。相比较而言,mcu的开发要容易一点。

10、用到什么学什么

        mcu和soc没有明显的分水岭,不存在谁比谁高级的问题,客户需要什么,我们就做什么。技术再好,卖出去才行。所以大家没必要画地为牢、固步自封,只需要知道两者的区别,在不同的场景下选择哪种方案合适就好。

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

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

相关文章

ios app的ipa文件提交最简单的方法

ipa文件是ios的app打包后生成的二级制文件,在上架app store connect或做testflight测试的时候,它提示我们需要使用xcode、transporter或xcode命令行等方式来上传。 而xcode、transporter或xcode命令行的安装都需要使用mac电脑,假如没有mac电…

详细解释浏览器是如何渲染页面的?

渲染流程概述 渲染的目标:将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务&#xff0…

Nacos安装及数据持久化

1.Nacos安装及数据持久化 1.1下载nacos 下载地址:https://nacos.io/download/nacos-server/ 不用安装,直接解压缩即可。 1.2配置文件增加jdk环境和修改单机启动standalone 找到bin目录下的startup.cmd文件,添加以下语句(jdk路径根据自己…

FPGA_YOLO(四)用HLS实现循环展开以及存储模块

Vivado HLS(High-Level Synthesis,高层次综合)是赛灵思(Xilinx)在其 Vivado 设计套件 中提供的一款工具,用于将 高级编程语言(如 C、C、SystemC) 直接转换为 硬件描述语言&#xff0…

ASP.NET MVC 实现增删改查(CRUD)操作的完整示例

提供一个完整的 ASP.NET MVC 实现增删改查(CRUD)操作的示例。该示例使用 SQL Server 数据库,以一个简单的 Product 实体为例。 步骤 1:创建 ASP.NET MVC 项目 首先,在 Visual Studio 中创建一个新的 ASP.NET MVC 项目…

MCP理解笔记及deepseek使用MCP案例介绍

文章目录 一、MCP介绍(1)使用MCP与之前的AI比较(2)原理(3)优点 二、deepseek使用MCP使用案例介绍 一、MCP介绍 全称 模型上下文协议 来源 由Claude母公司Anthropic于24年底开源发布 简介 AI大模型的标准化…

# 手写数字识别:使用PyTorch构建MNIST分类器

手写数字识别:使用PyTorch构建MNIST分类器 在这篇文章中,我将引导你通过使用PyTorch框架构建一个简单的神经网络模型,用于识别MNIST数据集中的手写数字。MNIST数据集是一个经典的机器学习数据集,包含了60,000张训练图像和10,000张…

LeetCode:DFS综合练习

简单 1863. 找出所有子集的异或总和再求和 一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为 空 ,则异或总和为 0 。 例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 1 。 给你一个数组 nums ,请你求出 n…

Perf学习

重要的能解决的问题是这些: perf_events is an event-oriented observability tool, which can help you solve advanced performance and troubleshooting functions. Questions that can be answered include: Why is the kernel on-CPU so much? What code-pa…

齐次坐标变换+Unity矩阵变换

矩阵变换 变换(transform):指的是我们把一些数据,如点,方向向量甚至是颜色,通过某种方式(矩阵运算),进行转换的过程。 变换类型 线性变换:保留矢量加和标量乘的计算 f(x)…

Pandas取代Excel?

有人在知乎上提问:为什么大公司不用pandas取代excel? 而且列出了几个理由:Pandas功能比Excel强大,运行速度更快,Excel除了简单和可视化界面外,没有其他更多的优势。 有个可怕的现实是,对比Exce…

启动vite项目报Unexpected “\x88“ in JSON

启动vite项目报Unexpected “\x88” in JSON 通常是文件被防火墙加密需要寻找运维解决 重启重装npm install

HTTP测试智能化升级:动态变量管理实战与效能跃迁

在Web应用、API接口测试等领域,测试场景的动态性和复杂性对测试数据的灵活管理提出了极高要求。传统的静态测试数据难以满足多用户并发、参数化请求及响应内容验证等需求。例如,在电商系统性能测试中,若无法动态生成用户ID、订单号或实时提取…

关于一对多关系(即E-R图中1:n)中的界面展示优化和数据库设计

前言 一对多,是常见的数据库关系。在界面设计时,有时为了方便,就展示成逗号分割的字符串。例如:学生和爱好的界面。 存储 如果是简单存储,建立数据库:爱好,课程,存在一张表中。 但…

JVM笔记【一】java和Tomcat类加载机制

JVM笔记一java和Tomcat类加载机制 java和Tomcat类加载机制 Java类加载 * loadClass加载步骤类加载机制类加载器初始化过程双亲委派机制全盘负责委托机制类关系图自定义类加载器打破双亲委派机制 Tomcat类加载器 * 为了解决以上问题,tomcat是如何实现类加载机制的…

React 组件类型详解:类组件 vs. 函数组件

React 是一个用于构建用户界面的 JavaScript 库,其核心思想是组件化开发。React 组件可以分为类组件(Class Components)和函数组件(Function Components),它们在设计理念、使用方式和适用场景上有所不同。随…

GPT-SoVITS 使用指南

一、简介 TTS(Text-to-Speech,文本转语音):是一种将文字转换为自然语音的技术,通过算法生成人类可听的语音输出,广泛应用于语音助手、无障碍服务、导航系统等场景。类似的还有SVC(歌声转换&…

美信监控易:数据采集与整合的卓越之选

在当今复杂多变的运维环境中,一款具备强大数据采集与整合能力的运维管理软件对于企业的稳定运行和高效决策至关重要。美信监控易正是这样一款在数据采集与整合方面展现出显著优势的软件,以下是它的一些关键技术优势,值得每一个运维团队深入了…

End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱

摘要:本文介绍了一种将非结构化数据转换为知识图谱的端到端方法。通过使用大型语言模型(LLM)和一系列数据处理技术,我们能够从原始文本中自动提取结构化的知识。这一过程包括文本分块、LLM 提示设计、三元组提取、归一化与去重,最终利用 NetworkX 和 ipycytoscape 构建并可…

MySql 三大日志(redolog、undolog、binlog)详解

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/aa730ab3f84049638f6c9a785e6e51e9.png 1. redo log:“你他妈别丢数据啊!” 干啥的? 这货是InnoDB的“紧急备忘录”。比如你改了一条数据,MySQL怕自己突然断电嗝屁了&am…