物联网|嵌入式开发:嵌入式软件错误的5大原因( 二 )


5.不可重入函数
从技术上讲 , 不可重入函数的问题是竞争条件问题的一个特例 。 出于这个原因 , 由不可重入函数引起的运行时错误是相似的 , 也不会以可重现的方式发生——这使得它们同样难以调试 。 不幸的是 , 与其他类型的竞争条件相比 , 不可重入函数在代码审查中也更难发现 。
使函数可重入的关键是暂停对外围寄存器、全局变量(包括静态局部变量)、持久堆对象和共享内存区域的所有访问的抢占 。 嵌入式开发人员可以通过禁用一个或多个中断或通过获取和释放互斥锁来完成 , 共享数据类型的细节通常决定了最佳解决方案 。