由于psci是由linux内核调用bl31中的安全服务,实现cpu电源管理功能的。因此其软件架构包含三个部分:
(1)内核与bl31之间的调用接口规范
(2)内核中的架构
(3)bl31中的架构
psci接口规范
psci规定了linux内核调用bl31中电源管理相关服务的接口规范,它包含实现以下功能所需的接口:
(1)cpu idle管理
(2)向系统动态添加或从系统动态移除cpu,通常称为hotplug
(3)secondary cpu启动
(4)系统的shutdown和reset
psci接口规定了命令对应的function_id、接口的输入参数以及返回值。其中输入参数可通过x0 – x7寄存器传递,而返回值通过x0 – x4寄存器传递。
如secondary cpu启动或cpu hotplug时可调用cpu_on接口,为一个cpu执行上电操作。
该接口的格式如下:
(1)function_id:0xc400 0003
(2)输入参数:使用mpidr值表示的target cpu id
cpu启动入口的物理地址
context id,该值用于表示本次调用上下文相关的信息
(3)返回值:可以为success、invalid_parameter、invalid_address、already_on、on_pending或internal_failure
有了以下这些接口的详细定义,内核和bl31就只需按照该接口的规定,独立开发psci相关功能。从而避免了它们之间的耦合,简化了开发复杂度。
全部0条评论
快来发表一下你的评论吧 !