IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 优麒麟 | RISC-V开发板关机流程浅析 -> 正文阅读

[系统运维]优麒麟 | RISC-V开发板关机流程浅析

HiFive Unmatched 是一款基于 RISC-V 处理器的 PC 形态开发板,此开发板开创了 RISC-V Linux 开发的新时代。它拥有一个名为 SiFive FU740 SoC 的 SiFive 处理器,一个 5 核处理器,由四个 SiFive U74 核和一个 SiFive S7 核构成,具有足够的性能来支撑图形桌面的运行。

2021 年 12 月 29 日,在优麒麟社区和海河实验室研发团队的共同努力下,发布了优麒麟社区首个支持 RISC-V 架构的 20.04 Pro 版本操作系统,此版本系统针对 HiFive Unmatched 进行了深度适配,其中系统无法关机的问题,在研发团队的努力下取得了突破,实现了通过系统关机断电的功能。

1、Hifive Unmatched 开发板硬件支持

PMIC 是 power management IC 的缩写,中文是电源管理集成电路,主要特点是高集成度,将传统的多路输出电源封装在一颗芯片内,使得多电源应用场景效率更高,体积更小。此开发板使用 DA9063 芯片作为其 PMIC ,实现电源管理模块。

Hifive Unmatched 开发板硬件关机共支持两种方式,一种是由 CPU 相关功能引脚直接外接开/关机按键,通过按键使对应引脚产生高低电平变化实现关机,用户可以通过按键操作直接关机。另一种是通过开发板硬件电源管理模块(即上述 DA9063 )外接开/关机按键实现开/关机功能。

2、优麒麟系统关机流程软件实现

在 Linux Kernel 中,主流的 shutdown 和 restart 都是通过“reboot”系统调用(具体可参考 kernel/sys.c )来实现的,关机也是一种特殊的 restart 过程,所以,内核根据不同的表现方式,将 reboot 分为如下的几种方式:

本篇文章主要讲解关机流程,即其中的 POWER_OFF ,执行该动作后,系统会停止操作系统,并去除所有供电。在优麒麟中可以通过 poweroff 命令,发起如下流程:

用户空间程序通过 reboot 系统调用,进入内核空间。具体实现是在内核目录的 kernel/reboot.c 中的下图函数中:

其中针对 cmd 有多个 case,poweroff 等关机命令实际调用的是:

内核空间提供了 kernel_restart 处理函数,响应用户空间的 reboot 请求。其处理流程主要包括:

  • 向关心 reboot 过程的进程发送 Notify 事件;

  • 调用 drivers 核心模块提供的接口,关闭所有的外部设备;

  • 调用 drivers syscore 模块提供的接口,关闭 system core;

  • 调用 Architecture 相关的处理函数,进行后续的处理;

  • 紧接着执行了 machine_power_off 函数。

我们在 machine_power_off 函数中可以看到,如果 pm_power_off 这个函数指针不为空,那么系统就会通过调用这个函数进行关机。

实际上 pm_power_off 函数指向了 gpio-poweroff.c 中的 gpio_poweroff_do_poweroff 函数,在此函数中去实际操作 GPIO 。

整个关机流程会依次进行如下调用:

-->kernel_power_off()
-->kernel_shutdown_prepare  
-->migrate_to_reboot_cpu
-->syscore_shutdown
-->machine_power_off  // 该函数根据具体平台而定,riscv 平台在 arch/riscv/kernel/reset.c 文件中

Hifive Unmatched 开发板中的 SiFive FU740 芯片将 GPIO2 口用作关机使用,我们只需要给 GPIO2 发送低电平脉冲即可实现关机,具体流程如下:

首先要更改内核源码中对应开发板的设备树文件,在内核源码中的 /arch/riscv/boot/dts/sifive/hifive-unmatched-a00.dts 文件,向其中增加关机设备节点:

gpio-poweroff {
    compatible = "gpio-poweroff";
    gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
}

其次,需要在内核中相应的驱动代码中将设备树节点与驱动匹配。

将设备节点与驱动相匹配后,当用户发起关机请求,经过上述关机流程,最后控制硬件完成关机断电的操作。

以上即为 Hifive Unmatched 开发板的整体关机流程,感兴趣的小伙伴,赶紧到优麒麟官网下载体验吧。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:32:30  更:2022-04-01 00:35:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:17:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码