IAP与APP程序的底层驱动如何实现共用?

2019-07-20 15:05发布

最近要做一个项目,要求IAP程序能够读取SD卡或者通过网络将APP的bin文件刷至flash中。但是我APP程序中也要使用sd,以太网等驱动,那么能否将IAP中的驱动函数绝对定位,然后APP中直接跳转至IAP中驱动函数的地址,这样可以减少代码体积。 看了一下MDK分散加载方面的资料,沒太明白sram和sdram是怎么加载的。如果APP单纯地调用IAP中的函数,那些IAP中用到的rw,zi data会不会因为没加载而出错?或者有没有更好的办法去实现这种类似动态加载驱动程序的方法? 希望能有大神给出一些建议,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
skywolf
1楼-- · 2019-07-20 17:17
这个没问题啊,我们就是在IAP和APP之间共用字库、代码。
假设IAP代码相对固定,可以将共用代码放到IAP项目里,scatter里将flash分成两个块,一部分是IAP独占,一部分是共用区。
链接时要加上--symdefs选项,生成一个symbol表,列出各个函数、变量的地址。帮助里有,一查有一串相关文档。
例如:--symdefs=.share.sym
生成的symbol文件share.sym里删除无关的,保留共用的函数、字库之类的。然后加入到APP的项目里,
注意文件的属性要改成Object file。


APP也要在scatter文件里定义好区块,不能跟IAP和共用区重叠就行了。也就是说APP里没有将共同代码链接进去,只记录了代码/变量的地址,直接引用。

反过来共用代码放在APP里,生成symbol文件给IAP也是一样的。

溫柔一刀
2楼-- · 2019-07-20 20:05
1. 不只只有程式定位問題, 還有其它很多問題, 比如記憶體不同分配問題.....
2. 建議你不要這樣做, 可以把 IAP 想成單純一支FW, 另外一支程式也是一支 FW..
第一點難度太大, 要有很多的 RAM , 要把程式搬去RAM RUN
林海
3楼-- · 2019-07-20 21:53
 精彩回答 2  元偷偷看……
wang12zhe
4楼-- · 2019-07-20 22:36
 精彩回答 2  元偷偷看……
ye781205
5楼-- · 2019-07-21 02:47
这个有用,标记一下
愛無痕
6楼-- · 2019-07-21 07:01
 精彩回答 2  元偷偷看……

一周热门 更多>