SCP固件执行步骤
运行前阶段:按固定顺序排列的5个阶段
• 模块初始化:框架使用模块配置数据调用的模块的.init()函数。
• 元素初始化:带有元素配置数据的框架调用的模块的.Element_init()函数。只有当模块具有元素时,此阶段才有效。
• 初始化后:框架调用的模块的.Post_init()函数。元素数据提供给模块后的任何额外初始化。可选阶段。
•框架调用的模块的Bind:.Bind()函数。模块和元素绑定到其他模块和元素。可选阶段。
• 框架调用的模块的Start:.Start()函数。模块可以使用其他模块的资源来完成初始化。
可选阶段。
• 主要由模块之间的交互引导的正常执行流程。
• 生成和处理的事件、通知和响应。
模块间通信
Events
事件:交流请求/响应的抽象。在被调用者上下文中实现逻辑任务的机制。•模块提了.procse_event()处理程序,当找到事件目标模块时,Framework会调用该处理程序。•当与请求相关的任务完成时,可能会发送响应事件。响应可以作为事件处理的一部分发送,也可以稍后发送。–延迟响应:稍后发送响应,而不是在处理事件后立即发送–标准响应:一旦.produce_event()返回,Framework就会生成响应。–响应是一个设置了响应标志的事件。固件以与事件相同的方式进行处理。
Notifications
通知:设置了通知字段的事件。•模块可以订阅来自其他模块的通知。通知由框架广播到所有订阅的模块。•可用于实现依赖链。–例如,如果在系统电源转换之前,我们可能需要更改时钟或设置一些
唤醒处理。模块可以使用来自系统电源模块的通知。
事件处理
创建事件-put_event()
put_event_and_wait()
模块不使用公共/框架线程。线程阻塞,直到事件得到处理并生成响应。
处理事件
在框架/公共线程或模块线程上下文中处理的事件
-
模块
+关注
关注
7文章
2703浏览量
47458 -
ARM
+关注
关注
134文章
9091浏览量
367492 -
通信
+关注
关注
18文章
6031浏览量
135975 -
固件
+关注
关注
10文章
556浏览量
23018 -
SCP
+关注
关注
0文章
29浏览量
9249
发布评论请先 登录
相关推荐
评论