行情
HOME
行情
正文内容
mboot+nand 你的笔记本支持NVME SSD吗?硬改NVME及系统迁移攻略
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

你的笔记本支持NVME SSD吗?硬改NVME及系统迁移攻略

我特别喜欢摆弄新鲜玩意,啥没见过的东西给我摆弄下就满足了,但是这个爱好有个缺点就是烧钱,当然要来张大妈混混首晒金币啥的更烧钱,所以我老婆说我这是个病要治,

结果一治三年了都没啥好转迹象。我想都不用想,我如果不发大图,肯定有人要问我这些架子上的玩意。

平时捣鼓的DIY配件,其中很多玩意让我在张大妈混了不少篇精华。但是。。。。。。说多了都是泪,我现在都不敢看 。

平时捣鼓的网络,不过我准备再签一条宽带了,因为一旦捣鼓网络,女王就会发飙。

一台过气的THINKPAD X230加上扩展坞,配上一台THINKVISION LT2934Z就是我的工作平台。所以我媳妇控诉也不是没有道理,确实烧钱有点吃不住,所以我现在也和本地玩家互相交换一些配件来玩,混个张大妈精华首晒啥的,确实省钱很多。张大妈精华绝对有毒,一旦上瘾,根本停不下来,为了可持续的发展,和留住钱包里的银子,交换设备玩是最好的办法了。张大妈发文还有个好处就是可以遇到一些本地党,没事来唠唠嗑,聊聊感兴趣的那点事,一起交换设备玩玩新鲜感可以避免太烧钱,有时间也替本地朋友解决个升级配置,解决个死机黑屏兼容问题啥的,没事一起喝个酒啥的也挺好挺惬意的。最近有个本地大学的学生朋友遇到一个棘手的问题,本着有难题找老高的原则,直接一个电话就刷过来了,第一句话就说上次咸鱼收的两块INTEL DC S3500 800GB都成功在INTEL RMA换新了,成本价1300匀给我一块, 立刻点亮了我的激情,然后说他有个本子有个怪异的问题想给我看看怎么解决,这小子,我立马说成,叫中午直接把本子扔给我两天,特别嘱咐过来别吃饭,中午喝两口再说。

我真的发现大学生咸鱼守货真是无敌的存在,我自己没事也上去看看,就是守不到好货。这同学牛在咸鱼二手他有办法直接换新,一人一块仗义啊。

那么他遇到的问题也很奇怪了,他咸鱼以400元超低的价格收到了一块NVME M2 240GB SSD, ,但是没有任何厂家信息,疑似工程样板,也没有贴标,表面还是撕去标的胶印。问他怎么买到的,他说他还有技巧,看到金手指是一个凹槽的 2280长度的一般没跑就是NVME的,如果是两个凹槽的2280长度的那就是SATA AHCI通道的M2 SSD,还是很有一套的呀。

有玩过SSD的朋友应该都清楚想要让SSD发挥出真正实力的话要去BIOS里面把SATA控制器模式切换成AHCI,对SATA设备来说使用AHCI模式的确是正确的选择,从IDE切换成AHCI可获得更好的性能。但是现在最新存储接口M.2和U.2接口走的都是PCIE通道,对与PCI-E来说AHCI不是一个好的选择,想发挥其最佳性能就需要NVME的SSD。

我看了下,主控是群联PS5007主控,同OCZ RD400一样,是NVME主控,从版型来看同采用群联公版的宇瞻Z280一模一样,但是却没有宇瞻的贴标,我初步判断这应该是一款群联公版的SSD工程样板,缓存用的南亚256MB DDR3L,闪存颗粒用的64GB的东芝15nm MLC闪存4片,总容量256GB,但是OP了16GB之后实际可用容量240GB。但是他的笔记本上了这块SSD之后,说作为从盘的话WIN10直接系统里找不到设备,作为主盘启动盘的话死活无法安装操作系统,但是BIOS里可以认出盘,非常诡异。我说你这不是一会的事情,先丢下来,我来看看啥问题,其实不是一会也就是几个小时的事情,哎呀,好吧,其实我有点小私心好吧,设备留个两天能不烧钱混个张大妈也不错啊 。

他带来的笔记本是这个,一看这个标志我就明白了,是我曾经玩过的火影,我曾经玩过一台火影金钢T1就是这个标志。但是和T1的区别是,T1的这个标志是个信仰呼吸灯,这个本子是个印刷体。

从大小和重量来看,390mm x 269.5mm x 27.9mm,重量2.9kg,简单来说如果作为便携笔记本,偏重,作为游戏本来说,这个厚度和重量就算还好了。

一看到背后的双散热孔就让我明白了这应该是个游戏本。

左右散热孔隐约可见的铜制散热器

IO接口左:RJ45网口、USB2.0X2、SD卡槽X1,电脑锁

IO接口右:DC电源输入、HDMI、USB3.0X2,耳机麦克风合二为一

外壳材质我摸上去不太显档次,易沾染指纹,但手感还行,底部是一行三列的散热孔设计,三列之间穿插了2个放音喇叭,这个设计我很担心放在桌面上会不但会共振,还会影响音质的效果。被背壳来看,没有任何易损标,那么就意味着随意拆卸底部周围的几颗螺丝就可以任何拆解了,可能是我最近拆THINKPAD S5拆吐了血,看到这种设计就感觉好有亲切感。

这里的Subwoofe字样应该是确认这边是有超重低音喇叭或者低音炮,我醉了,设想如果有一排同学都趴在一长溜的课桌上睡觉,这本子往桌子上一放点击播放神曲,会不会一群人醒来就立即喊着地震往外冲。

品牌是火影的,型号是FIREYING V5。顺手百度了下

简单看了下配置还不弱,I7 6700HQ/8GB DDR4 2133/GTX960M 4GB DDR5/256GB M2 SSD/15.6寸 FHD TN雾面屏/802.11AC无线网卡+蓝牙4.0/千兆网卡/背光键盘/摄像头/双1W低音炮,你别说该有的还都有,配置看起来真挺黑涩会的,刚接到手说真心话挺想说这孩子4K多大洋买这个挺犯二糟蹋钱的,百度了一下之后还真就不敢乱说了。

开屏的风格让我想到了联想拯救者系列,这键盘布局,造型都有强烈的神似感。不管了,拆了再说。

直接茶几上下面底部的螺丝,底壳自动分离,SO EASY!

本子我真的拆够了,也拆腻了,基本这个格局一看就知道是全铜双涡轮双热管,CPU和GPU核心包括显存是全铜全覆。

出风口这个散热器下方有一排类似排阻一样的LED灯珠。

原配SSD和WIFI网卡在两个喇叭的下方

原配WIFI网卡是INTEL的3160NG,原配SSD是LITEON的PH4-8E256,主控是群联的PS3111,明显是SATA AHCI协议的M2 SSD,容量256GB,为了方便叙述,我把这个M2标识为M2-1。等等,这个SSD贴标下面的二维码看起来有点眼熟,

难道那咸鱼的NVME SSD 240GB也是LITEON的?还是说PH4-8E256也是群联公版的?所以有这个二维码,连PCB颜色都一模一样。

在另外一侧还有一个空的M2-2和SATA接口,一共两个M2,一个SATA接口。

我特地去找了一个技术规格看了下,硬盘这里明确红字说明支持NVME SSD的,但是又说其中一个M2支持PCIE 3.0X4且支持NVME,不管了直接NVME 240GB插上空的M2-2,结果开机非常的顺利,但是进去WIN10打开设备管理器竟然找不到我加进去的NVME SSD,符合这小子说的做从盘进去系统找不到盘。

结论是:

M2-1 LITEON PH4-8E256 SATA AHCI协议 OK!

M2-2 未知品牌群联PS5007 SSD NVME协议 fail!

唯一解释就是说M2-2不支持NVME,那么只有M2-1支持NVME了,拔掉LITEON PH4-8E256插入NVME SSD到M2-1试试。

按DEL一进入BIOS,发现既不是AMI也不是AWARD的BIOS,而是很少见的INSYDE H20的BIOS,NVME SSD认出来了,识别为PP2 GB240型号,有戏啊!

但是进去设置页面一看到,SATA MODE里只有AHCI和RAID可选,我顿时心凉了半截。

启动模式里面,Legacy和UEFI都支持的。

但是无论哪种启动模式,启动进去显示这个图,这说明INSYDE的UEFI V2.4版本已经识别出来NVME SSD了。

UEFI 2.4 Review, Part 8: NVMe Device Paths | 系微股份有限公司...This is the eighth part in a series examining in detail the changes made in the UEFI 2.4 specification. This time we focus on a series of related chanwww.insyde.com

在INSYDE 官网的UEFI V2.4预览中有这样一段话:

This is the eighth part in a series examining in detail the changes made in the UEFI 2.4 specification. This time we focus on a series of related changes to supporting the NVMe specification, which "defines an optimized register interface, command set and feature set for PCI Express (PCIe®)-based Solid-State Drives (SSDs)."Of course, if you want to boot from a device under UEFI, the standard mechanism is to write a driver that consumes the PCI I/O protocol and produces the Block I/O protocol. In fact, there is such a sample driver out on the tianocore.org EDK2 project repository (MdeModulePkg/Bus/Pci/NvmExpressDxe).

这明明就是INSYDE 的UEFI 2.4对NVME协议的SSD已经提供了完整的支持。

而在INTEL官网关于HM170笔记本芯片组的参数中也明确说明HM170可以有16组PCIE3.0X1通道可以自由整合

在I7 6700HQ的官方参数中也清楚说明CPU内置16组PCIE3.0X1可整合为1x16, 2x8, 1x8+2x4

等于说I7 6700HQ + HM170总共有32条PCIE 3.0可以使用,那么即使独显GTX960M 4GB DDR5最大占用CPU内置的PCIE3.0X16,那么PCH上仍然还有16条PCIE3.0X1可以给NVME SSD使用的。NVME SSD就占用PCIE3.0X4的带宽而已,所以理论上HM170的主板不存在不支持NVME SSD这一说。只要HM170的UEFI启动版本和BIOS支持NVME,那么就肯定没问题的。

我拿了一个8GB的SMI主控的USB2.0的WIN10启动U盘顺手插入笔记本的右侧的USB2.0中,开机按F12进去启动菜单选择U盘启动。竟然没有WIN10安装的进度条,依然还是INSYDE UFEI 2.4的启动界面,我这下醉了。无奈之下,我拔掉M2-1的PP2 GB240,拿出台式机里的安装好WIN10系统的INTEL 600P 512GB M2 NVME SSD插进M2-1。

一开机,竟然直接进去WIN10系统了。顺手看了下这块屏幕,随手手拍了几张,可视角度还行。

但是我再开机按住F12选择WIN10安装盘的SMI U盘启动,继续直接跳过进入INTEL 600P的WIN10系统里面去了。。。。。。

然后就是连续三次的尝试摸索:

1、我关机将PP2 GB240 NVME SSD插入M2-2,用INTEL 600P带进WIN10的系统里,设备管理器里面继续认不出这块盘。

2、我关机将LITEON PH4-8E256 SATA AHCI协议的原配盘插进去M2-2,用INTEL 600P带进WIN10的系统里,设备管理器里面认出了这块盘。

3、我关机将LITEON PH4-8E256 SATA AHCI协议的原配盘插进去M2-1,将INTEL 600P 512GB NVME SSD插入M2-2用LITEON PH4-8E256带进WIN10的系统里,结果设备管理器里面认不出INTEL 600P。

继续更新结论:

M2-1 LITEON PH4-8E256 SATA AHCI协议 OK!

M2-1 INTEL 600P 512GB NVME协议 OK!

M2-2 PP2 GB240 NVME协议 fail!

M2-2 INTEL 600P 512GB NVME协议 fail!

M2-2 LITEON PH4-8E256 SATA AHCI协议 OK!

这结论说明M2-1支持NVME SSD是没错的,M2-2仅仅支持SATA AHCI协议的M2 SSD,那么现在需要解决的就是U盘安装系统的问题。

想了半天,我把USB2.0的WIN10安装U盘插入笔记本左侧的USB3.0中。开机按住F12选择U盘,仍然没有进入WIN10安装界面。这下真的醉了, 老司机阴沟里翻车了。

我在心里对这个本子进行了一百万次神兽踩过的操作之后,打给电话给朋友,问了下U盘安装WIN10系统的情况,和我遇到的一模一样。我立即问他是用的哪个U盘,他说不就是你上次送给我那8G U盘吗,我一想立马明白了,这个SMI主控的U盘,看来是很可能普遍性有问题啊。

我寻思着要不换个金士顿的USB3.0的U盘再烧一次WIN10启动U盘试试,插入USB2.0的口子中,选择U盘启动,开机按住F12选择U盘启动。

熟悉的WIN10安装界面瞬间出现了,关机,插入USB3.0上,开机F12选择U盘启动,继续WIN10安装界面出现了。看来就是那个SMI USB2.0 U盘的黑锅没错了。

继续更新结论:

M2-1 LITEON PH4-8E256 SATA AHCI协议 OK!

M2-1 INTEL 600P 512GB NVME协议 OK!

M2-1 PP2 GB240 NVME协议 OK!

M2-2 PP2 GB240 NVME协议 fail!

M2-2 INTEL 600P 512GB NVME协议 fail!

M2-2 LITEON PH4-8E256 SATA AHCI协议 OK!

那么继续利用上面四个盘尝试SATA位和两个M2的组合模式,得出结论

双盘模式:M2-1 NVME/M2-2 AHCI

双盘模式:M2-1 NVME/SATA AHCI

双盘模式:M2-1 AHCI/M2-2 AHCI

双盘模式:M2-2 AHCI/SATA AHCI

三盘模式:M2-1 NVME/M2-2 AHCI/SATA AHCI

三盘模式:M2-1 AHCI/M2-2 AHCI/SATA AHCI

所以这本子要同时上PP2 GB240 NVME SSD,原配的LITEON PH4-8E256和INTEL DC S3500 800G是完全可以一起使用的。

下面说下如何把原配SSD里的操作系统克隆到NVME SSD里面去,这个技巧具有普遍性,我就以这台笔记本原配的LITEON PH4-8E256和增加的PP2 GB240 NVME为例简单说明一下操作手法

开机F12选择LITEON PH4-8E256启动,这样就进去原配的OEM WIN10系统里面去了,

安装ACRONIS TURE IMAGE 2016

没有付费的正式版的话就直接点开始试用

其实付费版有个克隆磁盘非常好用,但是试用版嘛就没法使用这个功能,必须通过先备份再还原的方式完成磁盘的克隆操作。

备份选择磁盘与分区

如果要把原配的PH4-8E256 SSD上的三个分区全部备份就把整个磁盘打勾

如果只想把原配的PH4-8E256 SSD上的WINDOWS分区备份就把整个WINDOWS分区打勾即可,我选择只备份WINDOWS分区,因为我觉得240GB的SSD空间本身就不大,没必要分三个区。

既然是备份就需要选择一个备份的存储空间,当然你可以选择USB外部存储,也可以选择存储在内网的NAS上,其实只要选择备份在PP2 GB240 NVME SSD之外的盘上面都可以。

备份完成,点恢复磁盘

然后点上面的磁盘界面,左边是我们刚备份好的PH4-8E256上的WINDOWS系统盘,右边选择PP2 GB240 NVME SSD

点击执行后,系统会提示你PP2 GB240上的全部数据会丢失,直接点是

这样,恢复文件就将WINDOWS系统盘往PP2 GB240上恢复,恢复完成后直接重启系统即可,开机自动从PP2 GB240 NVME上启动。

打开磁盘管理一看,磁盘0是PP2 GB240,磁盘1是PH4-8E256,磁盘2是INTEL DC S3500 800GB,PH4-8E256上的WIN10系统C盘被原封不动的克隆到了PP2 GB240上了。这样就完成了系统的克隆操作。

一样克隆的系统也是激活的。

这样就顺利完成了从原配SSD PH4-8E256到NVME的PP2 GB240的操作系统克隆迁移。

其实这笔记本的主板用的是LENOVO的SLIC证书,所以如果你不想系统克隆而非要U盘重装系统的话,选择一个联想OEM版本的WIN10光盘就可以免激活了,麻烦在于你还要重装一次全部的驱动程序。

CPU:I7 6700HQ 四核八线 2.6G主频,睿频3.5G

主板:HM170

内存是单条的金士顿DDR4 2133

Intel HD530和GTX960M 4GB DDR5双显卡

单通道8GB内存下跑了下GPUZ测试,大约在I7 6700K的73%效能。

要使用NVME SSD首先得关闭设备上的WINDOWS写入高速缓冲区刷新。

否则你跑分就是这个姿态

关闭后跑分就是这个姿势,这块PP2 GB240说实话跑分不赖2591,就是不知道谁家的东西。

即使用INTEL 600P 512GB NVME去跑也就1500分不到而已。

原配的LITEON PH4-8E256

INTEL DC S3500 800G

CPU AIDA 64 单FPU拷机 + INTEL HD530核显 FURMARK 同时拷机,稳定温度在CPU 67度,核显65度

CPU AIDA 64 单FPU拷机 + GTX960M 4G DDR5 FURMARK 同时拷机,稳定温度在CPU 85度,显卡79度。

AIDA64看了下屏幕是奇美的CMN N156HGE-EAL面板,TN没跑了。

本来这篇文章是一个被两个山寨U盘折腾到伤心的悲情故事,但是老司机实在伤不起这个标题,索性就当作笔记本更换NVME SSD的一个指南存在吧。

刨除对山寨U盘的怨念之外,这个过程我也学习到了很多东西

1、HM170的笔记本只要有M.2基本都可以上NVME SSD,即使BIOS里并没有NVME选项

2、AMI和AWARD的BIOS一般升级到最新对NVME都没有啥兼容问题,INSYDE的BIOS需要UEFI在2.4版本或者以上才支持NVME SSD

3、笔记本自带的SATA硬盘或者M.2 SSD内置的出厂操作系统迁移到NVME SSD上是没有任何启动问题的,完美兼容。

4、要正常使用NVME SSD的速度,请将设备管理器NVME磁盘属性里面的【关闭设备上WINDOWS高速缓冲缓存区刷新】这个选项打勾。

系统装好之后大致测试了下,系统都很稳定了,直接关机拿走,我的小桌板又恢复了两个iPad玩一个看一个的节奏,然后直接电话朋友来取走笔记本,可是。。。。。。

“哥,那个Skull Canyon 骷髅峡谷 NUC降价还早呢,我拿我本子里原装的金士顿8G条子加原配的建兴256G SSD换你那对备着的2400 16G套条,你看成不,下次我寻到好东西先给你玩拉!”

“想得美”

“顶多晚上我请你喝酒”

“有妹子不”

“我穿女装陪你喝酒”

“滚”

其实说实话,每个人大学抱着第一台笔记本的时候都像抱着第一个女朋友,希望她身材和气质更完美一些这本没有错,特别遇到一个处女座的基友你是很难拒绝他的完美论调的,成人之美其实也没啥大不了的,东西值不值得交换并不重要,更重要的是这个朋友值得交心。

【结语】

本文由什么值得买网友“gaojie20”撰写并授权转载,由于篇幅原因,仅选取了精华的部分进行分享。完整原文可去我站《你的笔记本支持NVME SSD了吗?实战硬改NVME及系统迁移攻略》查看,如果你有更多好物想跟我们分享,欢迎在评论区与我们互动。

uboot启动内核是什么,认识 uboot 和 内核 之间不可不说的关系

uboot启动内核是什么,认识 uboot和内核之间不可不说的关系

uboot镜像为 uboot.bin,Linux镜像为 zImage

嵌入式设备中的分区表是自己定义的,uboot和内核中的分区表应一致

内核运行前必须加载到 ddr中指定的地址处

uboot需要提供内核必要的参数

内核启动的方式

uboot启动内核有两种方式,一种是等待倒计时结束后直接启动内核,一种是在 uboot命令行中使用 boot命令启动内核

其代码分别如下

其中 parse_string_outer的作用是解析 boot参数并执行

/*------------------倒计时----------------------*/

s = getenv ("bootcmd");

if (bootdelay >= 0 && s && !abortboot (bootdelay)) {

...

parse_string_outer(s, FLAG_PARSE_SEMICOLON |

FLAG_EXIT_FROM_LOOP);

...

}

/*------------------命令行----------------------*/

int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])

{

...

if (parse_string_outer (getenv ("bootcmd"),

FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0)

rcode = 1;

...

}

U_BOOT_CMD(

boot, 1, 1, do_bootd,

"boot - boot default, i.e., run 'bootcmd'\n",

NULL

);

/*-----------------相关宏定义----------------------*/

#ifdef CONFIG_BOOTARGS

"bootargs=" CONFIG_BOOTARGS "\0"

#endif

#ifdef CONFIG_BOOTCOMMAND

"bootcmd=" CONFIG_BOOTCOMMAND "\0"

#endif

#define CONFIG_BOOTARGS "console=ttySAC2,115200 root=/dev/mmcblk0p2 rw init=/linuxrc rootfstype=ext3"

#define CONFIG_BOOTCOMMAND "movi read kernel 30008000; movi read rootfs 30B00000 300000; bootm 30008000 30B00000"

加载内核到DDR中

uboot启动内核的步骤

·内核镜像从启动介质中加载到DDR中

·去DDR中启动内核镜像

本文使用的开发板 x210将镜像存放在 SD卡中,要加载到 ddr中需要使用到 movi指令

movi提供了对 iNand/SD卡的操作,movi read用来读取 iNand/SD卡中的内容到DDR中;movi write用来将DDR中的内容写入到 iNand/SD卡中

上面的代码中 bootcmd中的命令就是用来加载 kernel rootfs到 ddr

除了从 SD卡加载,还可以通过 tftp nfs等网络下载方式加载镜像

通过movi read kernel 30008000可以知道,内核加载到了 0x30008000的位置

内核的镜像生成

Linux直接编译得到 elf文件,叫 vmlinux或 vmlinuz。这种文件会比较大,为了烧录方便,会使用 objcopy工具制作成镜像文件,叫 Image(从78M精简成了7.5M)

早期使用的软盘比较小,Image对与软盘来说还是太大了,放不下。Linux对 Image做进一步的压缩,并在压缩文件前端附加了一部分解压缩代码,形成 zImage

uboot可以使用 mkimage工具,在 zImage前面加上64字节的uImage的头信息,形成 uImage

加载启动内核

内核的加载启动是通过 do_bootm完成的

前面介绍过,镜像文件分为两个部分,头部以及真正的内核

所以 do_bootm会先对镜像进行头部信息的校验,然后再进行内核的启动

头部信息的结构体如下

typedef struct image_header {

uint32_t ih_magic; /* Image Header Magic Number */

uint32_t ih_hcrc; /* Image Header CRC Checksum */

uint32_t ih_time; /* Image Creation Timestamp */

uint32_t ih_size; /* Image Data Size */

uint32_t ih_load; /* Data Load Address */

uint32_t ih_ep; /* Entry Point Address */

uint32_t ih_dcrc; /* Image Data CRC Checksum */

uint8_t ih_os; /* Operating System */

uint8_t ih_arch; /* CPU architecture */

uint8_t ih_type; /* Image Type */

uint8_t ih_comp; /* Compression Type */

uint8_t ih_name[IH_NMLEN]; /* Image Name */

} image_header_t;

在 do_bootm中就是通过 ih_os判断镜像的类型,然后使用相应的方法启动内核

这里的镜像是 Linux镜像,所以使用的是 do_bootm_linux, do_bootm_linux的参数大部分是通过 do_bootm传递的

启动的参数bootm 30008000,告诉 uboot去 30008000这个地址去找镜像文件

内核启动

镜像的程序入口叫做 entrypoint,在 do_bootm_linux中使用 ep保存,镜像的程序入口在头信息的 ih_ep中,可以通过读取头信息得到

得到 ep后,通过theKernel = (void (*)(int, int, uint))ep;将 ep格式化后传递给 theKernel,这样 theKernel函数就指向了内存中加载的OS镜像的真正入口地址

前面也提到了,每个开发板在 uboot中都有唯一的机器码,这个编码用来验证开发板与 uboot是否匹配,这个机器码还会传到内核中再次验证。这个机器码获取的第一顺序备选是环境变量machid,第二顺序备选是gd->bd->bi_arch_num(x210_sd.h中的 #define MACH_TYPE 2456)

接下来就是传参的过程。先看看 Linux的 Documentation/arm/Booting中对 CPU寄存器设置的描述

- CPU register settings

r0 = 0,

r1 = machine type number discovered in (3) above.

r2 = physical address of tagged list in system RAM, or

physical address of device tree block (dtb) in system RAM

通过读取 r0 r1 r2这三个寄存器的值来设置 CPU,r0固定为0,r1为前面提到的机器码,r2为存放启动参数 tag结构体的首地址

所以在 do_bootm_linux通过theKernel (0, machid, bd->bi_boot_params);完成传参的过程

传参是通过 struct tag这个结构体完成的,获取参数就是获取一个个 tag的过程。这些 tag也有着规定的格式,do_bootm_linux中通过 setup_start_tag和 setup_end_tag函数设置 tag的开始和结束,这个函数的作用就是设置当前 tag的类型为 ATAG_CORE和 ATAG_NONE,用作 tag起始终止位置的判别

需要注意的是,传参是一个很重要的过程,内核启动不成功与传参错误有很大关系

uboot启动4步骤总结

第一步:将内核搬移到DDR中

第二步:校验内核格式、CRC等

第三步:准备传参

第四步:跳转执行内核

相关问答

bios 里头的 insydeh20 setup utlilty?什么意思-ZOL问答

7条回答:【推荐答案】InsydeH20SetupUtlity是你的bios版本号,Security是安全中关村在线vivoX90Pro+bios里头的insydeh20setupu...

电脑经常蓝屏或者死机,之后重启出现一行英文reboot and sel...

出现rebootandselectproperbootdeviceorinsertbootmediainselectedbootdeviceandpressakey...

longpressthepowerbuttonandthenormalboot.翻译】作业帮

[回答]已进入原始数据模式。长按电源键进行正常启动。百度嫌我字数不够

老师这里plus是连词还是介词?是并列哪个词,还是意群重起一段...

~请同学提问课程授课范围内的问题哦。plus是连词,在Rewardsforoutstandingcontributionandlongservice附加了一部分内容,是对前面的延伸。...

andsatbythepoolinthewood.Isoontookoffmyboot,andputmyfo...

[回答]中午,我拿了一本书,坐在池边的木凳上.很快我脱了鞋,把脚伸到池里.

bios 里头有main adranced power boot tools exit 分别是什...

1943moon你发图片过来,一步步教你满意请采纳。有用(1)回复liuqiong2011你的电脑可能检测不到硬盘(检测不到硬盘的症状:开机时IDE检测中不显示硬盘信息)这...

开机出现 BOOTMGR is compressed press CTRL+ALT+Del to rest...

那就大件事了,NTFS格式分区,把文件压缩后,启动时无法识别,不是没有办法,你要用最新的Pe(就是Win7核心的),然后把系统盘去掉压缩有用(0)回复123321yangjun你...

电脑开机时显示 boot device and press a key什么意思?

你的电脑上的硬盘已经安装好了系统,且能正常进入系统使用,但是你的电脑无法自行从硬盘启动系统,这说明,你的电脑硬盘上没有设置启动,这要用硬盘工具来进行启...

开机显示isk boot failure insert system disk and press enter,电脑不能启动?

如果硬盘能在别的电脑上启动,那出现提示BOOTFAILUREINSERTSYSTEMDISKANDPRESSENTER,说明没有从这个硬盘启动,你要进入BIOS设置,(启动时按DEL键),设定启动顺....

戴尔的http boot 是啥?

1、按下电脑开机键,然后连续不停的按键盘的F12按键进入到bios的界面(不同电脑进入BIOS方式略有不同);2、进入到bios的界面,使用方向键选择“boot”;3...2、...

 杨森林  love marmot 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部