reboot porting,重启指令的kernel移植,linux shell command

linux之调度管理(8)-SMP cpu 的 psci启动 psci是arm提供的一套电源管理接口,当前一共包含0.1、0.2和1.0三个版本。它可被用于以下场景:(1)cpu的idle管理(2)cpu hotplug以及secondary cpu启动(3)系统shutdown和reset但该接口不包含dvfs和设备电源管理(如像GPU之类的外设电源管理)功能。由于psci与虚拟化以及trust os有一定的关联,为了专注于电源管理相关的实现,故本系列的介绍都不涉及与它们相关的内容。 阅读详情

[By lanmanck]

搜索了一下,好像没怎么介绍移植时这个指令是如何执行的。

一般在shell窗口下输入reboot会重启电脑,嵌入式亦然。那么在移植Kernel到arm时要怎么实现reboot,或者重启指令呢?

一般重启就是复位,有外部看门狗或者内置看门狗都可,不同的SOC/不同的电路有不同方法,今儿个以TI Davinci平台为例说一下。

当输入reboot,内核调用如下:

/kernel/sys.c

SYSCALL_DEFINE4()->kernel_restart()->machine_restart()->arm_pm_restart()

/arch/arm/kernel/process.c

arm_pm_restart()->arm_machine_restart()->arch_reset()

/arch/arm/mach-davinci/include/mach/system.h

arch_reset()->davinci_watchdog_reset()

/arch/arm/mach-davinci/time.c

davinci_watchdog_reset()

可见,最终调用的是davinci_watchdog_reset(),也就是在time.c中实现,因此,移植时主要提供如下文件和函数即可:

system.h,以及arch_reset()。

Easy ?

在Windows11上安装ubuntu版linux系统并实现桌面图形化(WSL) 在Windows11上安装ubuntu版linux系统并实现桌面图形化(WSL),xfce桌面美化、安装google-chrome 阅读详情

相关推荐

【C++】C++异常语法、使用、规范、异常安全及异常的优缺点

实际中我们可以可以去继承exception类实现自己的异常类。但是实际中很多公司像上面一样自己定义一套异常继承体系。因为C++标准库设计的不够好用。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。C++ 提供了一系列标准的异常,定义在 中,我们可以在程序中使用这些标准的异常。异常是一种处理错误的方式,

weixin_51692487的博客 1524

android 系统重启关机流程分析

1.5 android 系统重启关机流程分析 1.5.1 c语言中调用 reboot 函数 bionic/libc/unistd/reboot.c:33: int reboot (int mode) { return __reboot( LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, mode,NULL ); } 1.5.2 通过 adb 让系统重

Linux and C 2954

游戏开发实战:如何在Unity中实现六边形网格地图(附完整代码)

本文详细介绍了在Unity中实现六边形网格地图的完整开发流程,从数学原理到实战代码。涵盖三种主流坐标系转换方法、距离计算算法对比、网格生成与渲染技巧,以及高级功能如网格高亮、寻路算法和性能优化策略。适合策略游戏、战棋类游戏开发者提升地图系统开发效率。

652

STM32+Keil 如何使用printf函数?

【lanmanck原创】 Keil不支持Host-semi机制,即不支持直接在IDE打印字符串。 那么只能通过程序向硬件串口发数据了,这样调用的时候用自定义的函数即可,也很方便,例如: void send_char_to_usart(unsigned char c){} 但是可否直接使用printf函数呢?毕竟人家都做好了,我们给他定一个打印输出的接口就可以了,答案是肯定的,看ST的官

LYJ个人博客,记录技术、八卦、生活,分享各种心得,期待与朋友们一同进步 4万+

如何理解反步法设计控制器?

假设以二阶系统为例,被控对象的系统状态方程为: 基于反步控制的具体方法如下: 1.1步骤一 定义期望状态为xd,状态误差e1,为: e1=x1-xd; 则e1的导数为: 1.2步骤二 定义虚拟控制量为: e2定义为: 1.3步骤三 定义Lyapunov能量函数为: 1.4步骤四 定义总Lyapunov能量函数为: 因此设计的控制律为: 设计c>0,则: 满足Lyapunov的稳定性判定条件...

weixin_42736130的博客 2万+

XCP_Basic 移植步骤

XCP_Basic 移植步骤

ggzzc的博客 2316

reboot 流程

前言 对于生在智能时代的我们,对关机和重启这两个概念肯定不会陌生,尤其经历早期Android智能机的人们,印象最深恐怕就是重启,当然现在不会了,还没有改过来的都被淘汰了。在Linux系统中我们使用reboot完成这个动作。 应用层 重启reboot基本上都是通过一条命令实现,之所以聊一下应用层,主要是新的系统中reboot shutdown halt sleep等,这些操作被systemd统一管理了,我们简单看一下,不做深入研究 ...

我的专栏 7955

ArduPilot代码解析之四 — 姿态和位置控制

ArduPilot采用级联控制架构实现飞行器的姿态和位置管理。该系统通过位置→速度→加速度→姿态→角速率→电机指令的逐级转换,将高级指令转化为底层执行信号。位置控制采用三维独立控制,水平轴与垂直轴分别处理;姿态控制通过角度误差→角速率→电机输出的两层级联实现。系统支持多种输入模式,并内置运动学整形功能确保轨迹平滑。不同飞行器类型(多旋翼、直升机、潜艇等)有专门的调参方案,通过调整PID参数、加速度限制等实现最优控制性能。该架构兼顾控制精度与飞行稳定性,适用于各类自主飞行场景。

rainercool的专栏 825

android 关机 流程_android 关机重启流程

在PowerManager的API文档中,给出了一个关机/重启接口:public void reboot (String reason)对于这个接口的描述很简单,就是几句话。接口的作用就是重启设备,而且,就算重启成功了也没有返回值。需要包含REBOOT权限,也就是android.permission.REBOOT唯一参数reason代表需要的特定重启模式,比如recovery,当然也可以为null...

weixin_30186743的博客 597

DC算法竞赛——北京PM2.5浓度回归分析

北京PM2.5浓度回归分析 比赛结果(118/1150) 一. 概述 1、项目来源:https://www.dcjingsai.com/static_page/cmpList.html 2、给定数据字段如下: 3、使用方法:回归算法 4、目的:预测北京pm2.5值,使平均预测误差越小越好。 二、分析过程 setwd("E:/R数据源") #读入数据 data <- read.csv('p...

玻璃球的博客 3474

避坑指南:时间序列互相关分析(CCF)常见的5个误用场景

本文详细解析了时间序列互相关分析(CCF)中常见的5个误用场景,包括忽视平稳性检验、混淆同期相关与因果关联、误读滞后阶数、忽略自相关干扰以及样本量不足等问题。通过实际案例和技术建议,帮助数据分析师避免这些陷阱,确保CCF分析的准确性和可靠性。

weixin_29064009的博客 428

新路程------imx6q的reboot过程

之前的看门狗时好时坏,最后发现是输出wdog_B的电容过小导致低电平时间太短,于是看了一下为什么reboot命令最后会以拉低这个gpio为结果,参考代码分析:    reboot先来到 /kernel/sys.c中 void kernel_restart(char *cmd) { kernel_restart_prepare(cmd); if (!cmd) printk(KERN_E

u013308744的专栏 1678

BGP路由聚合:自动聚合和手动聚合

路由聚合是指将多条具体的路由合并为一条聚合路由,以减少路由表的条目数。这种技术通过只向对等体发送聚合后的路由,而不发送所有的具体路由,来减小路由表的规模。同时,被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

网络技术联盟站 1220

jupyter kernel 重启kernel命令

jupyter kernel重启kernel命令

qq_45759229的博客 5276

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

[RK3399][Android7.1] 系统重启调用过程(PSCI)

https://blog.youkuaiyun.com/kris_fei/article/details/81207133 Platform: RK3399  OS: Android 7.1  Kernel: v4.4.83 系统重启调用和rk3288基本类似,只是rk3399平台对应的arm_pm_restart不同了。 rk3288的可参考  [RK3288][Android6.0] 系统重启调用过...

9527的专栏 1680

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android L 关机流程图

do_msm_poweroff()与do_msm_restart()都设置了dload,PMIC,唯一不同的是do_msm_restart()里多了一个__raw_writel的动作,即reason写入IMEM,目的在于重启进入sbl1时判断应该进入那种模式,如我们开发用的bootloader模式,恢复出厂设置的recovery模式等。//也是用bootanim进程,跟开关动画一样的方式。

Venus 的博客 1023

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

arm64-reboot流程

ARM64-reboot流程 文章目录ARM64-reboot流程1. 用户态reboot 执行流程2. 内核系统调用3. PSCI 电源状态协调接口3.1 kernel发起的`PSCI`复位3.2 TrustZone的异常处理 1. 用户态reboot 执行流程 当命令行输入reboot命令时,busybox会vfork一个子进程,调用reboot函数: 此时,reboot函数进入到libc,libc里面封装了Linux的系统调用: 2. 内核系统调用 这样就进入到了Linux的系统调用部分的代码:校

weixin_38878510的博客 4650

Android启动过程

由于IO操作的过程中,写入文件并非立刻就会真正意义上写入物理磁盘,以及在写入文件的过程中还可能中断或者出错等原因的考虑,采用的策略是先将老的文件package-usage.list,重命为增加后缀package-usage.list.bak;PM.reboot最终也就是setprop sys.powerctl,那么谁来监听sys.powerctl 值呢,是init没错是init,接下来重点介绍init,//根据haltMode 区分,reboot,shutdown,rebootsafemode。

fenghanfenghan的博客 657

Android关机重启流程(三)

一、回顾 前面我们从最开始的PM.reboot(),经过层层调用,最终调用libc库得reboot和syscall,也正式开始从用户空间切到到内核空间。 二、内核重启流程 kernel/reboot.c arch/arm64/kernel/process.c 2.1  SYSCALL_DEFINE4(reboot 内核空间reboot入口 /* * Reboot system c...

anlory的专栏 1898

linux reboot流程

在kernel根文件系统下做了实验,在命令行输入reboot,加log,跟踪代码。主要用于自己的学习总结。 SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg) struct pid_namespace *pid_ns = task_active_pid_ns(cur

helloyizhou的博客 4892

winusb —— 不再为你的usb设备编写驱动

【blog.youkuaiyun.com/lanmanck】 曾几何时我们找工作还发现有个驱动工程师职位,月薪也不低,没接触过的人代码压根看不懂。 今天可好了,如果不太追求差异化,不用驱动也能让系统与USB设备通信了,Linux就不说了,libusb很好用,现在说下windows的。 Winusb是从XP-SP2起微软提供的一个类似libusb与usb设备通信的中间件,通过它我们就不需要再费奏折的研究和...

爬行的菜鸟的博客 1万+

【Linux kernel】Linux电源管理(3)_Generic PM之Reboot过程

本文是我们在分析Linux内核时第一次遇到Architecture和Machine的概念,顺便解释一下。内核代码中最常见的目录结构就是:arch/xxx/mach-xxx/(例如arch/arm/mach-bcm/)。由该目录结构可知,Architecture(简称arch)是指具体的体系结构,如ARM、X86等等。Machine呢,是指具体体系结构下的一个或一系列的SOC,如bcm等。

weixin_41028159的博客 2857

Linux电源管理(3)_Generic PM之Reboot过程

1. 前言 在使用计算机的过程中,关机和重启是最先学会的两个操作。同样,这两个操作在Linux中也存在,称作shutdown和restart。这就是本文要描述的对象。 在Linux Kernel中,主流的shutdown和restart都是通过“reboot”系统调用(具体可参考kernel/sys.c)来实现的,这也是本文使用“Generic PM之Reboot过程”作为标题的原因。另外

蓝精灵的专栏 879

spyder 中 写TensorFlow程序,如何restart kernel

今天使用Spyder编写TensorFlow的程序,想尝试使用tensorboard绘图。可是第二次运行,总会出现重复的图。在网上查询后,发现需要重启kernel。我在网上看到有人说在Spyder上方的菜单栏——Consoles——restart kernel。但是我找了半天没发现restart kernel。最后找到了,如下图所示。每次运行新的程序之前点一下就可以。 ...

FS's Home 7560

ARM在应用层实现强制复位重启(reboot)

当reboot指令不可用时,可以通过内核模块强制复位系统

✨小太阳丶微凉✨的博客 709

reboot流程简述

要实现这个需求,除了要知道在lk阶段和上层或者内核阶段如何读写分区,还要很清楚reboot流程 下面说一下以adb reboot recovery重启进入recovery模式说一下reboot流程 system/core/libcutils/android_reboot.cpp int android_reboot(int cmd, int /*flags*/, const char* arg) { ret = property_set(ANDROID_RB_PROP...

qq_39695119的博客 1581
上一篇: PRIMASK与 FAULTMASK,以及CPSID/CPSIE
下一篇: Linux 父进程如何获取子进程返回值?parent get child process return value,fork,wait,wait_pid
#Page#
博客等级 码龄23年 1691粉丝 360原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值