k50如何进入bootloader模式

k50如何进入bootloader模式,第1张

在完全关机状态下数据线插着,并且连着充电器,也可以连着电脑,,按住音量下键和开机键不放保持10秒,直到小米标志不动后松手,即进入了bootloader模式,如果进不去的可以使用一键重启工具的工具箱选项进入。

嵌入式 *** 作系统中,BootLoader是在 *** 作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用 *** 作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序)。

因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。

你说的这个应该是stm32的芯片,而且是128 Kbytes 的 SRAM,

主流STM32芯片的SRAM地址范围都是从 0x2000 0000处开始。

好,答案来了:

128 Kbytes的SRAM 地址范围是 0x2000 0000  --0x2001 FFFF;

堆栈指针(SP) 必须在 0x2000 0000 -- 0x2001 FFFF 这块Region,这很好理解对吧,因为SRAM就在这嘛,只要SP位于这块Region即可。

所以 SP & 0x2FFE 0000 == 0x2000 0000,不去管SP的bit16 - 0,只检查bit27-17。

假如是 64 Kbytes 的 RAM,地址Region为 0x2000 0000 -- 0x2000 FFFF,那么此时应该这样写  SP & 0x2FFF 0000 == 0x2000 0000。当然,写成 SP & 0x2FFE 0000 也能执行,只是会带来隐患,这种Bug很讨厌的,因为不好发现。

第一个问题,你的理解可以说是对的。

BIOS是和主板一起开发的,所以主板的一些硬件信息只有BIOS清楚,每块主板的BIOS基本都是不同的,主板的具体信息需要BIOS报告给 *** 作系统。

而 *** 作系统只要系统类型一样就是通用的,如个人电脑的 *** 作系统,服务器的 *** 作系统等等。

第二个问题,可以从字面意思说起。

先说Boot Loader,字面意思 启动引导器,显而易见,作用是引导 *** 作系统启动的。

*** 作系统有一个系统引导程序,Boot Loader就是找到这个程序,执行之。主要用在嵌入式系统或者手机。

BIOS,Basic Input Output System 基本输入输出系统,意思是主板级别的一个小系统。负责系统(主要是主板)的硬件初始化,例如CPU,内存,硬盘,键盘,显示卡,网卡等等硬件的初始化。初始化是BIOS的主要工作。传统的个人电脑上面BIOS会有一个int19 软件中断功能,在初始化完成后,BIOS会进入int19中断,寻找启动介质,如软盘,光盘,硬盘,flash或者网络等等,读取第一个扇区的内容到内存的0000:7C00处,跳入这个地址执行。这里int19就是一个bootloader,启动引导器。所以BIOS具有Boot Loader的功能。当然,目前的BIOS功能已经被扩充了很多,例如电源管理方面的ACPI接口,USB驱动,PXE网络引导功能,硬盘加密,TPM接口,BIOS配置界面,BIOS自动恢复等等。

不过目前的Boot Loader功能也并不单纯,例如u-boot,一个有名的开源boot loader,其实还是会做一小部分硬件初始化的工作,主要用在嵌入式系统。

所以这两个其实很像,不过BIOS主要存在于个人电脑和服务器这里硬件比较复杂的系统;Boot Loader主要存在于嵌入式,手机,等相对简单的系统。

另外,如果对BIOS感兴趣,欢迎到 BIOS人论坛 >

系统加电或复位后,所有的CPU通常都从CPU制造商预先安排的地址上取指令。比如,S3C44B0在复位时都从地址 0x00000000取它的第一条指令。

嵌入式系统通常都有某种类型的固态存储设备(比如:ROM、EEPROM或FLASH等)被安排这个起始地址上,因此在系统加电后,CPU将首先执行BootLoader程序。

也就是说对于基于S3C44B0的这套系统,我们的BootLoader是从0地址开始存放的,而这块起始地址需要采用可引导的固态存储设备如FLASH。因此在系统加电后,CPU 将首先执行 Bootloader 程序。通常总是将Boot Loader 安装在嵌入式系统的存储设备的最前端。

固态存储设备的空间划分(地址从低到高顺序):Bootloader,Bootloader参数,内核映像,根文件系统映像。

Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将 *** 作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到 *** 作系统所在的空间,启动 *** 作系统运行。[1]

对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。

反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导 *** 作系统启动,并且大部分都可以支持串口和以太网接口。

在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:

1、 引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。

2、Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。

3、 文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk来作为rootfs。

4、 用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式GUI有:MicroWindows和MiniGUI等。

通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。尽管如此,我们仍然可以对bootloader归纳出一些通用的概念来,以指导用户特定的BootLoader设计与实现。

通过刷机来提升手机系统性能,但是对刷机一窍不通的朋友们,即便可以看完刷机教程又是一头雾水。这时候就有必要对一些刷机常用基础知识点进行了解,对刷机的原理、常用刷机方法等方面的知识有个初步的理解,从而手机刷机这事变得更加轻松。那么bootloader是什么意思?

1、 BootLoader是在 *** 作系统内核运行之前运行的一段小程序。其实Bootloader就相当于手机的bios,通过这段小程序,进行硬件初始化,获取内存大小信息等,调整手机到适配状态。所以Bootloader是很重要的,如果bootloader不能正常加载,手机就是砖头一个,无法正常启动和使用。然后以用户的按键组合进入到某种启动模式,如所熟知的电源键和音量键的组合,可以进入到Recovery、Fastboot或者正常开机。

2、 对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序。

3、 Bootloader被锁的手机必须要破解才能刷第三方rom。如果不破解bootloader,就无法初始化手机硬件,手机也就无法使用。

关于bootloader是什么意思的相关内容就介绍到这里了。

以上就是关于k50如何进入bootloader模式全部的内容,包括:k50如何进入bootloader模式、BootLoader跳转程序时有这样的判断if(((*(uint32_t *)app_addr)&0x2FFE0000) == 0x20000000)什么意思、bootloader与bios的区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10088404.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存