查看: 6845|回复: 6

[求助] 【RT1060】 KEIL中分散加载相关问题

[复制链接]
  • TA的每日心情
    擦汗
    2020-1-10 11:05
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    13

    主题

    49

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    382
    最后登录
    2020-11-12
    发表于 2020-4-8 17:06:19 | 显示全部楼层 |阅读模式
    我这边配置ITCM/DTCM/OCRAM = 64/256/192 , OCRAM-FLEXRAM = 512

    MPU配置如下:
    /* Region 4 setting: Memory with Normal type, not shareable, outer/inner write back */
        MPU->RBAR = ARM_MPU_RBAR(4, 0x00000000U);
        MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64KB);
        /* Region 5 setting: Memory with Normal type, not shareable, outer/inner write back */
        MPU->RBAR = ARM_MPU_RBAR(5, 0x20000000U); // DTCM
        MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_256KB);
        /* Region 6 setting: Memory with Normal type, not shareable, outer/inner write back */
        MPU->RBAR = ARM_MPU_RBAR(6, 0x20200000U); // OCRAM
        MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_128KB);
        MPU->RBAR = ARM_MPU_RBAR(7, (0x20200000 + 128 * 1024)); // OCRAM
        MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64KB);
        /* Region 7 setting: Memory with Normal type, not shareable, outer/inner write back */
        MPU->RBAR = ARM_MPU_RBAR(8, 0x20280000U); // OCRAM_FLEXRAM
        MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_512KB);



    连接脚本(部分)如下:(只贴出DTCM/OCRAM/OCRAM-FLEXRAM相关
    // DTCM
    #define m_rtt_szie                        0x00030000 // 192
    #define m_data1_start                  (0x20000000 + m_rtt_szie)
    #define m_data1_size                   (0x00040000 - m_rtt_szie) // 256 - 192
    // OCRAM
    #define m_data2_start                  0x20200000
    #define m_data2_size                   0x00030000 // 192
    // OCRAM-FLEXRAM
    #define m_data3_start                  0x20280000
    #define m_data3_size                   0x00080000 // 512


    #define Stack_Size                       0x1000 // 4k

    #define Heap_Size                       0x0400

    RW_m_data1 m_data1_start m_data1_size { ; RW data
        .ANY (+RW +ZI)
        * (NonCacheable.init)
        * (NonCacheable)
      }

    RW_m_data2 m_data2_start m_data2_size-Stack_Size-Heap_Size{ ; RW data
        .ANY (+RW +ZI)
      }


    RW_m_data3 m_data3_start m_data3_size{ ; RW data
        .ANY (+RW +ZI)
      }


      ARM_LIB_HEAP +0 EMPTY Heap_Size {}    ; Heap region growing up
      ARM_LIB_STACK +0 EMPTY Stack_Size {} ; Stack region growing down


    目前KEIL编译出来RAM 超过192k。

    Program Size: Code=329516 RO-data=35132 RW-data=5740 ZI-data=192560  


    问题
         程序下载下去未跑起来;未超过192k时,程序正常运行;RW_m_data3 放到 RW_m_data2 前面程序运行正常。

        感觉OCRAM 与 OCRAM-FLEXRAM没有同时用起来,请问:连接脚本中怎么配置让 这两块区域都使用起来???




    哈哈哈哈哈哈哈啊哈哈哈
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24866
    最后登录
    2025-7-18
    发表于 2020-4-9 09:01:56 | 显示全部楼层
    本帖最后由 小恩GG 于 2020-4-13 11:33 编辑

    楼主你好!
    在你做flexRAM重新分区之前,建议你先看看官方这个应用笔记:
    http://www.nxp.com/docs/en/application-note/AN12077.pdf
    分区需要是2的幂次方。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-1-10 11:05
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    13

    主题

    49

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    382
    最后登录
    2020-11-12
     楼主| 发表于 2020-4-9 09:36:54 | 显示全部楼层
    小恩GG 发表于 2020-4-9 09:01
    楼主你好!
    在你做flexRAM重新分区之前,建议你先看看官方这个应用笔记:
    http://www.nxp.com/docs/en/app ...

    该文档中说了ITCM 和DTCM 需要2的幂方,并没有说 OCRAM也需要保持2的幂方哦。
    Table 3. Static FlexRAM configuration defined by fuses in RT1050 / RT106x

    该表上没有配置 ITCM/DTCM/OCRAM = 0/256/256  ?不知道这种配置是否可行?如果可行GPR17值多少?

    哈哈哈哈哈哈哈啊哈哈哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24866
    最后登录
    2025-7-18
    发表于 2020-4-13 11:38:46 | 显示全部楼层
    meteorego 发表于 2020-4-9 09:36
    该文档中说了ITCM 和DTCM 需要2的幂方,并没有说 OCRAM也需要保持2的幂方哦。
    Table 3. Static FlexRAM c ...

    楼主你好!
    很抱歉,之前看错了,看成DTCM 192了, 你的配置ITCM/DTCM/OCRAM = 64/256/192还是在允许之列的。
    ITCM/DTCM/OCRAM = 0/256/256 ,这个配置肯定不行,不在可以允许的16中情况(其实还要减掉3个)表格中。
    你要么参考下我的这个文章:
    https://www.nxpic.org.cn/module/forum/thread-619452-1-1.html
    不过是用MCUXPressoIDE的,看看你那边是否有问题?MDK有可能还有哪里需要修改脚本。

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-1-10 11:05
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    13

    主题

    49

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    382
    最后登录
    2020-11-12
     楼主| 发表于 2020-4-13 14:31:06 | 显示全部楼层
    小恩GG 发表于 2020-4-13 11:38
    楼主你好!
    很抱歉,之前看错了,看成DTCM 192了, 你的配置ITCM/DTCM/OCRAM = 64/256/192还是在允许之 ...

    应该可以吧,那16中情况是eFUSE的配置吧,应该可以使用GPR17来配置
    哈哈哈哈哈哈哈啊哈哈哈
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24866
    最后登录
    2025-7-18
    发表于 2020-4-14 17:10:11 | 显示全部楼层
    meteorego 发表于 2020-4-13 14:31
    应该可以吧,那16中情况是eFUSE的配置吧,应该可以使用GPR17来配置

    我觉得你可以用表中的其他接近你需求的方式配一下看看是否工作,如果工作了,你再试试表中没有的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-5-28 05:36
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    2

    主题

    36

    帖子

    0

    注册会员

    Rank: 2

    积分
    153
    最后登录
    2025-5-20
    发表于 2021-7-1 21:19:09 | 显示全部楼层
    我配置也不成功,RT1021的ITCM/DTCM/OCRAM=0/192/64(0x6D0[19:16]==0101: 192KB, 0 KB, 64 KB
    {O,O,D,D,D,D,D,D}),但是你这个不一样,你不用重新划分。你或者定义一个节区名,用节区名去定义变量,或者指定哪个文件*.o的变量在RW_m_data2或者RW_m_data3里,好像不能都写ANY,都写ANY不知道它的处理流程和优先级是啥。
    干不完的事
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 10:00 , Processed in 0.102254 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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