加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

如何在 SDRAM 里调试一个 dual core project

01/02 16:16
257
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

i.MX RT117x 与 RT10xx 系列相比,一个很明显的区别就是多了一个 M4 的内核,从而是多核协作成为可能。多核操作一般的做法是在各自独立的程序数据空间运行,通过一块共享的内存空间进行通讯,例如官方的 SDK 例程中,M7 的代码运行在 Flash 里面,而 M4 的代码则运行在 SRAM 里面,这样可以确保performance 的最大化,不过在开发阶段,客户也许需要把 M7 和 M4 的代码放在外部的 SDRAM 里面调试,这样虽然会影响一部分 performance,但是不会对flash 进行过多的擦写操作,也有一定的现实意义。下面就对如何把一个 dual core 的 project 加载到 SDRAM 上调试进行详细的解说。下面的样例来自与官方的 dual core rpmsg_lite_pingpong demo。

因为默认系统是从 M7 core 启动,所以通常的做法是通过 M7 实现 M4 代码的加载,然后 M7 启动 M4。所以大部分的设置都是在 M7 project 里完成。具体
步骤如下:

1. M7 project 的设置
a) 添加 BOARD_SDRAM 和 SDRAM 两个内存空间定义,其中 BOARD_SDRAM 是给 M7放代码数据用的,而 SDRAM 则是给 M4。这里需要注意的是BOARD_SDRAM 的位置要紧挨这 BOARD_FLASH。

b) 添加宏定义,使能 SDRAM 初始化代码

c) 选中下列选项,把原本放入 BOARD_FLASH 的应用代码放入 BOARD_SDRAM。

d)在多核设置中,将 M4 的代码位置设为前面定义的 SDRAM 空间。

e)在 debugger 配置里替换启动脚本为带 SDRAM 初始化的版本。

并添加下列这个调试选项:--cachelib libm7_cache.so

f) 最后在代码里更新 M4 core 启动地址为前面定义的 SDRAM 的起始地址:

2. M4 project 的改动则简单的多。
a)添加 SDRAM 内存空间定义,起始地址和大小与 M7 project 里的 SDRAM 空间定
义保持一致。

完成上述步骤后,你就可以在 SDRAM 里同时调试 M7 和 M4 的代码啦!

相关推荐

电子产业图谱