单片机和Linux嵌入式区别

1.单片机

单片机是一种集成电路,它能够在一个芯片上完成各种计算、控制和管理任务。单片机没有明确的分层,这是因为它通常被用来设计嵌入式系统,其程序结构和功能要根据具体的应用需求来设计。

在单片机的程序设计中,可以通过一些方法将程序分为不同的层次,比如可以将程序分为用户层和驱动层。用户层是指处理应用程序逻辑的部分,驱动层是指处理硬件驱动和底层操作的部分。

用户层是为了方便开发人员理解和维护程序而设计的,它包含了与具体应用相关的算法、业务逻辑和用户交互等代码。

驱动层主要负责与硬件交互的部分,包括与外设设备的通信、传感器数据的读取和控制信号的发送等。驱动层需要直接操作硬件,因为单片机的设计初衷就是用于控制和管理底层硬件。

分层设计可以提高程序的可维护性和扩展性,使不同部分的代码可以独立开发和测试。但这并不是单片机必须遵循的规范,它完全取决于开发者的需求和实际情况。

![2024-01-15T11:21:17.png][1]

单片机没有明确的分层,即单片机没有明确分为用户层驱动层,不过一位优秀的单片机工程师会有意地将程序分为用户层驱动层。单片机允许程序直接操作硬件
在这里插入图片描述

2.Linux系统

在Linux中,应用程序运行在用户空间(User-space),而硬件访问和控制通常在内核空间(Kernel-space)的驱动层中实现。应用程序通过系统调用(System Call)的方式与内核进行通信,通过系统调用可以请求内核的服务,例如访问硬件设备。

Linux内核提供了各种设备驱动程序,这些驱动程序负责控制和管理硬件设备,使应用程序无需直接操作硬件。应用程序可以通过调用相应的系统调用接口来请求内核执行特定的硬件操作。内核将根据驱动程序的逻辑和硬件设备的要求来进行相应的操作。

这种分层的设计有助于保证系统的稳定性和安全性,同时也简化了应用程序的开发过程。通过将硬件访问和控制的功能放在驱动层和内核空间中,可以提供统一且可靠的接口供应用程序使用,而不用担心不同应用程序直接操作硬件导致的冲突和安全问题。
在这里插入图片描述

Linux有明确的分层概念,Linux的应用层不能直接访问硬件,只能通过驱动层才有权限访问硬件。

3.总结

一般跑单片机的芯片成为MCU,跑Linux的芯片成为MPU。两款芯片很大的区别在于MPU芯片有MMU内存管理模块。

CPU可以通过直接访问RAM的地址来读取和写入数据,以实现对内存的管理和操作。CPU可以将数据从RAM中加载到寄存器中进行计算,然后再将计算结果存回RAM中。

GPIO是单片机用于与外部电路进行数字输入和输出的接口。CPU可以通过读取和写入GPIO引脚的状态来与外部设备进行通信。例如,CPU可以通过读取GPIO引脚的状态获取传感器数据,或者通过设置GPIO引脚的状态来控制执行器。
在这里插入图片描述

对于Linux操作系统,根据其设计理念和安全机制,应用程序在应用层是不能直接访问硬件资源的。而是通过内核提供的接口以及设备驱动程序来间接地访问硬件资源。

在Linux中,CPU通过Memory Management Unit (MMU)实现虚拟内存管理。MMU负责将应用程序的虚拟地址转换为物理地址,并进行有效的内存隔离和保护。这就意味着应用程序在运行时只能访问它所分配的虚拟内存空间,而无法直接访问硬件设备的物理地址。

对于硬件资源如GPIO等,Linux提供了文件系统抽象来进行访问,以及相应的设备驱动程序来控制和管理硬件资源。应用程序通过在文件系统中访问相应的设备文件,例如/dev/gpio,来与硬件进行交互。而实际的访问和操作则由设备驱动程序来处理。

设备驱动程序位于Linux内核空间中,负责管理和控制硬件设备。它们提供了一系列的系统调用接口和函数,使应用程序可以通过调用这些接口来请求内核执行特定的硬件操作,例如读取GPIO状态,向GPIO引脚发送信号等。

这种分层架构保证了应用程序的安全性和稳定性。通过将硬件访问和控制的功能封装在设备驱动程序中,并提供适当的接口给应用程序使用,可以确保资源的合理分配和保护,同时也降低了应用程序对硬件的直接访问可能带来的错误和安全风险。

Linux的CPU通过MMU间接访问ARM、GPIO等硬件,应用程序在应用层不能直接访问硬件,而是通过设备驱动程序通过内核提供的接口来间接访问硬件。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server Management Studio (SSMS) 备份数据库

文章目录 前言一、在界面上操作二、使用sql 代码操作总结 前言 之前的文章记录过如何使用sqlserver复制远程数据库到本地。这里补充下如何使用SQL Server Management Studio (SSMS) 备份。 传送门:sqlserver复制远程数据库到本地 一、在界面上操作 在 SQL Server …

AP上线配置流程

AP工作模式 相应地,AR路由器的WLAN工作模式分为FAT AP和AC两种模式,不同的模式对应不同的使用场景。 FAT AP模式:AR路由器作为FAT AP,独立为用户提供WLAN接入服务,无线网络的配置在FAT AP上单独配置。FAT AP模式主要…

链上繁荣,合作不断,外媒热议波场 TRON 2023 年度成绩

近日,权威外媒Theblock、美联社和Decrypt等就波场 TRON 2023大事件进行了年度盘点。报道指出,波场TRON网络在2023年取得了一系列的发展和合作,提升了其在Web3领域的地位。其中,波场TRON网络账户数量增加了 54%&#xf…

微信视频号提取视频工具和提取器有什么不同?怎么下载和使用!

微信视频号怎么提取视频和视频号提取器有啥区别?这个是最近问我特别多的小伙伴,今天就和大家讲讲两者有什么不同怎么使用! 视频号视频提取工具和提取器在早期区分的是网页工具和电脑上软件使用的一种方式,用户通过这些方式解决自…

深度系统QT 环境搭建

1.QT安装 不折腾最新版直接去商店搜索QT安装。 2.修改su密码,安装需要权限 打开一个终端,然后输入下面的命令:按照提示输入密码按回车就行。 sudo passwd 回车后会出现让你输入现在这个账户的密码: 3.编译环境安装。 安…

DHCP详解(配置小实验)

目录 一、DHCP 1、了解DHCP 2、使用DHCP的好处 3、HDCP的分配方式 4、DHCP协议中的报文 5、DHCP的租约过程 6、安装和配置DHCP服务 一、DHCP 1、了解DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)由Internet工作任务小组设计开发专门用…

计算机毕业设计 | vue+springboot高校宿舍管理系统(附源码)

1,绪论 研究背景 学生管理是学校教育系统的一个十分重要的部分,其中学生宿舍的管理又是学校管理中较复杂的一部分。学生宿舍不只是简单的一个居住场所,而是高校实施教育过程,培养人才不可或缺的一个硬件条件,是大学文…

docker-consul部署

目录 一、环境 二、consul服务器 三、registrator服务器 四、consul-template 一、环境 consul服务器 192.168.246.10 运行consul服务、nginx服务、consul-template守护进程 registrator服务器 192.168.246.11 运行registrator容器、运行ngi…

烟火检测/周界入侵/视频智能识别AI智能分析网关V4如何配置ONVIF摄像机接入

AI边缘计算智能分析网关V4性能高、功耗低、检测速度快,易安装、易维护,硬件内置了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,上报识别结果,并能进行语音告警播放。算法可按需组合、按…

uniapp中uview组件库Toast 消息提示 的使用方法

目录 #基本使用 #配置toast主题 #toast结束跳转URL #API #Props #Params #Methods 此组件表现形式类似uni的uni.showToastAPI,但也有不同的地方,具体表现在: uView的toast有5种主题可选可以配置toast结束后,跳转相应URL目…

sphinx,一个神奇的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个神奇的 Python 库 - sphinx。 Github地址:https://github.com/sphinx-doc/sphinx/ 在软件开发和项目管理中,文档是不可或缺的一部分。好的文档可以…

如何在Docker中搭建MinIO容器并实现无公网ip远程访问本地服务

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…

阿里云有哪些优势?为什么选择阿里云?

为什么选择阿里云?阿里云服务器有哪些优势?阿里云全球第三,国内第一云,阿里云服务器网aliyunfuwuqi.com分享云服务器ECS在丰富ECS实例架构、弹性灵活、稳定可靠、便捷易用、安全保障和成本优化多方面优势: 阿里云服务…

链动2+1模式:合法合规的商业奇迹,引爆裂变式增长!

在各平台都饱和的情况下,如何快速吸引用户并实现裂变式增长成为了众多企业和平台的共同难题。而链动21模式,作为一种新兴的商业模式,正在成为解决这一难题的有效途径。本文将深入解析链动21模式的奥秘,带你领略这种合法合规的商业…

kubesphere DevOps部署SpringCloud项目

🍎devops部署SpringCloud项目 🍅环境说明🍅部署流程🧁创建DevOps工程🧁填写流水线信息🧁创建流水线 🍅部署应用所需脚本🧁jenkinsfile🧁Dockerfile🧁deploy.y…

如何实现固定公网地址同步Zotero科研文献管理器

文章目录 一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 Zotero 是一款全能型 文献管理器,可以 存储、管理和引用文献,不但免费,功能还很强大实用。 ​ Zotero 支…

【稳定检索、投稿优惠】2024年区域经济与社会科学管理国际会议(ICRESSM 2024)

2024年区域经济与社会科学管理国际会议(ICRESSM 2024) 2024 International Conference on Regional Economic and Social Science Management(ICRESSM 2024) 一、【会议简介】 2024年区域经济与社会科学管理国际会议(ICRESSM 2024)将于厦门盛大召开。此次会议将聚焦“区域经济”…

如何才能把图片无损放大?这几个无损放大的方法分享给你们

在互联网的浩瀚海洋里,我们常常迷失在繁星般的图片之中,寻找那一款能映照出我们内心的头像。无论是渴望在社交媒体上熠熠生辉,还是在游戏世界中塑造独一无二的形象,一个与我们心灵相通的头像总能带给我们难以言喻的喜悦与满足。然…

Kubernetes API 和流量控制:管理请求数量和排队进程

本文描述了我们最近遇到的一个真实案例:Kubernetes API 因其中一个集群中的大量请求而瘫痪。今天,我们将讨论我们如何处理这个问题,并提供一些关于如何预防它的提示。 高并发搞崩 Kubernetes API 一个非常普通的早晨,我们开始了…

前端框架前置学习Node.js(2)npm使用,Node.js总结

npm - 软件包管理器 定义 npm是Node.js标准的软件包管理器 npm仓库中包含大量软件包,使其成为世界上最大的单一语言代码仓,并且可以确定几乎可用于一切的软件包 最初是为了下载和管理Node.js包依赖的方式,但其现在已成为前端JavaScript中使用的工具 使用: 1.初始化清单文…