• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

分散加载文件中的内存是如何和实际对应起来的呢?

耳根的耳根 2021-03-26 浏览量:537

分散加载文件中的内存是如何和实际对应起来的呢?

比如下面的代码:

LR_IROM1 0x08000000 0x00010000
{    ; load region size_region
  ER_IROM1 0x08000000 0x00010000
	{  ; load address = execution address
   	*.o (RESET +First)
   	*(InRoot$$Sections)
   	.ANY (+RO)
  }

  RW_IRAM1 0x20000000 0x00002800
	{  ; RW data
   .ANY (+RW +ZI)
  }

 	HEAP +0
	{
		*.o (HEAP)
	}

	STACKS 0x20002800  -0x00000200
	{
		*.o (STACK)
	}
}
我的FLAH是128kb,应该是0x00020000

RAM是20kb,应该是0x00005000

为什么和实际对应不上呢?


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 对应不上只能说不严谨,或者有其它用途,flash就128k,代码中你也可以弄成1M的,只要实际代码没有超郭这128k,就没有问题,ram一样的道理。
    • 发布于 2021-03-27
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 这个具体要分析

    如果分析PC环境下,就有虚拟内存空间和实际内存的对应关系这样一种情况,即程序自身标识的内存空间只是虚拟内存空间地址,需要在系统层面进行转译对应到实际内存空间中,这样的方法可以节约大量内存占用,实现多任务共享内存。

    当然,在单片机环境中有时没有系统内存管理这个处理,不过在编译链接时,一样可以进行转译处理,让普通程序中定义的分散信息,能相对集中的加载和分布到实际空间中,以提高内存使用效率。

    • 发布于2021-03-29
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

分散加载文件中的内存是如何和实际对应起来的呢?