第4章C55x处理器的软件设计 4.1.2应用嵌入式操作系统 任务要使用信号量,首先要对信号量进行初始 化。 如果任务要得到信号量,首先要执行“等待” 操作。 如果该信号量有效(信号量的值大于0),则该 信号量值减1,任务得以继续执行。 如果信号量的值为0,等待信号量的任务就被列 入等待信号量任务表 2010年7月18日 TMS320C55xDSP原理及应用 21
第4章C55x处理器的软件设计 4.1.2应用嵌入式操作系统 如果等待时间超过某一设定值,该信号量还无效 ,那么等待信号量的任务自动进入就绪状态并准备运 行,并向系统报一个“超时错误”信息。 2010年7月18日 TMS320C55xDSP原理及应用 22
第4章C55x处理器的软件设计 4.1.2应用嵌入式操作系统 任务还可以释放信号量。 如果这时没有任务等待信号量,则信号量的值加1。 如果有任务等待该信号量,那么就会有一个任务进入就 绪状态,信号量的值不增加。 实际上,等待该信号量的任务可能有多个。在嵌入式操 作系统中通常依照优先级来决定由哪个任务取得信号量。 2010年7月18日 TMS320C55xDSP原理及应用 23
第4章C55x处理器的软件设计 4.1.2应用嵌入式操作系统 两个任务之间可以利用信号量来取得同步,这种 同步可以分成两类—一 单向同步和双向同步。所谓 “ 单向同步”是指任务用一个信号量触发另一个任务。 发出信号量 得到信号量 任务 任务 单向同步 2010年7月18日 TMS320C55xDSP原理及应用 24
第4章C55x处理器的软件设计 4.1.2应用嵌入式操作系统 当两个任务需要相互同步对方,这时就要用到双 向同步。 发出信号量 得到信号量 任务 任务 得到信号量 发出信号量 两个任务的双向同步 2010年7月18日 TMS320C55xDSP原理及应用 25