[nrf51][nrf52] 移植RTX或者FreeRTOS需要注意的问题

2024-02-17 15:30

本文主要是介绍[nrf51][nrf52] 移植RTX或者FreeRTOS需要注意的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、 使用MDK中的cmsis_os接口,需要查看以下代码是否被启用

/*Setup SVC to reset value.
*/
__STATIC_INLINE void SVC_Setup(void)
{
#if (__ARM_ARCH_7A__ == 0U)/* Service Call interrupt might be configured before kernel start     *//* and when its priority is lower or equal to BASEPRI, svc intruction *//* causes a Hard Fault.                                               */NVIC_SetPriority(SVCall_IRQn, 0U);
#endif
}/* Ensure SVC priority is at the reset value */
SVC_Setup();

原因:由于协议栈中也使用了SVC,这导致APP层调用SVC_Setup();导致协议栈异常。

 

二、 nrf52带BLE协议栈不能使用RTX5或者RTX4

原因大致跟注意(一)差不多

1. 在 RTX 和 Freertos 之外,Freertos 将是目前最好的解决方案。我们暂时在 SDK 中将 RTX 端口设置为“实验性”,因为它还不是 100% 稳定。

2.  RTOS 与我们的软设备同时运行的想法在其核心是不理想的。软设备必须始终具有中断其他任务和运行时序关键协议任务的能力。这使得 RTOS 无法创建不能被中断的安全临界区。

3. 软设备在 nRF52 上启用 FPU 的情况下启用(无意,但这是提出的,将由软设备团队修复)如果启用了 FPU,则需要以不同方式处理 MBR 和软设备中的 SVC 处理程序。如果不与BLE softdevice 结合使用,RTX就能正常使用。

4. 原因是软件设备的 SVC 代码在启用 FPU 时也使用 MSP。对于 RTX 和软件设备,这会导致 MSP 冲突。

官方解释:当将 RTX 从 nRF51 移植到 nRF52 时,RTX 与软设备一起不再稳定。这是因为两者之间的架构差异。在我们使用新形式的临界区和无滴答空闲处理从头开始重新构建 nRF52 RTX 端口之前,支持已被移除。

三、 ANT协议栈问题

在 nRF51 兼容性矩阵中看到的,SDK 12.3.0 不支持 S310 软设备,支持该软设备的最后一个 SDK 是 SDK 10.0.0。

应该可以将 SDK 12.3 中的示例更改为使用 S310 软设备的 API,但没有可用的示例来说明这一点。S310 v3.0.0基于S110 v8.0.0和S210 v5.0.0。SDK 10.0.0 同时支持 S310 和 RTX,因此如果这是您要开发的应用程序,它应该是您应用程序的最佳起点。RTX 应该可以和 S110 softdevice 一起使用。

nRF SDK 不太支持 RTX(SDK 12.x 中仅支持 nRF51,并且在 SDK 13 中完全删除了对 nRF51 支持的支持)。我建议查看 FreeRTOS,它在最新的 SDK 中同时支持 nRF51 和 nRF52 系列。SDK v10.0.0以后的nRF51系列不支持ANT,如果要使用以后的SDK,需要更改softdevice调用或者切换到nRF52系列。 

四、 NRF_CLOCK->EVENTS_LFCLKSTARTED 一直循环死等

1. 在 RTX_Conf_CM.c 的 os_tick_init() 中有一个循环,它不会结束。

while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0){Do nothing.}

因为上面的行试图用晶体启动低频时钟,而你没有一个,所以它永远不会启动。或者改为内部时钟。(将 CLOCK_LFCLKSRC_SRC_Xtal 更改为 CLOCK_LFCLKSRC_SRC_Synth)

这篇关于[nrf51][nrf52] 移植RTX或者FreeRTOS需要注意的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/718211

相关文章

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

Python绘制TSP、VRP问题求解结果图全过程

《Python绘制TSP、VRP问题求解结果图全过程》本文介绍用Python绘制TSP和VRP问题的静态与动态结果图,静态图展示路径,动态图通过matplotlib.animation模块实现动画效果... 目录一、静态图二、动态图总结【代码】python绘制TSP、VRP问题求解结果图(包含静态图与动态图

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使