在persistent_app里调用PIN_open()函数死机,屏蔽掉它,程序运行正常。
但是同样的配置,在user app程序里调用就正常。
请问一下:是这个函数访问地址在persistent_app里超出范围了吗?该如何解决这个问题?映射还是别的替代可调用函数?谢谢!
备注:persistent_app程序空间是足够的
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在persistent_app里调用PIN_open()函数死机,屏蔽掉它,程序运行正常。
但是同样的配置,在user app程序里调用就正常。
请问一下:是这个函数访问地址在persistent_app里超出范围了吗?该如何解决这个问题?映射还是别的替代可调用函数?谢谢!
备注:persistent_app程序空间是足够的
我以下步骤很容易复现该问题(在persistenr_app程序里调用PIN_open()函数导致死机):
1、我新建一个文件夹,然后导入官方bim,persistenr_app及simple_peripheral_oad_onchip三个程序。编译后写入2642,在手机上很容易就搜到SP OAD on-chip,写入一个非0值后,就变成OAD Persistent App蓝牙名了。
2、我在persistent_app.syscfg里添加一个IO口中断输入,然后在oad_persistent_app.c里添加如下程序编译后写入CC2642。这时在手机上很容易就搜到SP OAD on-chip,写入一个非0值后,就找不到我的设备了!(无OAD Persistent App蓝牙名出现)。
请问如何解决呢?我用的是SDK5.40版本。
谢谢
我检查了PIN_open(),没有任何的限制,应该是你的OAD程序本身的问题:OAD升级过程中不能中断,否则就会进入到Persistent App
另外SDK5.40已经删除了PIN驱动程序,改为了GPIO+:
// OAD events if(events & SP_OAD_NO_MEM_EVT) { // The OAD module is unable to allocate memory cancel OAD OAD_cancel(); #ifdef LED_DEBUG // Diplay is not enabled in persist app so use LED GPIO_write(CONFIG_GPIO_RLED, 1); #endif //LED_DEBUG }