主题中讨论的其他器件:HALCOGEN
您好:)
启用 MPU 时、使用 HalCoGen 生成的驱动程序的正确方法是什么?
例如,当我尝试使用 SCI 驱动程序通过中断接收某些数据时,我可以调用 sciReceive()函数。 调用 sciReceive()函数的普通非特权 FreeRTOS 任务仅有权访问其自身的堆栈和其他特定于任务的存储器区域(如果已定义)。 问题是,HalCoGen 使用 一些 sciReceive()引用的静态全局结构(在本例中为 g_sciTransfer),但这些静态全局结构超出了此默认任务的内存访问权限。 调用 sciReceive()后,数据中止。 因此、要么需要在用户代码开始之外修改 HalCoGen 生成的源代码-用户代码结束段、要么需要在用户代码中添加一些额外的逻辑、 或者用户需要编写自己的不使用 HalCoGen 全局结构的 sci 驱动程序或者它必须是一个特权任务(当然不需要最后一个选项)。
谢谢、
Adam