Ubuntu16.04+Anaconda3+Python3.6下opencv3.1.0安装与临界区详解

需积分: 43 60 下载量 37 浏览量 更新于2024-08-08 收藏 2.89MB PDF 举报
在本文档中,我们主要探讨了在Ubuntu 16.04环境下,使用Anaconda3和Python 3.6安装OpenCV 3.1.0的过程中涉及的一个关键概念——临界区(Critical Section)及其在实时操作系统(RTOS)FreeRTOS中的应用。临界区在RTOS中扮演着确保并发任务间数据同步和互斥访问的重要角色,特别是在资源有限的嵌入式系统中,如微型控制器。 基本临界区由宏 taskENTER_CRITICAL() 和 taskEXIT_CRITICAL() 定义,这段代码示例确保了对PORTA寄存器的操作在中断服务程序(Interrupt Service Routine,ISR)不可执行的区域进行,从而避免数据竞争和并发错误。进入临界区后,任务间的上下文切换会被暂时禁用,只允许优先级高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断执行,同时这些中断也不能访问FreeRTOS API函数,以保持系统的实时性和任务安全性。 例如,在提供的范例工程中,vPrintString()函数被多个任务调用,它负责将字符串写入标准输出,如Open Watcom DOS可执行程序的终端窗口。为了确保在并发环境中对标准输出的访问不会相互干扰,vPrintString()函数内部应该包含一个临界区,以保护数据一致性。 FreeRTOS是专为微控制器设计的开源实时操作系统,其核心在于任务管理和调度,旨在提供高效、可靠的并发控制。文章提到,作者打算翻译FreeRTOS的官方文档,因为虽然FreeRTOS的优秀性不是唯一原因,但其简洁性和网站对中国用户的友好性使得这个选择更具吸引力。然而,值得注意的是,作者的翻译并非专业版本,并且可能未涵盖所有附录内容,对于任何发现的问题,作者请求读者理解并指出,而不是责怪。 这部分内容深入讲解了在嵌入式开发中如何通过临界区来管理任务并发,以及FreeRTOS在其中的作用,对于理解和实践RTOS系统编程具有实际指导意义。