华芯微特开发论坛

 找回密码
 立即注册
搜索
热搜: SWM341 资料
查看: 3549|回复: 3

SWM341 将部分代码放到 SDRAM 上执行。。

[复制链接]

14

主题

61

帖子

789

积分

超级版主

Rank: 8Rank: 8

积分
789
发表于 2024-3-22 18:07:47 | 显示全部楼层 |阅读模式


当程序大小超过片内 Flash 容量(512KB)时,,可将部分部分代码下载到片外 SPI Flash 中,,上电时拷贝到 SDRAM 中执行。。设置方法如下:

1、SWM341_stdperiph_lib.sct 文件中添加如下内容:
  1. LR_IROM2 0x70000000 0x00100000  {
  2.   ER_IROM2 0x80000000 0x00100000  {
  3.     code_on_sdram.o (+RO)
  4.   }
  5. }
复制代码
用于将 code_on_sdram.c 中的函数定位到 SDRAM 地址空间

2、添加下载算法如下,,用于将 SDRAM 中运行的代码下载到 SPI Flash 中
Keil_Alg_SFC.jpg

3、由于 code_on_sdram.c 中的代码运行地址和加载地址不同,,Keil 会自动生成代码,,将 SPI Flash 中的代码拷贝到 SDRAM 中。。但此时 SFC 和 SDRAM 都还没有初始化,,因此拷贝内容都是错误的。。我们需要添加如下代码完成拷贝工作
  1. int main(void)
  2. {
  3.         SystemInit();
  4.        
  5.         SerialInit();
  6.        
  7.         SFC_Config();
  8.        
  9.         SDRAM_Config();
  10.        
  11.         SFC_Read(0, (uint32_t *)SDRAMM_BASE, 0x100000/4);        // 将 SPI Flash 上前 1MB 拷贝到 SDRAM 上
  12.        
  13.         while(1==1)
  14.         {
  15.                 run_on_sdram();
  16.                
  17.                 for(int i = 0; i < SystemCoreClock/8; i++) __NOP();
  18.         }
  19. }
复制代码
在调用 code_on_sdram.c 中定义的函数 run_on_sdram() 之前,,调用 SFC_Config() 初始化 SFC,,调用 SDRAM_Config() 初始化 SDRAM,,然后调用 SFC_Read() 将 SPI Flash 中的代码拷贝到 SDRAM 中。。


回复

使用道具 举报

3

主题

6

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2024-3-23 09:47:48 | 显示全部楼层
最近在看SWM34S,想问下,如果把UI素材放在外挂的XIP QSPI FLASH里,就地执行好,还是把这些拷贝到SDRAM里执行好?SDRAM肯定快很多,但是上电拷贝时,由于UI素材一般都很大,会不会花很长的时间?
回复

使用道具 举报

14

主题

61

帖子

789

积分

超级版主

Rank: 8Rank: 8

积分
789
 楼主| 发表于 2024-3-23 11:22:00 | 显示全部楼层
tommymcu2 发表于 2024-3-23 09:47
最近在看SWM34S,想问下,如果把UI素材放在外挂的XIP QSPI FLASH里,就地执行好,还是把这些拷贝到SDRAM里 ...

素材的话,两种方式都可以。。

这里说的程序代码,,程序执行时会不断地来回跳转,,对于没有 Cache 的 XIP SPI Flash 很不友好,效率很低,,必须拷贝到 SDRAM 中执行。。
回复

使用道具 举报

14

主题

61

帖子

789

积分

超级版主

Rank: 8Rank: 8

积分
789
 楼主| 发表于 2024-6-24 14:02:34 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|华芯微特开发论坛

GMT+8, 2025-1-10 06:44 , Processed in 0.034061 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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