嵌入式系统中,FLASH中的程序代码必须搬到RAM中运行吗?

2023-11-01 04:20

本文主要是介绍嵌入式系统中,FLASH中的程序代码必须搬到RAM中运行吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个问题,核心还是得看你用什么芯片方案!

嵌入式系统涉及技术栈特别庞大,不仅仅大家理解的ARM+Linux而已。

我从业11年,也只敢说对其中一个方向熟悉而已。

嵌入式系统中,核心单元就是整个系统的”大脑”,类似于计算机的cpu。

我不严谨地称它为处理器,免得杠精喷。

不同的处理器,性能是不一样的,从性能上分为以下几种:

 

由不同的嵌入式处理器,又衍生出不同的职业方向,主流的有以下几个:

1.单片机工程师

2.Linux驱动开发

3.Linux系统开发工程师

4.Linux应用工程师

5.安卓系统开发工程师

6.FPGA/DSP开发

 

不同的处理器类型程序运行方式也不一样,不能一概而论。

我拿主流的两种来对比:

1.嵌入式微控制器(MCU)

也就是单片机,比如8051、LPC2132、STM32等等、芯片程序存储区都是在片内nor flash。

Nor flash能直接像内存RAM一样寻址,所以单片机能直接从内部FLASH运行程序。

2.嵌入式微处理器MPU

一般就是大家所说得ARM+Linux。

但并不是所有的ARM都需要跑Linux的,STM32也属于ARM,但是大多数都是”裸机编程”,最多跑个RTOS。

一般ARM+Linux的在是将程序存在外部存储器件里,比如nand flash等等。

程序执行前,会从外部存储(比如nand flash)中里读取程序放入ram中运行,cpu从ram里面读取程序和数据。

3.总结

是否需要搬运到ram,具体是看大家用什么芯片方案。

大家可以简单理解成,如果你是单片机开发的,就是直接从片内nor flash读程序执行。

如果是ARM+Linux就需要搬运到ram执行。

单片机一般几百kb程序的项目已经挺大了,而ARM+Linux随便都是几十MB,这种体量的程序,用内置Nor flash的话,技术上能否实现暂且不说,成本这块不可估量。

最后彩蛋时间!!!

最近很多小伙伴找我要一些单片机学习资料,然后我根据自己从业十年经验,熬夜肝了几个通宵,精心整理一份「单片机入门到高级教程+工具包」,全部无偿共享给大家!!!

除此以外,再含泪分享我压箱底的22个热门开源项目,包含源码+原理图+PCB+说明文档,让你迅速进阶成高手!

据说有小伙伴靠这份资料顺利进入BAT大厂,所以保存了一定要好好学习。

教程资料包和详细的学习路径可以看我下面这篇文章的开头。

单片机入门到高级开挂学习路径(附教程+工具)icon-default.png?t=M3K6https://blog.csdn.net/weixin_43982452/article/details/114134096

 

这篇关于嵌入式系统中,FLASH中的程序代码必须搬到RAM中运行吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_43982452/article/details/124340746
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/320458

相关文章

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

eclipse如何运行springboot项目

《eclipse如何运行springboot项目》:本文主要介绍eclipse如何运行springboot项目问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目js录当在eclipse启动spring boot项目时出现问题解决办法1.通过cmd命令行2.在ecl

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

使用Python和SQLAlchemy实现高效的邮件发送系统

《使用Python和SQLAlchemy实现高效的邮件发送系统》在现代Web应用中,邮件通知是不可或缺的功能之一,无论是订单确认、文件处理结果通知,还是系统告警,邮件都是最常用的通信方式之一,本文将详... 目录引言1. 需求分析2. 数据库设计2.1 User 表(存储用户信息)2.2 CustomerO

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定