在DSP程序开发中,往往涉及到多个TSK共同访问共享资源,此时各个TSK会形成竞争关系,这样需要类似Linux C中的互斥量等机制,这里介绍一种是使用HWI中断机制的临界区保护方法:
#define CRITICAL_DECL_PROTECT(lev) Uint32 lev
#define CRITICAL_PROTECT(lev) lev = HWI_disable()
#define CRITICAL_UNPROTECT(lev) HWI_restore(lev)
使用方式如下:
1)在程序中,先调用CRITICAL_DECL_PROTECT(lev)
2)在访问临界区前, CRITICAL_PROTECT(lev)
3)访问临界区资源
4)访问完临界区资源后,回复HWI中断 CRITICAL_UNPROTECT(lev)