Linux上位机开发实践(SoC和MCU的差异)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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没有明显的分水岭,不存在谁比谁高级的问题,客户需要什么,我们就做什么。技术再好,卖出去才行。所以大家没必要画地为牢、固步自封,只需要知道两者的区别,在不同的场景下选择哪种方案合适就好。
相关文章:
Linux上位机开发实践(SoC和MCU的差异)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 soc一般是指跑linux的芯片,而mcu默认是跑rtos的芯片,两者在基本原理方面其实差异不大。只不过,前者由于性能的原…...
【基于Fluent+Python耦合的热管理数字孪生系统开发:新能源产品开发的硬核技术实践】
引言:热管理数字孪生的技术革命 在新能源领域(如动力电池、储能系统、光伏逆变器等),热管理是决定产品性能与安全的核心问题。传统热设计依赖实验与仿真割裂的流程,而数字孪生技术通过实时数据驱动与动态建模…...
ios app的ipa文件提交最简单的方法
ipa文件是ios的app打包后生成的二级制文件,在上架app store connect或做testflight测试的时候,它提示我们需要使用xcode、transporter或xcode命令行等方式来上传。 而xcode、transporter或xcode命令行的安装都需要使用mac电脑,假如没有mac电…...
详细解释浏览器是如何渲染页面的?
渲染流程概述 渲染的目标:将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务࿰…...
swift-12-Error处理、关联类型、assert、泛型_
一、错误类型 开发过程常见的错误 语法错误(编译报错) 逻辑错误 运行时错误(可能会导致闪退,一般也叫做异常) 2.1 通过结构体 第一步 struct MyError : Errort { var msg: String } 第二步 func divide(_ …...
如何查看HTTP状态码?
目录 一、HTTP状态码查看方法 1. 浏览器开发者工具 2. 命令行工具 3. 服务器日志分析 二、HTTP状态码分类与核心含义 1. 信息类(1xx) 2. 成功类(2xx) 3. 重定向类(…...
下采样(Downsampling)
目录 1. 下采样的定义与作用 2. 常见下采样方法 (1) 池化(Pooling) (2) 跨步卷积(Strided Convolution) (3) 空间金字塔池化(SPP) 3. PyTorch 实现示例 …...
PostgreSQL 常用客户端工具
PostgreSQL 常用客户端工具 PostgreSQL 拥有丰富的客户端工具生态系统,以下是各类常用工具的详细分类和介绍: 一 图形化客户端工具 1.1 跨平台工具 工具名称特点适用场景许可证pgAdmin官方出品,功能全面开发/运维PostgreSQLDBeaver支持多…...
Nacos安装及数据持久化
1.Nacos安装及数据持久化 1.1下载nacos 下载地址:https://nacos.io/download/nacos-server/ 不用安装,直接解压缩即可。 1.2配置文件增加jdk环境和修改单机启动standalone 找到bin目录下的startup.cmd文件,添加以下语句(jdk路径根据自己…...
ES关系映射(数据库中的表结构)
ES常见数据类型及用途 1. 基础类型 ES类型对应MySQL类型特点示例场景textVARCHAR/TEXT全文分词搜索,默认用标准分词器商品描述、日志内容keywordCHAR/VARCHAR精确匹配,不分词订单号、标签、枚举值(如状态码)longBIGINT64位整数ID、…...
FPGA_YOLO(四)用HLS实现循环展开以及存储模块
Vivado HLS(High-Level Synthesis,高层次综合)是赛灵思(Xilinx)在其 Vivado 设计套件 中提供的一款工具,用于将 高级编程语言(如 C、C、SystemC) 直接转换为 硬件描述语言࿰…...
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张…...
扩展虚拟机磁盘空间并使其在Linux系统中可用的步骤总结
VMware在虚拟机扩展空间时,若想扩展到150G,那么所在盘的空闲空间须大于150G,否则VM将不允许扩展。 1:确认新磁盘空间是否被识别 使用 lsblk 或 fdisk -l 命令检查 /dev/sda 的大小是否已经更新到新的容量(例如从原来的…...
A股周度复盘与下周策略 的deepseek提示词模板
以下是反向整理的股票大盘分析提示词模板,采用结构化框架数据占位符设计,可直接套用每周市场数据: 请根据一下markdown格式的模板,帮我检索整理并输出本周股市复盘和下周投资策略 【A股周度复盘与下周策略提示词模板】 一、市场…...
dev_set_drvdata、dev_get_drvdata使用详解
在Linux内核驱动开发中,dev_set_drvdata() 及相关函数用于管理设备驱动的私有数据,是模块化设计和数据隔离的核心工具。以下从函数定义、使用场景、示例及注意事项等方面进行详细解析: 一、函数定义与作用 核心函数 dev_set_drvdata() 和 dev…...
数据驱动未来:大数据在智能网联汽车中的深度应用
数据驱动未来:大数据在智能网联汽车中的深度应用 引言 随着智能网联汽车(Intelligent Connected Vehicles,ICV)的快速发展,数据已成为其核心驱动力。从实时交通数据到车辆传感器信息,大数据的深度应用正在让智能汽车更安全、更高效、更智能化。那么,大数据如何赋能智能…...
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)中的界面展示优化和数据库设计
前言 一对多,是常见的数据库关系。在界面设计时,有时为了方便,就展示成逗号分割的字符串。例如:学生和爱好的界面。 存储 如果是简单存储,建立数据库:爱好,课程,存在一张表中。 但…...
【gpt生成-总览】怎样才算开发了一门编程语言,需要通过什么测试
开发一门真正的编程语言需要经历完整的设计、实现和验证过程,并通过系统的测试体系验证其完备性。以下是分阶段开发标准及测试方法: 一、语言开发核心阶段 1. 语言规范设计(ISO/IEC 标准级别) 语法规范:BNF/…...
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(歌声转换&…...
美信监控易:数据采集与整合的卓越之选
在当今复杂多变的运维环境中,一款具备强大数据采集与整合能力的运维管理软件对于企业的稳定运行和高效决策至关重要。美信监控易正是这样一款在数据采集与整合方面展现出显著优势的软件,以下是它的一些关键技术优势,值得每一个运维团队深入了…...
