Linux 中断子系统(三)Linux 中断处理过程
原图
中断控制器
ARM 公司提供了一种标准的中断控制器,称为通用中断控制器(Generic
IntermurController,GIC)。目前 GIC 架构规范有 4 个版本:v1~v4。GICv2
最多支持 8 个处理器。GIC v3 最多支持 128 个处理器,GICv3 和 GICv4 只支持
ARM64 处理器。
GICv2 控制器的两个主要功能
分发器(Distributor):系统中所有的中断源连接到分发器,分发器的寄存器用来控制单个中断的属性:优先级、状态、安全、转发信息(可以被发送到哪些处理器)和使能状态。分发器决定哪个中断应该通过处理器接口转发到哪个处理器
处理器接口(CPU
Interface):处理器通过处理器接口接收中断。处理器接口提供的寄存器用来屏蔽和识别中断,控制中断的状态。每个处理器有一个单独的处理器接口。软件通过中断号识别中断,每个中断号唯一对应一个中断源
中断有以下 4 种类型
软件生成的中断(Software Generated Interrupt,SGI):中断号
0~15,通常用来实现处理器间中断(Inter-Processor
I ...
WordPress搭建博客
准备 LAMP 环境
安装wordpress
12wget https://cn.wordpress.org/latest-zh_CN.zipunzip latest-zh_CN.zip
安装Mysql
123sudo apt install mysql-server -ysudo systemctl start mysqlsudo systemctl enable mysql
修改密码权限
12345678910111213141516171819202122232425262728293031cat /etc/mysql/debian.cnf[client]host = localhostuser = debian-sys-maintpassword = ROmgNW5hP8tsSwrBsocket = /var/run/mysqld/mysqld.sock[mysql_upgrade]host = localhostuser = debian-sys-maintpassword = ROmgNW5hP8tsSwrBsocket = /va ...
Linux 中断子系统(二)ARM64 的异常处理过程
原图
异常级别
通常 ARM64 的进程执行在 EL0 级别,内核执行在 EL1 级别。
虚拟机是现在流行的虚拟化技术,在计算机上创建一个虚拟机,虚拟机里可以运行一个操作系统。常用的开源虚拟机管理软件是
QEMU,QEMU 支持基于内核的虚拟机 KVM,KVM
的特点是直接在处理器上执行客户机的操作系统,所以虚拟机的执行速度很快。
ARM64
架构的安全扩展定义了两种安全状态,正常世界和安全世界,两个世界只能通过异常级别
3 的安全监视器切换。
异常类型
中断
在 ARM 处理器中,FIQ(Fast Interruptre Quest)的优先级要高于
IRQ(Interrupt ReQuest)。在芯片内部,分别由 IRQ 和 FIQ
两根中断线连接到中断控制器再连接到处理器内部,发送中断信号给处理器。
中止
中止(abort)主要有指令中止(instruction abort)和数据中止(data
abort)两种,通常是因为访问外部存储单元时发生了错误,处理器内部的
MMU(Memory Management
Unit)能捕获这些错误并且报告给处理器。指令中止是指当处理器尝试 ...
Linux 中断子系统(一)综述
原图
硬件链接相关描述
在上图中主要分为三部分,产生中断的外部设备(中断源)、用于管理中断的中断控制器以及处理中断信号的
cpu。
中断处理流程
在 ARM
处理器上会有一个中断向量的连续地址,一般是零地址开始,之后地址每增加 1
的地址上存放一条跳转指令,用于处理不同的中断信号,当有不同的中断发生时就到对应的地址执行跳转指令,而具体不同的中断信号就在不同中断标号位置进行处理。
保存现场(当前线程环境)— 跳转执行中断服务程序 — 返回恢复现场。
Linux 系统对中断处理的方式
首先需要先明确几个问题:
中断处理过程中是关全局中断的,也就是中断程序处理期间不能响应新的中断。
基于第一点,Linux
内核不允许中断嵌套,其实第一点就已经决定了中断不能嵌套。
基于以上两点,当 Linux
系统的中断任务比较多的时候系统响应就会有很大延迟,为此 Linux
系统将中断设计为上半部和下半部,上半部处理紧急的必须要处理的任务而耗时的不紧急的任务放到中断下半部来处理,中断下半部就是普通的软件程序(但是有一点区别就是
softirq 和 tasklet 运行在中断上下文,而 workqu ...
工具推荐
效率类
Notion
Notion
是一款提供笔记、任务、数据库、看板、维基、日历和提醒等组件的应用程序。用户可以将这些组件连接起来,来创建自己的系统,用于知识管理、笔记记录、数据管理、项目管理等。这些组件和系统可以单独使用,也可以与他人进行跨平台协作。Notion
Page
Notion 的 Page(Page 无处不在)可以创建各种
Block,可以创建链接到其他文章,可以创建链接到 Database,因此 Page
可以用于管理一切想要管理的东西。实际上 Page 是 Notion
的页面基本组成元素与层级关系,作为文件夹,作为文章皆可。
Block
notion
中最基本的数据单位被称为“块”(block),所有的数据都是一个又一个的块结构,可以对这些块结构进行任意的排列组合,按照自己的工作需要进行设计布局,并且可以同步到所有的设备端。notion
提供了超过 40
种块数据类型以供选择,从最基本的文字,到图片、文件、视频、网页、等媒体
,更有表格、数据库、任务追踪等复杂结构等等。 下面是一些基本的 Block
介绍:
列表 notion 提供了几种基本的列表可以进行使用, ...
一种用于实时视频稳定的新型相机路径规划算法
Introduction
视频稳定根据运动模型分为 2D 和 3D 方法。 第一种方法是 2D 视频稳定
[2],它使用 2D 运动模型(例如简单的平移模型、2D 刚性模型和 2D 仿射模型
[3-12])描述两个连续帧之间的关系。 如果相机在 3D 空间中沿 x 轴和 y
轴的旋转很小,则 2D 视频稳定可提供良好的性能 [13]。
然而,随着相机运动变得动态,二维运动模型无法描述连续帧之间的几何关系,性能非常有限。
lee 等 提出了一种无需明确估计相机运动即可直接稳定视频的方法 [14]。
该方法找到一组变换来平滑特征轨迹 [15, 16] 并稳定视频。
第二种方法是 Buehler 等人引入的 3D 视频稳定 [17]。早期的 3D
方法使用来自运动的结构 (SFM) 技术重建场景和相机运动的 3D 模型
[18]。然后在新的 3D 相机路径上渲染稳定的视图 [17, 19]。 3D
视频稳定提供比 2D 方法更好的性能。由于这些 3D
方法在处理缺乏视差的视频时经常失败,因此它们在许多情况下并不实用 [20]。
Liu 提出了结合 2D 和 3D 视频稳定优点的子空间视频稳定 ...
基于陀螺仪的视频稳定非线性滤波器
Abstract
我们提出了一种对移动设备上捕获的视频进行视频稳定和滚动快门校正的方法。该方法使用来自机载陀螺仪的数据来跟踪相机的角速度,并且可以在相机捕获期间内实时运行。我们消除了由于手抖动引起的小抖动和滚动快门失真,营造出在三脚架上拍摄的视频的效果。
Introduction
大多数中高端移动设备包含一个多核 CPU 复合体、一个图形处理单元 (GPU)
和一个带有 3 轴陀螺仪的惯性测量单元 (IMU)。
在本文中,我们解决了在此类设备上执行视频稳定的挑战,使用陀螺仪进行运动跟踪。
与大多数稳定方法不同,它们作为捕获视频的后处理步骤运行,我们的方法可以作为相机捕获的一部分实时运行。
Background and Prior Work
视频稳定消除了视频中的抖动,它本质上是一个三阶段过程,包括运动估计阶段、平滑测量运动的滤波阶段和生成新视频序列的重新合成阶段。
当深度变化引起像素运动时,基于图像的跟踪方法会受到影响,视差,单应性不容易建模。此外,滚动快门成像传感器可以引入非刚性的帧到帧对应关系,不能简单地通过全局帧到帧运动模型进行建模。为了解决滚动快门问题,Baker
等人 [8 ...
使用陀螺仪的数字视频稳定和卷帘快门校正
Abstract
在本文中,我们提出了一种基于商用陀螺仪的强大实时视频稳定和滚动快门校正技术。首先来对相机运动和卷帘快门扭曲进行建模,然后从单个视频捕获自动校准陀螺仪和相机输出。
这种校准使我们能够仅使用陀螺仪数据来有效校正卷帘快门扭曲并稳定视频。
Video
Stabilization and Rolling Shutter Correction
我们系统中的相机运动仅根据旋转进行建模。
我们忽略平移运动,加速度计数据必须被积分两次才能获得位移,因此它们很难使用
IMU
准确测量。即使我们可以准确地测量平移,这也是不够的,因为在相机相同平移量的情况下不同深度的物体移动的量不同,我们将不得不依赖立体或基于特征的运动结构(SfM)算法来获取深度信息。这些方法并不健壮,而且目前在移动平台上实时运行计算成本太高。
Forsse ́n 和 Ringaby[2010]
试图在他们的系统中模拟相机位移,但发现结果比只考虑旋转的模型表现更差。
他们假设优化器在尝试从特征跟踪器重建位移时陷入局部最小值。他们的算法还假设相机正在对纯平面场景(即恒定深度)进行成像。
因此,由于视频中的未建模视差,平移 ...
基于 IMU 传感器的视频稳定混合运动估计
Abstract
在本文中,我们提出了一种混合方法来估计运动并通过切换函数稳定视频,该方法在
Kanade-Lucus-Tomasi (KLT) 跟踪器和 IMU
辅助运动估计器之间切换估计的运动。为了实现这一点,由于 KLT
跟踪器在较大运动期间的性能不佳,我们使用 KLT
跟踪器来校正低旋转的运动,并使用 IMU
辅助运动估计器来校正高旋转,此外,卡尔曼滤波器用于去除不需要的运动,从而平滑轨迹。
Introduction
在相机市场,光学图像稳定(OIS)系统安装在相机镜头或图像传感器上,价格相当昂贵
[3]。另一方面,数字稳定系统通过在相机移动时补偿捕获图像的移动来处理图像,它可以分为三个步骤,即运动估计、运动平滑和图像扭曲
[4,5]。
数字视频稳定中运动估计的常用技术是分别使用块匹配 [9]、KLT
(Kanade-Lucus-Tomasi) 跟踪器 [10,11]、SIFT [12] 和 SURF [13]。最近,Dong
et al. [14] and Lim 等人 [15] 使用 KLT
跟踪器以高帧率和低计算成本实时估计运动, KLT 跟踪器通过 Good Feat ...
EIS 电子防抖基本原理
投影
这里以小孔成像模型为例,全相模型是相同的流程只是投影模型不一样而已。在相机校准模型一文中已经介绍了将像素坐标系变换到相机坐标系中
相机校准模型
如下:
\[
\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix}
\frac{1}{d_x}& 0 &u_o \\ 0 & \frac{1}{d_y}& v_0\\ 0
& 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}
= \frac{1}{z_c}\begin{bmatrix} \frac{f}{d_x}& 0 &u_o \\ 0 &
\frac{f}{d_y}& v_0\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix}
x_c\\ y_c\\ z_c \end{bmatrix}
\]
这里我们取 \(z_c = 1\)
再做一个 ...