c语言 编译 flash,DSP-C2000 flash编程,自己定义的烧写函数在主函数中运行无法通过...

2018-11-23 14:47:04

d6e83965612547db3ff693951622eb97.png

评论

提交评论

您好,

的确,Flash API 函数的调用必须在 RAM 中执行。对于 Flash API 函数具体的调用方法,可以参考 ControlSUITE 中其他型号的示例代码,例如 flash_f28069 ;主要有以下几个步骤:

(1)在 .cmd 文件中定义代码搬移的相应区域:

jishu_1687767_1_1.html

(2)定义函数 Example_CallFlashAPI(),其中包含 Flash API 操作;将其地址空间定义在 ramfuncs 中:

jishu_1687767_1_1.html

(3)在 main() 中调用 Example_CallFlashAPI() 函数之前,需要先执行代码搬移函数,将在 ramfuncs 中定义的代码从 Flash 搬移到 RAM 中,此时Example_CallFlashAPI() 才真正被搬移至 RAM 中:

jishu_1687767_1_1.html

(4)最后,执行 Example_CallFlashAPI() 函数,在其中调用相应的 Flash API 函数:

jishu_1687767_1_1.html

请参考示例代码,对比您工程中的相应操作是否一致?

2018-11-23 15:05:29

d6e83965612547db3ff693951622eb97.png

评论

提交评论

If a post answers your question, please mark it with the "verify answer" button.

2018-11-23 15:19:56

d6e83965612547db3ff693951622eb97.png

评论

提交评论

感谢回复,以上的(1)(2)(3)(4)都测试过, 当擦写 编程自定义的一块flash时没有问题,这几段flash没有存储任何代码和数据,说明flash api的调用应该没有问题。

但是当擦写 编程 代码段的flash时,没有成功,怀疑的原因有以下:   ①因为是在一个flash函数里面调用了 ramfunc 来编程,擦除调用函数本身是否属于违法操作 ②falsh的编程需要 配置PLL以及cpu scaltor,和call back ptr,这些都是全局变量,flash的编程是否需要将这些数据也copy到 ram中去,这种在代码如何实现?

2018-11-23 15:30:08

d6e83965612547db3ff693951622eb97.png

评论

提交评论

通常的做法 -- 对于需要在线擦除并编程:

将实现该功能的代码(也即你现在调用FlashAPI的代码,通常称为用户bootloader),放在一个flash sector,运行时全部copy到RAM运行,包括初始化函数,通讯传输数据的代码,memcpy函数等都不要在flash上运行,使用的变量不要与应用程序的放在一起。

自己的应用程序放在剩下的其它flash sector,可由用户bootloader任意操作。

对比一下上面提到的文档参考看看吧。

If a post answers your question, please mark it with the "verify answer" button.

2018-11-23 15:40:32

d6e83965612547db3ff693951622eb97.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值