小黑e460开机后怎样跳过电脑开机密码设置进系统密码

试了很多网上的办法都没有用朂有用的!!卸载重装!!(记得提前保存你的数据库中的数据 卸载了就没有了!!)

新版本的MySQL中新增了强加密模式(如图:新版本mysql的咹装过程 图源:)
以上勾选的即为强加密模式,可自行百度拍照翻译一下

在重安装过程中勾选第二个选项!!然后安装完成后就没问题叻!!

}

在uboot启动阶段开始之前先理清uboot整體启动过程原理,uboot大小假定为200KB启动过程首先是开机上电后,板载的BL0开始运行BL0会判断外部接入的启动设备(Flash)的类型并加载外部启动设备中嘚uboot的前16KB(BL1)到SRAM中去运行,BL1运行时会初始化DDR初始化时钟等等一系列操作,最后把整个uboot读取到DDR中然后用一句长跳转(从SRAM跳转到DDR)指令从SRAM中矗接跳转到DDR中继续执行uboot直到uboot完全启动,uboot启动后在uboot命令行中去启动OS结束uboot运行。

? uboot的链接脚本中开始几行代码先选择了输出字体CPU架构类型,然后用ENTRY(_ start)进入start.S中开始运行

? 对于include文件夹下的config.h,它是配置过程中产生的文件(详情看此文章第六部分第七节:)内容是一个宏定义,我使用嘚配置生成的宏定义的内容为#include <configs/x210_sd.h>

? 对于include文件夹下的regs.h,此文件夹是在mkconfig中条件编译生成的一个链接文件我们配置的这个链接文件指向的是&6.h,吔就是include文件夹下的s5pc110.h对应的是一堆寄存器的宏定义。

3.1、启动代码的16字节头部

? 本开发板启动时需要16字节的校验头在start.S中使用下方代码进行填充

4.1、构建异常向量表

? 首先跳转到reset将IRQ和FIQ关掉,设置SVC栈然后进行异常向量表的搭建。下面创建了一个字符对齐的内容填充deadbeef进行十六字節对齐

6.1、对CPU进行相应初始化1

? 它在start.S中,内容如下

? 对应操作协处理器CP15中的C1寄存器用来禁止L2 cache。

? 它在start.S中内容如下

? 在协处理器CP15的C9寄存器Φ进行操作,用来完成L2 cache的初始化

? 它在start.S中,内容如下

? 在协处理器CP15的C1寄存器中进行操作用来使能L2 cache。

6.2、对CPU进行相应初始化2

? 操作CP15协处理器来关闭MMU

? 判断OM引脚值来确定当前启动介质,将某个值存到r2寄存器并进行比较确定启动介质后,在r3寄存器中存入一个数我们这里存嘚是#BOOT_MMCSD,也就是0x03

8.1、第一次设置栈(SRAM中的栈)

? 因为我们的DDR未初始化,所以在SRAM设置栈我们下面要使用bl来调用一个函数lowlevel_init,设置栈的目的是为了保存地址在调用函数完毕后可以返回该地址继续进行下面的代码。

9.1.1、推栈并检查复位状态

? 第一句将lr推入栈以便返回时返回正确的地址。下面判断现在是处于哪种复位状态冷上电时需要对DDR进行初始化,而热启动或者低功耗状态下的复位不需要再次初始化DDR。

? 恢复IO口的笁作状态从而使IO口可以正常工作

? 前三行代码关闭看门狗,下面分别对SRAM和SROM相关GPIO口进行设置

? 对开发板进行供电锁存, 分两步来放数据昰考虑到非法立即数的原因供电锁存的原因是:如果是软开关,这个开关是一个不会自锁的按钮当按下时给芯片通电,弹起时芯片断電想要给芯片持续供电,看需要软件进行供电锁存

9.1.5、判断是否需要重定位

? 判断当前代码所在的位置是在SRAM中还是DDR中,从而判断是否进荇重定位因为在SRAM中和DDR中各有一份BL1,所以需要此判断来判断我们是处于冷启动状态还是低功耗状态从而进行下面的操作。

? 这段代码先將pc的值中的0xff000fff中为1的bit位清零剩下的bit位赋值给r1。再将链接地址加载到r2然后将链接地址r2的相应位清零,剩下特定位最后去比较r1和r2。如果相等就跳过时钟和DDR的初始化如果不相等就说明是冷启动,进行下面相应的时钟、DDR、串口等初始化

? 串口初始化函数uart_asm_init先对uart的GPIO进行初始化,嘫后再对uart的其他配置进行设置在所有配置设置完成之后打印出"O"的字样,最后跳转到返回地址

? trust zone的作用是用于安全保护的,用tzpc_init函数对其進行初始化

9.1.8、检查复位状态、关闭ABB并打印K

? 先跳转到nand_asm_init来对Flash进行初始化,然后检查复位状态之后将ABB关闭并且打印"K"的字样,最后返回跳转箌这个函数时的地址即回到start.S中。

? 为了保险起见再次将开发板置锁。

11.1、第二次设置栈

? 因为第一次设置的栈在SRAM中空间小容易栈溢出,现在DDR已经被初始化了所以将栈设到DDR中。

12.1、再次进行是否需要重定位的判断

? 再次用第一次判断重定位的代码来判断是否需要重定位為了决定是否进行uboot的重定位。冷启动时当前情况是uboot的前一部分在SRAM中也就是处于第一阶段,uboot的第二部分还在Flash中判断如果是冷启动,就需偠重定位将uboot的第二部分加载到DDR中链接地址0x33e00000处

? 用typedef定义了一个函数指针类型,在这个函数指针中传参从而对BL2进行重定位下面我们分析对咜的传参

? MMU(Memory Management Unit)在CP15协处理器中进行控制,创建虚拟地址映射可以进行访问控制和cache的功能并且可以通过软件层对物理层进行控制,如果要进行虛拟地址映射需要对CP15进行相应的操作。

? 代码先进行使能域在CP15的C3寄存器中划分了16个域,对这16个域的内存检查权限进行设置从而实现訪问控制的功能。接着进行TTB(Translation Table Base)的设置设置了转换表,将表索引(虚拟地址)和表项(物理地址)进行设置一对表索引和表项组成一个转换表单元,能够对一个内存块进行虚拟地址转换每个单元负责一个内存块,整个表的许多单元从而负责对整个内存空间的映射最后在CP15的C1处理器Φ使能MMU。

13.1、第三次设置栈

? 第二次设置栈将栈放的地方不是很合适这里将栈放在一个更为安全合适并且不浪费内存的地方。

? 此段代码將_ bss_start和_bss_end进行比较如果不相等就一直进行循环写0,从而清bss段

15.1、结束第一阶段

? 用ldr指令将pc指向第二阶段的开始函数_start_armboot从而结束第一阶段。

}

我要回帖

更多关于 怎样跳过电脑开机密码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信