当前位置: 首页 > news >正文

网站空间的申请网络规划设计师课件

网站空间的申请,网络规划设计师课件,宁波seo优化,wordpress设置分类1. Flash(闪存)(程序存储器) 用途 存储程序代码:编译后的机器指令(如 .text 段)、常量数据(如 .rodata 段)等。 掉电不丢失:程序固化在 Flash 中&#xff0…

1. Flash(闪存)(程序存储器)

用途
  • 存储程序代码:编译后的机器指令(如 .text 段)、常量数据(如 .rodata 段)等。

  • 掉电不丢失:程序固化在 Flash 中,重启后仍存在。

特点
  • 只读或需擦除写入:运行时不可直接修改(需特殊操作,如 Flash 编程)。

  • 访问速度较慢:比 RAM 慢,但容量较大(STM32 的 Flash 通常为几十 KB 到几 MB)。

  • 寿命有限:Flash 有擦写次数限制(约 1 万~10 万次)。

示例
  • STM32 的 .hex 或 .bin 文件烧录到 Flash 中,CPU 从 Flash 读取指令执行。


2. RAM(随机存取存储器)(数据存储器)

用途
  • 存储运行时数据:包括全局变量、静态变量、栈、堆等。

  • 掉电丢失:数据仅在供电时保持。

特点
  • 可读写:直接通过指令(如 LDR/STR)操作。

  • 访问速度快:适合频繁读写的临时数据。

  • 容量较小:STM32 的 RAM 通常为几十 KB 到几百 KB。

RAM 的细分区域
  1. 栈(Stack)

    • 存储函数调用的临时数据(局部变量、返回地址等)。

    • 由编译器自动管理,向下增长(高地址 → 低地址)。

  2. 堆(Heap)

    • 存储动态分配的内存(如 malloc 分配)。

    • 由程序员手动管理,向上增长(低地址 → 高地址)。

  3. 全局/静态变量区

    • 存储全局变量(.data 段)和未初始化的静态变量(.bss 段)。


3. 栈(Stack)与堆(Heap)

  • 位置:均位于 RAM 中,但方向相反(栈向下,堆向上)。

  • 管理方式

    • 栈由编译器自动管理(通过 PUSH/POP 或函数调用)。

    • 堆需手动分配/释放(malloc/free),在单片机中较少使用。

  • 典型问题

    • 栈溢出(Stack Overflow):函数嵌套过深或局部变量过大。

    • 堆内存泄漏(Heap Leak):未释放动态内存。


4. 四者的关系与内存布局

内存分布示例(STM32)

plaintext

复制

Memory Address↑| 0xFFFFFFFF (不存在的地址)| ... | Heap(向上增长)        ← 堆顶(Heap Top)| ... | 未使用的 RAM 空间| ... | Stack(向下增长)       ← 栈顶(Stack Top)| 全局/静态变量(.data/.bss)| ↓ 0x00000000(RAM 起始地址)
Flash 与 RAM 的分工
  • Flash:存放代码和常量(只读),CPU 直接从 Flash 取指令执行。

  • RAM:存放运行时的变量和临时数据(可读写)。


5. 对比表格

特性FlashRAM栈(Stack)堆(Heap)
用途存储代码、常量存储变量、栈、堆函数调用时的临时数据动态分配的内存
读写速度快(直接操作栈指针)慢(需内存管理)
生命周期永久(掉电不丢失)临时(掉电丢失)随函数结束释放需手动释放
管理方式编译器分配编译器/程序员分配编译器自动管理程序员手动管理
增长方向向下(高→低地址)向上(低→高地址)
典型问题擦写次数耗尽容量不足栈溢出内存泄漏、碎片化

6. 实际开发中的关键点

Flash 相关
  • 代码优化:减少 Flash 占用(如启用编译器优化 -Os)。

  • 常量存储使用 const 关键字将常量放入 Flash(而非 RAM)

  • 固件更新:通过 Bootloader 更新 Flash 中的程序。

RAM 相关
  • 全局变量最小化:避免占用过多 RAM。

  • 栈大小配置:在启动文件(如 startup_stm32xxxx.s)中设置足够栈空间。

  • 堆的谨慎使用:在单片机中尽量避免动态内存分配。

调试技巧
  1. 内存溢出检测

    • 使用调试器监视栈指针(SP)和堆指针。

    • 在栈和堆的边界填充特定模式(如 0xDEADBEEF),通过断点检测溢出。

  2. 链接脚本分析

    • 检查 .ld 文件,明确 Flash 和 RAM 的地址分配。

  3. 内存使用统计

    • 通过编译生成的 .map 文件,查看各段(.text.data.bss)的大小。


7. 示例:STM32 的启动文件配置

在 STM32 的启动文件(如 startup_stm32f4xx.s)中,Flash 和 RAM 的分配通过链接脚本(.ld)定义:

/* 链接脚本片段 */
MEMORY
{FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K  /* Flash 起始地址和大小 */RAM (xrw)  : ORIGIN = 0x20000000, LENGTH = 128K  /* RAM 起始地址和大小 */
}/* 栈和堆大小的定义 */
_stack_size = 0x1000;  /* 4KB 栈 */
_heap_size = 0x200;    /* 512B 堆 */

http://www.15wanjia.com/news/157780.html

相关文章:

  • 福州服务类网站建设网站安全狗
  • 计算机专业论文网站开发56账号登录的网址
  • 网站建设怎么收费呀logo制作规范
  • 开发微信公众号公司网站建设和优化那本书好
  • 北京中国建设银行招聘信息网站工作总结个人
  • 关方网站买微信google广告联盟网站
  • 怎么做网站注册名密码网络营销方案案例范文
  • 网站云解析域名解析电子商务网站系统规划
  • 哈尔滨百度网站建设上杭县建设局网站住房保障
  • v6厂高仿手表网站北沙滩网站建设
  • 5188站长平台如何做一个内部网站
  • 广州网站建设培训关于asp.net的网站模板
  • 抖音的电子商务网站建设网站开发人员考核指标
  • 网上购书的网站开发的意义摄影图片
  • 网站建设分金手指排名十二个人简介网页设计模板代码
  • 开公司做网站厦门有做网站建设
  • 宁波快速建站公司汕尾市企业网站seo点击软件
  • flash个人网站片头网页设计与制作课程教学应用案例
  • 水处理网站源码怎么查看网站是否做百度排名
  • 西宁网站建设的公司哪家好百度大搜数据多少钱一条
  • wordpress网站加密方式wordpress预览pdf
  • 专业网站建设品牌策2022年装修效果图大全
  • 定制做网站开发长沙互联网企业
  • 网站 电信已备案 联通公司官网是通过什么编辑
  • 网站建设小故事网站推广怎么做流量大
  • 网站是什么字体电脑自带的做网站叫什么软件
  • 付费阅读小说网站开发建设源码wordpress博客站搭建
  • 郑州网站开发顾问wordpress带汉字图片不显示
  • 上海做高端网站制作iis默认网站属性
  • 惠州网站制作专业网站icp没有备案怎么检查