PSoC4100S Plus Flash Driver Running in sram

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Cherry_L
Level 2
Level 2
10 sign-ins 10 replies posted 5 questions asked

Hi,您好:

   目前需要将CySysFlashWriteRow函数放到ram里面跑,直接将此函数编译到SRAM里跑没有问题,但是将bin文件提取出来通过函数指针定位在同样的地址运行会跑飞,目前发现和函数内部调用了外部函数导致跑飞有关,有什么方法可以实现我的需求?谢谢!

 

0 Likes
1 Solution
lock attach
Attachments are accessible only for community members.
Vison_Zhang
Moderator
Moderator
Moderator
First comment on KBA 750 replies posted 250 sign-ins

我大概明白你的意思。CySysFlashWriteRow() 中会调用 CyEnterCriticialSection()/ CyExitCriticialSection()/memcpy() 等子函数,这些函数如果没有同样的剥离到 BIN 文件中,那么在调用 CySysFlashWriteRow() 的时候 CPU 还是会访问 FLASH。

我之前恰好做过一个类似的例程,并且在开发板上运行是OK的,只是步骤有些繁杂,你先按照我的步骤详细的过一遍,操作成功之后如果有改进意见再反馈给我。

 

View solution in original post

4 Replies
lock attach
Attachments are accessible only for community members.
LinglingG_46
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 10 questions asked

按照我的理解“CySysFlashWriteRow();"这个函数就是用来写flash的,你为什么要放到ram里面?执行的操作就是写flash。

如果你的需求是写flash的时候,可以执行的内容放在ram里,这样达到非阻塞写flash。那么请参考附件的code example:

 

0 Likes
Cherry_L
Level 2
Level 2
10 sign-ins 10 replies posted 5 questions asked

谢谢你的回复,我的意思是 这边需要 把CySysFlashWriteRow()函数定位在指定RAM 地址里面执行,到时候由外部将此函数的bin文件传入指定的ram地址,然后执行,达到这个目的。需求是需要做这个功能安全,flash drive是从外部can信号传入。不希望此函数固化在flash里面。

0 Likes
lock attach
Attachments are accessible only for community members.
Vison_Zhang
Moderator
Moderator
Moderator
First comment on KBA 750 replies posted 250 sign-ins

我大概明白你的意思。CySysFlashWriteRow() 中会调用 CyEnterCriticialSection()/ CyExitCriticialSection()/memcpy() 等子函数,这些函数如果没有同样的剥离到 BIN 文件中,那么在调用 CySysFlashWriteRow() 的时候 CPU 还是会访问 FLASH。

我之前恰好做过一个类似的例程,并且在开发板上运行是OK的,只是步骤有些繁杂,你先按照我的步骤详细的过一遍,操作成功之后如果有改进意见再反馈给我。

 

好的,我操作一下,感谢您的支持,谢谢!

0 Likes