搜索
bottom↓
回复: 10

NRF51822如何调用协议栈提供的API函数?

[复制链接]

出0入0汤圆

发表于 2015-3-30 20:41:08 | 显示全部楼层 |阅读模式
我们在使用NRF51822做蓝牙低功耗时会发现,需要先烧写官方提供的一个协议栈。hex文件。                  
之后是烧录我们的APP工程文件,细心的会发现工程文件IROM起始地址变成了0X14000,RAM也便宜了0X2000。

这样的工程很像我们平常经常用到的bootloader+app工程模式设置方式,但是我们平常用的bootloader和app都是只调用各自工程内的函数,没有跨工程调用。

那么问题来了,51822芯片是如何让我们的app工程调用官方提供的HEX文件内的函数的呢?

我猜测如下:
官方的HEX文件内没有main函数,编译成hex文件后看各个函数的绝对地址,在app中调用的是指向该绝对地址的函数指针。


但是这种做法没有亲自验证,希望能有大牛级人物来个较详细的详解。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2015-3-30 23:50:12 | 显示全部楼层
同样表示好奇~

出0入0汤圆

发表于 2015-3-31 08:22:16 | 显示全部楼层
不是大牛,懂点系统的东西:

这个最简单的,我认为可以做分片的或调度的算法,到了时间片或允许非协议栈运行,中断之。

出0入4汤圆

发表于 2015-3-31 08:39:46 | 显示全部楼层
之前研究过,不过有点忘了。调用 stack其实是通过一个中断过去的。他这样做的好处是把stack模拟成 外设了。

出0入0汤圆

 楼主| 发表于 2015-3-31 09:10:58 | 显示全部楼层
cnshibo 发表于 2015-3-31 08:39
之前研究过,不过有点忘了。调用 stack其实是通过一个中断过去的。他这样做的好处是把stack模拟成 外设了。 ...

我刚特意去看了两个工程的启动代码,在启动代码里没有看到你说的中断。
如果模拟成外设,应该在中断向量表里有相应的中断。

出0入0汤圆

发表于 2015-3-31 11:15:21 | 显示全部楼层
我也是这块搞不清楚,哪位高人来讲讲

出0入0汤圆

 楼主| 发表于 2015-3-31 15:59:22 | 显示全部楼层
alcohol 发表于 2015-3-31 08:22
不是大牛,懂点系统的东西:

这个最简单的,我认为可以做分片的或调度的算法,到了时间片或允许非协议栈运 ...

再次仔细看了官方提供的代码,确实是通过中断进去的。

出0入4汤圆

发表于 2015-4-1 13:08:02 | 显示全部楼层
cumtgao 发表于 2015-3-31 09:10
我刚特意去看了两个工程的启动代码,在启动代码里没有看到你说的中断。
如果模拟成外设,应该在中断向量 ...

软件中断。

出0入0汤圆

发表于 2015-4-1 14:25:49 | 显示全部楼层
知道一个办法,不知道是否可以!可以将函数的指针定义在程序固定位置,APP访问这些函数指针即可!

出0入0汤圆

发表于 2015-4-1 14:41:22 | 显示全部楼层
nrf是有6个SWI(Software Interrupts)的

出0入0汤圆

发表于 2015-4-16 13:07:23 | 显示全部楼层
请转到S110头文件nrf_svc.h,就知道答案了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 19:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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