写点什么

聊一聊物联网嵌入式芯片的内容结构

发布于: 刚刚

摘要:物联网嵌入式芯片,存储是数据核心之一,这个对于编程和设计的人来说又比较陌生,今天来说说 MCU 中的内存结构。


本文分享自华为云社区《漫谈嵌入式系统的内存》,作者:o0 龙龙 0o 。

前言

物联网嵌入式芯片,存储是数据核心之一,这个对于编程和设计的人来说又比较陌生,今天来说说 MCU 中的内存结构

1、存储器形式

MCU 的存储器从存储特性上分为:易失性存储器、非易失性存储器,即常说的 Volatile memory 和 Non-volatile memory


随机存取存储器 :1、DRAM(动态随机存储器)、2、SRAM(静态随机存储器)一般 MCU 的内存多采用 SRAM 构成,主要原因是速度快、结构简单。


非易失性存储器(Non-volatile memory)是指即使电源供应中断,存储器所存储的资料并不会消失,重新供电后,就能够读取存储器中的资料。 主要种类如下:


  • 只读存储器(ROM)

  • 可编程式只读存储器(PROM)

  • 可擦除可规划式只读存储器(EPROM)

  • 电子抹除式可复写只读存储器(EEPROM)

  • Flash ROM

  • 磁存储、硬盘、软盘、磁带、3D XPoint、固态硬盘、光存储、光盘


其中 PROM、Flash 一般作为 MCU 数据程序存储器,不过现在也有很多 MCU 内挂 EEPROM,方便用户写入临时数据。


可擦除可编程式只读存储器


是一种断电后仍能保留数据的计算机存储芯片、它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。一旦资料写入完成后,EPROM 只能用强紫外线照射来擦除。我们常说的 24C 芯片就是这类的存储器芯片,他可以按照 Byte 去擦鞋数据,比按照扇区擦写的 Flash 效果高很多。

2、数据存储


内存的数据一般可以分为堆、栈、程序代码、数据代码、全局变量代码


一般如下分布:

堆内存(也称内存池)的起始地址及堆区域总大小是 LiteOS 对程序堆的解释,就是一段 AP 程序所占用的内存大小,这些大小由链表或是二叉树组成,用于该程序段内存的占用。


栈——堆栈(:stack)又称为栈或堆叠,是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,:top)进行加入数据(:push)和移除数据(:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。在 MCU 由系统 LiteOS 对剩余内存进行分配用于程序的局部变量的使用和数据 malloc 产生新分配的内存。


bss 段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。bss 是英文 Block Started by Symbol 的简称。bss 段属于静态内存分配。


data 段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。


text 段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域,一般存放在 ROM 中。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序)。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

我么编程时很少会设计到这些的设计,往往是由系统 LiteOS 自动完成或是由编译器完成。

3、如何利用程序设计内存呢?

宏命令:


#pragma alloc_text( "textsection", function1, ... )命名特别定义的函数驻留的代码段。该编译指示必须出


现在函数说明符和函数定义之间。


#pragma code_seg( ["section-name"[,"section-class"] ] )指定分配函数的代码段。code_seg 编译指示为


函数指定默认的段。你也能够像段名一样指定一个可选的类名。使用没有段名字符串的 #pragma code_seg 将恢复分配到编译开始时候的状态。


#pragma const_seg( "MY_DATA" )


导致在 #pragma 语句后面的常量数据分配在一个叫做 MY_DATA 的段中。


#pragma const_seg( ["section-name"[, "section-class"] ] )指定用于常量数据的默认段。data_seg 编译


指示除了可以工作于所有数据以外具有一样的效果。你能够使用该编译指示将你的常量数据保存在一个只读的段中。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
聊一聊物联网嵌入式芯片的内容结构