reset

中断与异常

筅森魡賤 提交于 2020-02-08 16:06:02
arm对异常(中断)处理过程 1 初始化: :: a 设置中断源,让它可以产生中断 :: b 设置中断控制器(可以屏蔽某个中断,优先级) :: c 设置CPU总开关,(使能中断) 2 执行其他程序:正常程序 3 产生中断:按下按键--->中断控制器--->CPU 4 cpu每执行完一条指令都会检查有无中断/异常产生 5 发现有中断/异常产生,开始处理。对于不同的异常,跳去不同的地址执行程序。这地址上,只是一条跳转指令,跳去执行某个函数(地址),这个就是异常向量。如下就是异常向量表,对于不同的异常都有一条跳转指令。 (3-5都是硬件强制做的) 6 这些函数做什么事情? :: 软件做的: :: a 保存现场(各种寄存器) :: b 处理异常(中断): :::: 分辨中断源 :::: 再调用不同的处理函数 :: c 恢复现场 --------------------------------------异常向量表------------------------------------- .globl _start _start: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr

5)Learning diary for flutter

你离开我真会死。 提交于 2020-02-06 05:37:13
No update for a long time. This is about an interesting e-reader. At present,The function is no prefect. The main part is the widget be used to display the book content. The code about this part seems a little long So in order to look more concise,first delete the detailed code The widget implements the path calculation according to the position of the finger. The class pageClipper display the area of the page according to the path. import 'dart:math'; import 'package:flutter/material.dart'; class BookWidget extends StatefulWidget { BookWidgetData data; bool enable; var callBack; var

git撤销commit和修改的操作

最后都变了- 提交于 2020-02-04 12:01:27
1、想撤销之前的commit,并且舍弃之前commit的修改 git reset --hard HEAD^ 2、撤销之前的commit,并且保留之前的commit修改 git reset --soft HEAD^ 3、git add 命令提交到暂存区,git reset HEAD demo1就是把提交到暂存区里的文件撤销 来源: CSDN 作者: 追梦-北极星 链接: https://blog.csdn.net/yudelian/article/details/104165902

代码中理解CPU结构及工作原理

早过忘川 提交于 2020-02-03 17:34:12
一、前言    从研究生开始到工作半年,陆续在接触MCU SOC这些以CPU为核心的控制器,但由于专业的原因一直对CPU的内部结构和工作原理一知半解。今天从一篇博客中打破一直以来的盲区。特此声明,本文设计思想及代码均源于如下博文,这里仅用于自己学习记录,以及分享心得之用。 简易CPU的设计和实现_阡飞陌-CSDN博客 https://blog.csdn.net/weixin_36077867/article/details/82286612 二、简易CPU结构与工作原理概述 用下原文中的结构图:    CPU核心模块包括控制器、程序计数器(PC)、存储器(memory)、译码器和算术逻辑单元(ALU)。控制器负责指挥调度各个模块正常工作:PC每到达一个数阶段内,均会进行取指令->译码->执行指令。取指令从memory中取出PC值指向地址的数据,之后数据传入译码器翻译为具体操作目的,最后根据这一目标来让ALU完成算数和逻辑运算,并将运算结果保存到memory指定地址。memory的内容就是在我们之前玩单片机时用IDE将C/C++等高级语言转化成的比特流,里边包括了代码指令、临时变量及所有需要保存的数据数值。 三、设计代码与仿真分析   以下代码仅是对转载博客中进行了少许改动,并无实质变化。 1 `timescale 1ns / 1ps 2 3 // Description: 4 //

STM32 分析启动代码

折月煮酒 提交于 2020-02-03 11:02:25
0x08000000 0408 DCW 0x0408 0x08000002 2000 DCW 0x2000 0x08000004 0059 DCW 0x0059 0x08000006 0800 DCW 0x0800 0x08000008 00AF DCW 0x00AF 0x0800000A 0800 DCW 0x0800 0x0800000C 00A7 DCW 0x00A7 0x0800000E 0800 DCW 0x0800 0x08000010 00AB DCW 0x00AB 0x08000012 0800 DCW 0x0800 0x08000014 00A1 DCW 0x00A1 0x08000016 0800 DCW 0x0800 0x08000018 00C9 DCW 0x00C9 0x0800001A 0800 DCW 0x0800 0x0800001C 0000 DCW 0x0000 0x0800001E 0000 DCW 0x0000 0x08000020 0000 DCW 0x0000 0x08000022 0000 DCW 0x0000 0x08000024 0000 DCW 0x0000 0x08000026 0000 DCW 0x0000 0x08000028 0000 DCW 0x0000 0x0800002A 0000 DCW 0x0000

恢复 git reset -hard 的误操作

走远了吗. 提交于 2020-01-30 17:33:35
有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge。甚至一些很小的操作,例如删除一个分支,我都担心数据丢失。 不 久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我才发现git的历史记录是不可修改的,也就是说你不能更 改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操 作。 让我们来看一些例子: $ git init $ touch foo.txt $ git add foo.txt $ git commit -m "initial commit" $ echo 'new data' >> foo.txt $ git commit -a -m "more stuff added to foo" 你现在看git的历史记录,你可以看到两次提交: $ git log * 98abc5a (HEAD, master) more stuff added to foo * b7057a9 initial commit 现在让我们来重置回第一次提交的状态: $ git reset --hard b7057a9 $ git log * b7057a9 (HEAD, master) initial commit

kubeadm reset后安装遇到的错误:Unable to connect to the server: x509: certificate signed by unknown authority

北慕城南 提交于 2020-01-30 15:14:46
前面通过kubeadm reset重置k8s环境之后,执行了kubeadm init命令 [root@m ~]# kubeadm init --kubernetes-version=1.14.0 --apiserver-advertise-address=192.168.56.51 --pod-network-cidr=10.244.0.0/16 初始化完成后按照出现的提示执行了如下命令: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 执行完毕后,想通过kubectl cluster-info命令查看下集群环境,但是提示上述错误,使用其他kubectl命令也提示相关错误 尝试了很多办法都没有解决,然后想到我在执行上述mkdir的时候会咨询我是否覆盖,我是默认回车,改成输入y之后就可以了 (我想删除原来的文件夹也是可以的),应该是之前的系统配置文件影响到了这次初始化 来源: CSDN 作者: dearfulan 链接: https://blog.csdn.net/qq_35448165/article/details/104115001

git reset --soft/mixed/hard [版本号]命令对比

喜夏-厌秋 提交于 2020-01-29 18:04:40
三个参数: 三个参数:soft、mixed、hard git reset – soft [版本号] git reset – mixed [版本号] git reset – hard [版本号] 三个参数的对比: 相同点: 都是用于版本的回退或者前进 不同点: 关于soft参数: 作用:仅仅在本地库移动HEAD指针 可以这么理解,原来的工作区、暂存区、本地库是同一个版本(如下图): 但执行 git reset --soft [某一版本号] 之后,仅仅在本地库移动HEAD指针,如下图(以版本后退为例): 这样一来,本地库其他两个版本不一致,好像是文件从工作区提交到暂存区之后,没有提交到本地库。 关于mixed参数: 作用: 1.在本地库移动HEAD指针 2.重置暂存区 同样三者原来是同一个版本,执行 git reset --mixed [某一版本号] 之后,如下图所示(以版本后退为例): 这样一来,本地库和暂存区的指针向后移动,就好像是工作区的文件未追踪,没有提交到暂存区、本地库。 关于hard参数: 作用: 1.在本地库移动HEAD指针 2.重置暂存区 3.重置工作区 所以三个指针同时移动,版本正常前进后退。 来源: CSDN 作者: 你的代码没bug 链接: https://blog.csdn.net/weixin_44915226/article/details

git reset和 git revert

主宰稳场 提交于 2020-01-29 08:17:10
介绍 在版本迭代开发过程中,相信很多人都会有过错误提交的时候(至少良许有过几次这样的体验)。这种情况下,菜鸟程序员可能就会虎驱一震,紧张得不知所措。而资深程序员就会微微一笑,摸一摸锃亮的脑门,然后默默的进行版本回退。 对于版本的回退,我们经常会用到两个命令: git reset git revert 那这两个命令有何区别呢?先不急,我们后文详细介绍。 git reset 假如我们的系统现在有如下几个提交: 在这里插入图片描述 其中:A 和 B 是正常提交,而 C 和 D 是错误提交。现在,我们想把 C 和 D 回退掉。而此时,HEAD 指针指向 D 提交(5lk4er)。我们只需将 HEAD 指针移动到 B 提交(a0fvf8),就可以达到目的。 只要有 git 基础的朋友,一定会想到 git reset 命令。完整命令如下: git reset --hard a0fvf8 命令运行之后,HEAD 指针就会移动到 B 提交下,如下图示: 在这里插入图片描述 而这个时候,远程仓库的 HEAD 指针依然不变,仍在 D 提交上。所以,如果直接使用 git push 命令的话,将无法将更改推到远程仓库。此时,只能使用 -f 选项将提交强制推到远程仓库: git push -f 采用这种方式回退代码的弊端显而易见,那就是会使 HEAD 指针往回移动,从而会失去之后的提交信息。将来如果突然发现

const int & 和 int 的区别

偶尔善良 提交于 2020-01-28 13:58:36
当形参是const时,必须要注意关于顶层const的讨论。如前所述,顶层const的作用于对象本身: const int ci=42; //不能改变ci,const是顶层的 int i=ci; //正确:当拷贝ci时,忽略了它的顶层const int *const p=&i; //const是顶层的,不能给p赋值 *p=0; //正确:通过p改变对象的内容是允许的,现在i变成了0 和其他初始化过程一样,当用实参初始化形参时会忽略掉顶层const。换句话说,形参的顶层const被忽略掉了。当形参有顶层const时,传给它的常量对象或者非常量对象都是可以的: void fcn(const int i){ / fcn能够读取i,但是不能向i写值 /} 调用fcn函数时,既可以传入const int也可以传入int。忽略掉形参的顶层const可以产生意想不到的结果: void fcn(const int i) {/ fcn能够读取i,但是不能向i写值 /} void fcn(int i) {/ … /}//错误:重复定义了fdn(int) 在C++语言中,允许我们定义若干具有相同名字的函数,不过前提是不同函数的形参列表应该有明显的区别。因为顶层const被忽略了,所以在上面的代码中传入两个fcn函数的参数可以完全一样。因此第二个fcn是错误的,尽管形式上由差异