华芯微特开发论坛

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

SWM181程序执行模式说明

[复制链接]

14

主题

61

帖子

789

积分

超级版主

Rank: 8Rank: 8

积分
789
发表于 2024-1-24 11:55:57 | 显示全部楼层 |阅读模式

SWM181芯片结构如下:
SWM181_Chip_Die.jpg
SWM181本身(die,晶粒)没有Flash,而是在同一个封装内叠封了一个120KB的SPI Flash,SWM181通过专用的SPI接口对此SPI Flash读写。

SWM181的程序执行模式可以分为两种:CodeRAM执行,Cache执行。

CodeRAM执行
SWM181_CodeRAM.jpg
将片内SRAM分成两块,8KB Data RAM、24KB Code RAM,上电时BootLoader将SPI Flash的低24KB拷贝到Code RAM,程序在Code RAM上执行。

这种模式下,如果程序大于24KB,需要用户代码将超出的部分拷贝到Data RAM中,但由于片内SRAM共有32KB,因此程序大小无论如何无法超过32KB。

Cache执行
SWM181_Cache.jpg
Cache执行模式类似于电脑CPU或嵌入式处理器中的Cache执行方式。
CPU从Cache中读取指令,如果Cache发现CPU要的指令不在Cache中,就自动从SPI Flash中读取该指令,并缓存在Cache中,下次CPU再次读取该指令时可立即给出,不必再读取SPI Flash。
当整个Cache被指令占满时,Cache会将最不常用的指令占用的Cache Line释放,从而可以从SPI Flash读取新的指令。

这种方式理论上可以支持任意大小的程序(几百KB甚至几MB),但发生指令不在Cache中(即Cache miss)时,会降低程序的响应实时性,因此建议将中断处理函数(以及ISR调用的函数)放入Data RAM中。

模式选择
startup_SWM181.s 文件中:
SWM181_SRAM_SWITCH.png
Note:模式0和1只是Cache大小的区别;如果所需Data RAM不超过16KB,建议使用模式0,更大的Cache可减小Cache Miss,提升程序速度。

为什么UserBoot下APP必须放在Flash起始地址?
基于RAM执行的时候,,代码不能超过24KB,,因为CodeRAM就是24KB,,多了装不下。。但是代码可以在SPI Flash的任意位置,,因为无论在哪里都是拷贝到CodeRAM里面去执行
基于Cache执行,,代码可以和SPI Flash一样大,,但因为Cache固定将程序地址空间的0地址映射到SPI Flash的0地址,,因此基于Cache执行的代码只能在SPI Flash的0地址,,
APP一般都大于24KB,,因此必须放在Flash起始地址处。。

回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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