发 帖  
原厂入驻New
[问答]

函数指针能调用RAM中编译成c数组的函数吗?

145 bootlader Flash驱动 RAM
分享
在开发boot loader时,由于要符合客户的要求需要把Flash的驱动通过上位机下载到ECU中执行,所以我要将Flash的驱动制作成s19文件。我参考了一些方法,想通过两步来实现,将Flash_Write()和Flash_Erase()两个函数先定义到指定的section中,然后提取成C数组形式定义到指定的RAM中,定义函数指针指向C数组的首地址来调用函数。如果上面行得通,就可以通过仿真器将含有驱动的RAM内存段读取出来作为Driver.s19,通过上位机下载到ECU中来编程Flash。但是现在第一步有些问题,希望高手指教!我的代码如下:
     1. 定义RAM用来存放编译提炼好的驱动C数组
开辟要存储C数组的RAM

     2. 定义数组到之前的RAM段,如下
定义C数组到之前的RAM段

     3. 定义函数指针如下,将数组的首地址类型转换并赋给指针

定义函数指针

     4. 编译之后,map文件如下,C数组是按照预期定义到了指定RAM段,指针函数好像有点问题,不应该.text吗?而且怎么看有没有指向C数组?

编译后的map

     5. 调试发现果真跳转不成功,显示未定义函数。

调试发现指针指向有问题

求助各路大神。










0
2020-11-3 15:36:59   评论 分享淘帖 邀请回答

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /9 下一条

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