OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4446|回复: 5

RT1052开发板分散加载文件问题

[复制链接]

3

主题

5

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-3-27
在线时间
14 小时
发表于 2019-7-17 22:30:35 | 显示全部楼层 |阅读模式
5金钱
#define m_flash_config_start           0x60000000
#define m_flash_config_size            0x00001000

#define m_ivt_start                    0x60001000
#define m_ivt_size                     0x00001000

#define m_interrupts_start             0x60002000
#define m_interrupts_size              0x00000400

#define m_text_start                   0x60002400
#define m_text_size                    0x01FFDC00

#define m_data_start                   0x20000000
#define m_data_size                    0x00020000

#define m_data2_start                  0x20200000
#define m_data2_size                   0x00040000



LR_m_text m_interrupts_start m_text_start+m_text_size-m_interrupts_size {   ; load region size_region
  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
    * (RESET,+FIRST)
  }
  ER_m_text m_text_start m_text_size { ; load address = execution address
    * (InRoot$$Sections)
    .ANY (+RO)
  }
  RW_m_data m_data_start m_data_size-Stack_Size-Heap_Size { ; RW data
    .ANY (+RW +ZI)
    * (NonCacheable.init)
    * (NonCacheable)
  }
  ARM_LIB_HEAP +0 EMPTY Heap_Size {    ; Heap region growing up
  }
  ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
  }
}


看到大部分的加载文件都是这样的,包括官网的,但是我发现这里只对m_data_start进行了分配并没有对m_data2_start进行分配,通过编译出来的文件查看,我的程序也全部分配到m_data_start空间,没有分配到其他的空间。
如果我按照如下分配就分配了相应的程序。
#define m_flash_config_start           0x60000000
#define m_flash_config_size            0x00001000

#define m_ivt_start                    0x60001000
#define m_ivt_size                     0x00001000

#define m_interrupts_start             0x60002000
#define m_interrupts_size              0x00000400

#define m_text_start                   0x60002400
#define m_text_size                    0x01FFDC00

#define m_data_start                   0x00000000
#define m_data_size                    0x00020000

#define m_data1_start                   0x20000000
#define m_data2_size                    0x00020000

#define m_data2_start                  0x20200000
#define m_data2_size                   0x00040000



LR_m_text m_interrupts_start m_text_start+m_text_size-m_interrupts_size {   ; load region size_region
  VECTOR_ROM m_interrupts_start m_interrupts_size { ; load address = execution address
    * (RESET,+FIRST)
  }
  ER_m_text m_text_start m_text_size { ; load address = execution address
    * (InRoot$$Sections)
    .ANY (+RO)
  }
  RW_m_data m_data_start m_data_size-Stack_Size-Heap_Size { ; RW data
    .ANY (+RW +ZI)
    * (NonCacheable.init)
    * (NonCacheable)
  }
RW_m_data m_data1_start m_data1_size { ; RW data
    .ANY (+RW +ZI)
  }
RW_m_data m_data2_start m_data2_size { ; RW data
    .ANY (+RW +ZI)
  }
  ARM_LIB_HEAP +0 EMPTY Heap_Size {    ; Heap region growing up
  }
  ARM_LIB_STACK m_data_start+m_data_size EMPTY -Stack_Size { ; Stack region growing down
  }
}


这样分配能正常分配,itcm里也有数据,所有的ram也都利用起来的,但是运行程序有一部分有点不太正常,跑的是free-rtos。
@原子哥,帮忙解答一下。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2019-7-18 02:09:19 | 显示全部楼层
不建议这么操作。如果你想一部分内存放另外的内存区域,建议用内存管理
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-3-27
在线时间
14 小时
 楼主| 发表于 2019-7-18 16:05:28 | 显示全部楼层
正点原子 发表于 2019-7-18 02:09
不建议这么操作。如果你想一部分内存放另外的内存区域,建议用内存管理

那不这么操作,按照你们提供的方式那不是只有128k的ram用?那512k的ram其他的跑哪去了?
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2019-7-19 02:24:24 | 显示全部楼层
zam52013 发表于 2019-7-18 16:05
那不这么操作,按照你们提供的方式那不是只有128k的ram用?那512k的ram其他的跑哪去了?

这里只是定义MDK自动分配的变量及堆栈存储位置,你在程序里面,想用还是可以用的啊,直接指定地址即可。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2018-3-27
在线时间
14 小时
 楼主| 发表于 2019-7-20 10:52:15 | 显示全部楼层
正点原子 发表于 2019-7-19 02:24
这里只是定义MDK自动分配的变量及堆栈存储位置,你在程序里面,想用还是可以用的啊,直接指定地址即可。

原子哥你们有那个例程吗?
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164897
金钱
164897
注册时间
2010-12-1
在线时间
2100 小时
发表于 2019-7-21 03:16:17 | 显示全部楼层
zam52013 发表于 2019-7-20 10:52
原子哥你们有那个例程吗?

可以看我们的SDRAM例程
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-8 13:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表