返回首页  设为首页  加入收藏  今天是:
网站首页电脑主板电脑cpu电脑内存电脑硬盘电脑显卡电脑电源显示器电脑配件电脑维修
相关文章
 STM32 内存分配详解
 显卡价格行情(2022年6月25日…
 2022年装机攻略:显卡涨价分…
 电脑显卡多少钱一个(2022年…
 比卓越更出色 游戏悍将霸道6…
 英特尔将推新版12VHPWR电源接…
 英特尔将推新版 12VHPWR 电源…
 哈德教育退费:2006年4月全国…
 魔兽世界plus下载不了、下载…
 怎么创建加密磁盘?加密磁盘…
 华硕电脑维修-丫丫百科
 我要投诉 刚买的华硕笔记本电…
 消费者新买的华硕笔记本严重…
 售价4599元起 大屏超联接笔记…
 商用笔记本电脑联想昭阳X5-1…
 联想昭阳新品商用笔记本电脑…
 让台式秒变触摸电脑手机变超…
 需入会: HKC 27英寸 2K显示…
 微星发布便携式游戏显示器:…
 one新作bugego(ONEXIN)
 给电脑注入强劲动力市售主流…
 关于电脑主板挑选要注意的一…
 DC城假货泛滥 2000多配件涉嫌…
 零配件-电子发烧友网
 电子装备
 凯迪拉克XT5
 imtoken安卓版(以太坊价格行…
 TP钱包app最新版(小狐狸钱包…
 RTX 4060会像2080 Ti一样强大…
 4080显卡性能推测怎么样 408…
 英伟达老显卡焕发新春:帧率…
 DM1096 环保记录仪
 低功耗GaN在常见交流直流电源…
 得润电子
 电脑硬盘在机箱哪个位置图解
 电脑哪个是硬盘
 使用移动硬盘要注意的地方(…
 58同城上门维修电脑
 南昌电工上门修漏电跳闸换空…
 关注灵活就业平台细分市场促…
 AI势头不可阻挡!英特尔酷睿…
 轻启“芯”纪元 首台酷睿Ult…
 移动办公轻薄本新标杆:华硕…
 仅1英寸厚!平板电视超薄壁挂…
 不支持壁挂显示器怎么用支架…
 十一国货当自强 国产优秀液晶…
 主板维修信息
 苹果保修政策不合理!终于被…
 苹果售后严重翻车原因令人无…
 【装机帮扶站】第928期:500…
专题栏目
网络
您现在的位置: 电脑评测网 >> 电脑内存 >> 正文
高级搜索
STM32 内存分配详解
作者:佚名 文章来源:本站原创 点击数: 更新时间:2023/12/27 4:41:31 | 【字体:

  七日宠姬bss 段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域;

  数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域;

  代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域;

  这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读(某些架构也允许代码段为可写,即允许修改程序);

  堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减;

  当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);

  也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量);

  除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中;

  由于栈的先进先出(FIFO)特点,所以栈特别方便用来保存/恢复调用现场;

  2.6、一个程序本质上都是由 bss 段、data 段、text 段三个组成

  在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配,存储单元占用空间大小的问题。

  在采用段式内存管理的架构中(比如intel的80x86系统),bss 段通常是指用来存放程序中未初始化的全局变量的一块内存区域。

  一般在初始化时 bss 段部分将会清零,bss 段属于静态内存分配,即程序一开始就将其清零了。

  比如,在C语言之类的程序编译完成之后,已初始化的全局变量保存在.data 段中,未初始化的全局变量保存在.bss 段中。

  text和data段都在可执行文件中(在嵌入式系统里一般是固化在镜像文件中),由系统从可执行文件中加载,而bss段不在可执行文件中,由系统初始化。

  区别很明显,一个位于.bss段,而另一个位于.data段,两者的区别在于:

  bss 段(未手动初始化的数据)并不给该段的数据分配空间,只是记录数据所需空间的大小;

  bss 段的大小从可执行文件中得到 ,然后链接器得到这个大小的内存块,紧跟在数据段后面。

  data 段(已手动初始化的数据)则为数据分配空间,数据保存在目标文件中;

  data 段包含经过初始化的全局变量以及它们的值,当这个内存区进入程序的地址空间后全部清零。

  STM32 的存储器结构中 Flash,SRAM 寄存器和输入输出端口被组织在同一个 4GB 的线性地址空间内。

  所以,只要不外扩存储器,写完的程序中的所有东西也就会出现在这两个存储器中。

  单片机是一种集成电路芯片,集成CPU、RAM、ROM、多种I/O口和中断系统、定时器/计数器等功能。CPU中包括了各种总线电路,计算电路,逻辑电路,还有各种寄存器。

  Stm32 有通用寄存器 R0‐ R15 以及一些特殊功能寄存器,其中包括了堆栈指针寄存器。

  当stm32正常运行程序的时候,来了一个中断,CPU就需要将寄存器中的值压栈到RAM里,然后将数据所在的地址存放在堆栈寄存器中。

  等中断处理完成退出时,再将数据出栈到之前的寄存器中,这个在C语言里是自动完成的。

  在编程中很多时候会提到堆栈这个东西,准确的说这个就是RAM中的一个区域。

  2) 段的划分,是将类似数据种类存储在一个区域里,方便管理,但正如上面所说,不管什么段的数据,都是最终在flash和ram里面。

  这个是 MDK 编译之后能够得到的每个段的大小,也就能得到占用相应的FLASH和RAM的大小,但是还有两个数据段也会占用RAM,但是是在程序运行的时候,才会占用,那就是堆和栈。

  在stm32的启动文件.s文件里面,就有堆栈的设置,其实这个堆栈的内存占用就是在上面RAM分配给RW-data+ZI-data之后的地址开始分配的。

  是程序运行的时候局部变量的地方,所以局部变量用数组太大了都有可能造成栈溢出。

  堆栈的大小在编译器编译之后是不知道的,只有运行的时候才知道,所以需要注意一点,就是别造成堆栈溢出了,会出现 hardfault 问题。

  1)用庞大的全局变量数组来圈住一块内存,然后将这个内存拿来进行内存管理和分配。

  如果没有初始化数组,或者数组的初始化值为0,堆栈就是占用的RAM的ZI-data部分;

  2)就是把编译器没有用掉的RAM部分拿来做内存分配,也就是除掉RW-data+ZI-data+编译器堆+编译器栈后剩下的RAM内存中的一部分或者全部进行内存管理和分配。

  这样的情况下就只需要知道内存剩下部分的首地址和内存的尾地址,然后要用多少内存,就用首地址开始挖,做一个链表,把内存获取和释放相关信息链接起来,就能及时的对内存进行管理了。

  内存管理的算法多种多样,不详说,这样的情况下:OS的内存分配和自身局部变量或者全局变量不冲突,之前我就在这上面纠结了很久,以为函数里面的变量也是从系统的动态内存中得来的。

  默认的STM32F FOC SDK提供的工程文件下载到STM32以后不会电机不会自动转,想要让电机转,必须通过串口上位机ST Motor Control Workbench这个软件 若想脱离上位机让电机上电自动旋转,需要在main函数里面调用电机启动函数 UI_ExecCmd (oUI, MC_PROTOCOL_CMD_START_MOTOR); 根据UM1052 User manual STM32F PMSM single/dual FOC SDK v4.2手册中描述的可以利用FOC提供的UI函数来屏蔽底层驱动,直接在用户层编写程序 提供的函数定义在 UserInterfaceClass.c 中,

  一、启动模式(Boot modes) 阅读:STM32中文参考手册_V10.pdf 查看启动配置(Boot modes)。 在STM32F10xxx里,可以通过BOOT 引脚选择三种不同启动模式。 STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash。 2)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区 域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 3)SRAM = 芯片内置的RAM区,就是内存啦。 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平

  程序的烧录方式 与 ISP一键下载 /

  摘要:听说还有好多学单片机的小伙伴不会用结构体?指针和结构体是学单片机必须要掌握的,如果你C语言掌握的不牢,单片机根本学不到精髓,只能完成一些低级的项目。看得懂结构体并且能够灵活运用结构体才能说你入门了单片机。本篇将以最通俗的方式结合STM32单片来讲讲结构体的运用。解决你学完C语言、考过了计算机二级还是看不懂单片机结构体的苦恼。宝藏文章,记得点赞转发收藏。 大家知道指针和结构体是单片机的难点,所以就去学习C语言,找视频看书。 这里面每一个视频的播放量都非常高。对于单纯的学习C语言,这里讲的很清楚。看完你不禁在下面评论一句:哇!讲的真的太清楚了吧!但是等你真正的学单片机的时候,你会发现我不是学过C语言吗?计算机二级我也过了

  对于MCU,一切底层配置,最终都是在配置寄存器。 STM32F1xx官方资料: 《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO) 51单片机访问地址 51单片机经常会引用一个reg51.h的头文件。下面看看它是怎么把名字和寄存器联系在一起的: sfr p0=0x80; p0=0x00; sfr是一种扩充数据类型,点用一个内存单位,值域为0-255.利用它可以访问51单片机内部所有的特殊功能寄存器。前一句“sfr p0=0x80”就是将P0映射到地址0x80。后一句“p0=0x00”就是往p0地址(0x80)代表的寄存器写值。 STM32访问地址 寄存器地址名称映射 STM32肯定也是

  】MDK中寄存器地址名称映射分析 /

  1、普通推挽输出(GPIO_Mode_Out_PP): 使用场合:一般用在0V和3.3V的场合。线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流。 使用方法:直接使用 输出电平:推挽输出的低电平是0V,高电平是3.3V。 2、普通开漏输出(GPIO_Mode_Out_OD): 使用场合:一般用在电平不匹配的场合,如需要输出5V的高电平。 使用方法:就需要再外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式, 当输出高组态时,由上拉电阻和电源向外输出5V的电压。 输出电平:在开漏输出模式时,如果输出为0,低电平,则使N_MOS 导通,使输 出接地。若控制输出为1(无法直接输出高电平),则

  iic.h文件如下: #ifndef _stm32f103_myi2c_h_ #define _stm32f103_myi2c_h_ //IO方向设置 #define SDA_IN() {GPIOB- CRH&=0XFFFF0FFF;GPIOB- CRH=8 12;} #define SDA_OUT() {GPIOB- CRH&=0XFFFF0FFF;GPIOB- CRH=3 12;} //IO操作函数 #define IIC_SCL PBout(10) //SCL #define IIC_SDA PBout(11) //SDA #define READ_SDA

  简介: CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后,CAN通过ISO11898及ISO11519进行了标准化。现在在欧洲已是汽车网络的标准协议。 CAN协议经过ISO标准化后有两个标准:ISO11898标准和ISO11519-2标准。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。 CAN具有很高的可靠性,广泛应用于:汽车电子、工业自动化、船舶、医疗设备、工业设备等方面。 特点: 多主控制。总线空闲时

  系列第25篇--CAN总线 /

  中国上海,2007年6月27日 —— ARM公司(伦敦证交所:ARM;纳斯达克:ARMHY)宣布即日起,RealView微控制器开发工具包将支持意法半导体基于ARM Cortex-M3处理器的全新 STM32F1xx系列器件。 STM32F101 (接入行)和STM32F103 (性能行)将是意法半导体首个基于ARM Cortex-M3处理器的器件系列,兼具卓越的高性能和低功耗,待机功耗仅为2?A。该系列器件拥有高达72MHz的CPU时钟速度、128Kbyte片上闪存ROM及20Kbyte片上RAM,还包括A/D、CAN、USB、SPI、I2C等众多外设及多达80个GPIO。 RealView微控制器开发工具包3.1可

  F103传感器驱动代码

  F4差异文档

  的智能手表项目案例源代码(智能穿戴领域应用)

  H7B3I的FFT频谱仪

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  STM32CubeMX and STM32Cube HAL basics

  解锁【W5500-EVB-Pico】,探秘以太网底层,得捷电子Follow me第4期来袭!

  【下载】LAT1317 STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【直播】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【Matter】康普和意法半导体强强联手,让物联网设备Matter证书管理既安全又简便

  【方案】STM32WLE5 x 利尔达LoRa模组助力亚残会开幕式惊艳秀

  【新品】意法半导体发布远距离无线微控制器,提高智能计量、智能建筑和工业监控的连接能效

  2023年12月20日,中国 - 意法半导体新软件帮助工程师把STM32微控制器应用代码移植到性能更强大的STM32MP1微处理器上,将嵌入式系统设计性 ...

  瑞萨推出面向图形显示应用和语音/视觉多模态AI应用的 全新RA8 MCU产品群

  瑞萨基于Arm® Cortex®-M85处理器的产品在优化图形显示功能的同时,为楼宇自动化、智能家居、消费及医疗应用带来超高性能和领先的安全性2 ...

  Microchip推出PIC18-Q24 系列单片机 为增强代码安全性设置新标准

  该系列单片机新增电压电平转换功能,有助于提高灵活性并降低系统成本从手机、汽车到智能恒温器和家用电器,越来越多日常设备与云端相连。随 ...

  今天就分享一个读者问到的关于中断处理的问题。 很多人都知道STM32CubeMX这套工具的一个目的:减少开发者对STM32底层驱动的开发时间,把重 ...

  在万利STM32学习板的USB摇杆例程中,摇杆的按键处理并没有消抖处理,因此重新修改了摇杆的驱动,顺便还增加了两个按键以及摇杆中键下压的驱 ...

  STM32F103+ESP8266接入机智云 实现小型IOT智能家居项目

  stm32mp1 Cortex M4开发篇2:通过GPIO点亮LED灯详解

  ST 向大众市场推出ST4SIM M2M用兼容GSMA的eSIM卡芯片

  消息称三星Exynos 2500芯片秘密开发中 自研GPU将基于AMD技术

  三星电子内部开始自研“智能传感器” 预计将应用于无人驾驶和AI半导体制造

  消息称台积电 2024 年 3nm 芯片激增,特斯拉将成为 N3P 客户

  Mentor线上研讨会 教你在设计工具中进行DFM分析,轻松兼顾效率、成本和质量

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

电脑内存录入:admin    责任编辑:admin 
  • 上一个电脑内存:

  • 下一个电脑内存: 没有了
  •  
     栏目文章
    普通电脑内存 STM32 内存分配详解 (12-27)
    普通电脑内存 凯迪拉克XT5 (12-26)
    普通电脑内存 imtoken安卓版(以太坊价格行情k线图英文走势) (12-26)
    普通电脑内存 TP钱包app最新版(小狐狸钱包英文版下载安装) (12-26)
    普通电脑内存 内存条cl是什么 (12-25)
    普通电脑内存 大学生向往的就职企业 (12-25)
    普通电脑内存 目前所使用的主流内存为DDR SDRAM简称D。内存… (12-25)
    普通电脑内存 笔记本电脑到底需要多大内存? (12-24)
    普通电脑内存 电脑内存使用率高怎么解决(电脑内存使用率高… (12-24)
    普通电脑内存 内存时序怎么改 (12-24)
    普通电脑内存 车辆rst什么意思 (12-23)
    普通电脑内存 澜起科技:公司的内存接口芯片面向全球市场出… (12-23)
    普通电脑内存 不同PLC之间的数据交换 (12-23)
    普通电脑内存 hdgraphics显卡(hdgraphics显卡相当于) (12-22)
    普通电脑内存 王者荣耀s24赛季更新内存多少了王者更新赛季s… (12-22)
    普通电脑内存 三星s5e三星S5E (12-22)
    普通电脑内存 内存和存储器有什么区别? (12-21)
    普通电脑内存 两根内存就是双通道?太年轻 (12-21)
    普通电脑内存 苹果iPhone14机身重量是多少 是4G还是6G内存? (12-21)
    普通电脑内存 AI视野:百度Apollo开放平台90发布;OpenAI公… (12-20)