NRF51822如何调用协议栈提供的API函数?
我们在使用NRF51822做蓝牙低功耗时会发现,需要先烧写官方提供的一个协议栈。hex文件。之后是烧录我们的APP工程文件,细心的会发现工程文件IROM起始地址变成了0X14000,RAM也便宜了0X2000。
这样的工程很像我们平常经常用到的bootloader+app工程模式设置方式,但是我们平常用的bootloader和app都是只调用各自工程内的函数,没有跨工程调用。
那么问题来了,51822芯片是如何让我们的app工程调用官方提供的HEX文件内的函数的呢?
我猜测如下:
官方的HEX文件内没有main函数,编译成hex文件后看各个函数的绝对地址,在app中调用的是指向该绝对地址的函数指针。
但是这种做法没有亲自验证,希望能有大牛级人物来个较详细的详解。
同样表示好奇~ 不是大牛,懂点系统的东西:
这个最简单的,我认为可以做分片的或调度的算法,到了时间片或允许非协议栈运行,中断之。 之前研究过,不过有点忘了。调用 stack其实是通过一个中断过去的。他这样做的好处是把stack模拟成 外设了。 cnshibo 发表于 2015-3-31 08:39
之前研究过,不过有点忘了。调用 stack其实是通过一个中断过去的。他这样做的好处是把stack模拟成 外设了。 ...
我刚特意去看了两个工程的启动代码,在启动代码里没有看到你说的中断。
如果模拟成外设,应该在中断向量表里有相应的中断。 我也是这块搞不清楚,哪位高人来讲讲 alcohol 发表于 2015-3-31 08:22
不是大牛,懂点系统的东西:
这个最简单的,我认为可以做分片的或调度的算法,到了时间片或允许非协议栈运 ...
再次仔细看了官方提供的代码,确实是通过中断进去的。 cumtgao 发表于 2015-3-31 09:10
我刚特意去看了两个工程的启动代码,在启动代码里没有看到你说的中断。
如果模拟成外设,应该在中断向量 ...
软件中断。 知道一个办法,不知道是否可以!可以将函数的指针定义在程序固定位置,APP访问这些函数指针即可! nrf是有6个SWI(Software Interrupts)的 请转到S110头文件nrf_svc.h,就知道答案了。
页:
[1]