快讯
HOME
快讯
正文内容
nand erase Solidigm推动Physical Stream技术,提升QLC SSD寿命与性能(一)
发布时间 : 2025-03-18
作者 : 小编
访问数量 : 23
扫码分享至微信

Solidigm推动Physical Stream技术,提升QLC SSD寿命与性能(一)

摘要

为了解决 SSD 的写放大、GC 等问题带来的挑战,给业务提供更强大的存储能力支撑,释放数据价值,Solidigm 基于业界领先的QLC SSD 定义了一种新型的存储方案:Physical Stream。Physical Stream 支持在 Stream Mode 与 Non-Stream Mode 功能之间灵活进行切换。在切换为 Stream Mode 时,该方案能够通过减少写放大等方式提升 SSD 的耐用性,同时提升带宽以及每秒读写次数 (IOPS) 性能,也降低了IO 时延,从而避免了硬件改造所带来的成本支出。

此外,围绕客户业务层应用需求,Solidigm在应用场景优化了 Physical Stream的软硬件方案的产品适配工作。并且通过业务 I/O 工具进行了模拟真实场景测试,证明该方案可以实现更高的性能密度、更低的成本、更高的带宽与更高的 SSD 耐用性,为多云内容分发网络 (CDN)、RocksDB 业务的快速发展提供云存储助力,帮助最终用户高效释放数据价值。

概述

由于在性能上具备突出优势,以及拥有成本的持续降低,基于 NVMe 协议的固态盘(SSD) 在各行各业中得到了快速的应用,并成为主流的存储设备。在此趋势下,推动 SSD 的创新,提升 SSD 的性能、耐用性,并降低拥有成本也就具有尤为重要的意义。其中一个棘手的挑战在于,SSD 在使用过程中可能出现写放大、垃圾回收 (GC) 等现象,严重影响 SSD 的寿命与成本。

为了解决 SSD 的写放大、GC 等问题带来的挑战,给业务提供更强大的存储能力支撑,释放数据价值, Solidigm 一直在努力设计和开发新型存储方案。在过去一年中,基于一些实际的客户用例, Solidigm SSD 定义了一种新型的存储方案:Physical Stream。Physical Stream 支持在 Stream Mode 与 Non-Stream Mode 功能之间灵活进行切换。在切换为 Stream Mode 时,该方案能够通过减少写放大等方式提升 SSD 的耐用性,同时提升带宽以及每秒读写次数 (IOPS) 性能,也降低了IO 时延,从而避免了硬件改造所带来的成本支出。

此外,围绕业务层应用的需求, Solidigm还与客户合作开展了基于 Physical Stream的软硬件方案的产品适配工作。采用了Solidigm 的四层单元 (Quad-Level Cell, QLC) SSD,并且通过业务 I/O 工具进行了真实场景测试,证明该方案可以实现更高的性能密度、更低的成本、更高的带宽与更高的 SSD 耐用性,为多云内容分发网络 (CDN)、RocksDB 业务的快速发展提供云存储助力,帮助最终用户高效释放数据价值。

图 1. CDN 加速的内容服务业务**

挑战

在实际业务运营过程中,我们在很多客户那里发现,目前的 SSD 还存在很大的潜力开展技术创新,以满足业务发展对于存储系统的差异化要求。这主要体现在以下几个方面:

带宽利用率: 大部分客户本身业务层面性能开销较小,然而因为多分区的使用,导致 SSD 内部垃圾回收,因此带宽利用率仍有进一步提升的空间。

SSD 耐用性: 大部分客户的CDN场景以 LSM-tree 的模型进行数据存储,该模型是业界一个非常通用的闪存存储数据结构模型,广泛存在于各种列存储数据库系统中,对闪存非常友好,使传统的 SSD 写放大有了很大的改善。

成本: 带宽利用率、SSD 耐用性都会影响 SSD 的总体拥有成本。该技术期望能够通过进一步优化,持续降低成本。

SSD 接口协议演进

助力化解写放大、垃圾回收挑战

随着数字化转型的深入,数据成为企业最具价值的资产之一,部署大容量、高性能、高经济性的存储系统成为企业释放数据价值的重要方式。这一需求驱动着SSD 的不断升级迭代。Solidigm积极创新,在过去很短的时间从SLC快速迭代到MLC、TLC、 QLC,再加上3D堆叠工艺的加持,存储密度不断加大,如图 2所示。

图 2. SSD NAND介质的迭代—密度越来越高**

随着业务对多路虚拟化,低延迟的需求越来越强烈,传统的SSD已经渐渐满足不了用户的需求了。这些需求主要体现在需要提升不同虚机数据的隔离性,减少 SSD 的垃圾回收,延长 SSD 的使用寿命即耐用性,降低成本。

首先需要改善的一个重点问题是垃圾回收(GC)所带来的耐用性等问题:SSD 的 NAND Flash 底层大多数是 NMOS 存储单元,为了保证磨损平衡和性能,需要不定期做GC,擦除出干净的块(Block),如图 3所示。在 GC 过程中,需要用一部分空闲空间作为 GC 过程中未过期数据的存储,这涉及到数据的迁移和预留空间(Spare)的占用,而且频繁的 GC 还会导致 SSD 耐用性不断降低。此外,如果需要进行擦除,还需要将有效数据都移动至新的 NAND block。这无疑会造成写放大问题。

图 3. 标准SSD需要不定期做垃圾回收**

第二个要解决的重点问题是数据隔离,在上述过程中,Host 会根据平均磨损情况,开新的条带将数据写入不同的物理块。而SSD的磨损平衡策略也会把数据做Dfrag的时候分散到不同的物理块。这两个场景中,SSD不会对数据做任何隔离,无论用户是按分区管理还是按namespace管理,不同的分区或者不同的namespace之间是没有物理隔离机制的。这对需要物理隔离且担心隔壁读写干扰的应用是不友好的。

SSD 数据放置 (Data Placement) 技术有助于解决这一问题。Data Placement 支持驱动器提供一个到主机的接口,允许它将主机写入线程映射到驱动器内部写入,支持在逻辑或者物理位置进行数据分离。目前,SSD 的 Data Placement 技术路线包括 Open Channel、Stream、FDP、ZNS 等。图 4表述了最近几年这些技术的一个演进过程。

图 4. NVMe SSD Data Placement技术近年的演进路径**

其中,Open Channel 不仅需要数据放置管理,还需要上层软件对介质进行管理。其管理过程会非常复杂而难以维护,基本上已经被业界放弃。ZNS 是当前国内研究的热门方向,其优势在于上层软件可以完全控制驱动器上的 Data Placement,杜绝内部 GC与预留空间的可能性,驱动器级别的 GC 将大大降低。这意味着更少的写放大和更高的 SSD 耐用性,但缺陷是需要复杂的软件更改,不适合每个客户。FDP技术是行业下一波研究的热点,它可以灵活的支持按擦除块和条带进行分割,同时支持随机和顺序写入。下图是二者跟Physical Stream的简单对比。

图 5. 不同 Data Placement 方案的对比**

另外,还有一个过渡技术叫做Multi-Stream,该技术已经进入 NVMe1.3 协议多年,它的含义是:所有来自于主机 (Host) 下发的写数据都会带一个 hint,通过该 hint 将用户数据 LBA 以一定的属性和规则进行区分,将具备相同属性的用户数据作为一个数据集合进行写入,称为 Stream,并且指定 Stream ID。SSD 固件可以通过该 Stream ID 进行 I/O 调度或者 FTL 设计,以满足不同的用户需求。同时,应用层将用户数据按照不同的生命周期进行标记和归类,即 Stream ID(通常≤8 个),然后针对 FTL 以及 Data Placement 进行重新设计。例如,将不同生命周期的冷或者热数据分开放置,可以大大提升 SSD 的 GC 效率,减小其写放大,从而带来改善的收益和用户体验。下图是支持Multi-stream技术的SSD和不支持的SSD原理对比图。

图 6. Stream SSD 与普通 SSD 的数据放置模式**

Multi-stream SSD 能够将不同生命周期更新频率的数据分开,并且用 Stream ID 表示,在 SSD FTL 层面会以不同的 Stream 分别进入到不同的 NAND Erase Block。对于那些更新频率较快的热数据,其 GC 的概率也更高,但是由于热数据所在的 NAND Erase Block 里并没有掺杂冷数据和温数据,因此针对只有热数据的 Band 的 GC,其移动的有效数据会有一定程度的减少,对于耐用性损耗、性能与服务等级协议 (QoS) 有一些提升。

注释:** 表示图片来源于 Solidigm

33-iFix团队10月26号现场培训课程分享(七)

控制台命令是智能主板维修必须掌握的知识点,也是必备利器,掌握这个知识点可以让你的维修过程事半功倍。

控制台分BootLoader控制台和安卓控制台,这个概念一定要分清楚,BootLoader控制台下可以执行擦空、强制升级、DDR自检、存储容量查询、串口打开关闭等。

安卓控制台下最常用的就是屏参修改,这也是换屏的维修师傅比较喜欢的知识,因为换屏时,很多时候都没有一模一样的原装型号屏,基本通过代换完成,代换后由于屏厂家和参数可能不一样,出现花屏、倒屏、灰屏等。都会做后期调试,比如改逻辑板,边条等,当然也有很多是改硬件不能完成的,掌握安卓控制台改屏参,就会有更多代换可能性。

也有一部分是自己误调试引起灰屏,或者换板时内置屏参本身不匹配引起的灰屏都会用到这个知识点,在一文中对MSD6A818芯片方案做了一个介绍,大家应该有一些共鸣。

我们先来看看几大芯片厂家控制台进入方法:

下面我们先聊聊BootLoader控制台下的几个方案常用命令。

一、Mstar

1、擦空 ,在Mstar方案里,有三种组合,Nor+Nand,Nor+EMMC,单EMMC,针对Nand和EMMC的擦除命令有点区别,但是擦空的时候一定要注意,工厂提供的U盘升级软件是不是支持空片烧录,如果不支持,那么你就好好的哭一场吧,擦空后你会发现再也不能升级了,或者怎么升级也生不好,不过对有RT809H的维修工程师来说,这不是什么大事,只要擦除之前对Nand或EMMC做一个5%左右的备份就可以了,擦除后再写入5%。

当然对拥有RT809H的用户都会会心一笑,可以用编程器直接擦呀,而且编程器自带擦空功能可以对一部分EMMC有修复功能。

Nor+Nand:nand erase;nand scrub。

Nor+EMMC:mmc erase。

单EMMC:mmc erase。

2、升级, 升级是我们比较常用的一个命令,在Mstar方案中,不同的组合结构,不同的升级文件名,升级命令都不一样,例如6i48的命令有

usb reset

ustar

这个命令是针对U盘升级文件为nand、script两个文件夹的,并不是所有MSD6i48都一样,同时U盘升级文件要支持空片烧录,不然只有用网线升级。

控制台下显示命令行格式为下图。

上图就是输入usb reset后没识别到U盘的一段打印,不同的主板设计的U盘升级口不一样,这个要注意,这时候就要检查U盘是否插入升级口,U盘是否正常被识别。

上图为正常识别到U盘的打印信息,这时候才能继续输入升级命令。

输入升级命令ustar后回车,升级软件正常就会监控到升级打印进度。

上图是早期的网络电视机主板升级命令,再例如早期的智能机MSD6A801芯片方案,用第一批乐视S40/S50举例,升级文件名为bin格式,

升级命令为uup或者usb_check_bin都可以。

后期的MSD6A628和MAD6A918开始一直到现在,升级文件名均为bin格式,升级命令为更简单的"cu",一定要小写。

在升级过程中,可以看到打印信息提示所需文件名(如下图),如果文件名错误是升级不成功的,所以遇到升级不成功需要检查U盘内的文件名是否与打印信息提示文件名相符。

3、打开串口,在我们维修Mstar方案的主板时,经常会看到串口关闭的打印,这种串口关闭的打印比较明显的标志就是 UART BUS OFF!! 串口关闭很是令维修人员头疼,因为它被关闭后,将看不到所有的打印细节,也就看 不到引导是否运行完整,主程序是否加载正常。

如果想看到这些细节来分析故障点,那么就要串口必须打开,串口关闭分两种情况,一种是能进控制台,一种是不能进控制台。能进控制台的只需要输入串口打开命令就可以了,下面我们以TCL MS828板举例。

AC_ON

MIU0_DQS-OK

MIU1_DQS-OK

BIST0-OK

BIST1-OK

_U

Relocation Offset is: 01200000

[AT][MB][start ub][321]

U-Boot 2011.06 (Dec 30 2015 - 14:41:55) MBOT-2.12.$Change: 1142033 $

[MIU INFO] miu opencreate instance at 345aa550 with private size 80 bytes at 345aa598

create instance at 345aa5f0 with private size 48 bytes at 345aa638

uboot held at [342ddf60~36200000],size=01f220a0

CPU : Muji

Board: BD_MST072B_20AEV_MUJI

DRAM: 354 MiB

Now running in RAM - U-Boot at: 35300000

FCIE_MODE_GPIO_PAD_DEFO_SPEED

FCIE_MODE_8BITS_MACRO_HIGH_SPEED

FCIE_MODE_32BITS_MACRO_HS200

eMMC: HS200 200MHz

eMMC 7.28 GB [E8FFF8h]

In: serial

Out: serial

Err: serial

Net: No ethernet found.

Set MAC default

MAC: 0x0: 0x30: 0x1b: 0xba:0x2: 0xdb

#######################################################################

#######################################################################

[CPU INFO] cpu opencreate instance at 345baaf8 with private size 44 bytes at 345bab40

CPUIoctl - MDrv_CMD_CPU_QueryClock

[UTOPIA INFO] close moduleNames[38]: MODULE_CPU

msIR_Initialize

[AT][MBoot][Driver Init][490]

MPOOL size : 0x200000

Changelist: 24543697

============= set bootargs ===============

Hit any key to stop autoboot: 0

run_ubootcmd_from_mtd0::368::cmd=mmc read.p 0x25000000 misc 1088

AC on

Writing to MMC(0)... 128 blocks written: OK

128 blocks written: OK

done

mmc change mount : tclconfig

Loading file "/mstar/tvconfig/config/PM.bin" at offset 0x0 from mmc device 0 partition tclconfig

24575 bytes read

Wait for PM51 stand波H?KVS&$琞Z恫 code time Jan 08 2016 20:00:00

Hi Main

CRC Check OPEN: 1

Power Down

standby by tcl system

In: serial

Out: serial

Err: serial

Net: No ethernet found.

Set MAC default

MAC: 0x0: 0x30: 0x1b: 0xba:0x2: 0xdb

#######################################################################

#######################################################################

[CPU INFO] cpu opencreate instance at 345baaf8 with private size 44 bytes at 345bab40

CPUIoctl - MDrv_CMD_CPU_QueryClock

[UTOPIA INFO] close moduleNames[38]: MODULE_CPU

msIR_Initialize

[AT][MBoot][Driver Init][497]

MPOOL size : 0x200000

Changelist: 24543697

============= set bootargs ===============

Hit any key to stop autoboot: 0

run_ubootcmd_from_mtd0::368::cmd=mmc read.p 0x25000000 misc 1088

DC on !!

Writing to MMC(0)... 128 blocks written: OK

128 blocks written: OK

done

create instance at 345bae50 with private size 344 bytes at 345bae98

MDrv_PNL_Init u32PnlRiuBaseAddr = 1f200000

MDrv_PNL_Init u32PMRiuBaseAddr = 1f000000

LINK TYPE = EXT

[MHal_PNL_Init_MOD][2141]Vx1 2 division

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=40

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msSetVBY1RconValue][1734]u16temp= 11

Vx1 2 division[_MDrv_PNL_Init_LPLL][333]pstPanelInitData->u16Width=3840, pstPanelInitData->u16Height=2160

[_MDrv_PNL_Init_LPLL][335]u16HTotal=4400,u16VTotal=2260,pstPanelInitData->u16HTotal=4400,pstPanelInitData->u16VTotal=2260, u16DefaultVFreq=600

@@11=11

[_MDrv_PNL_Init_Output_Dclk][379]pstPanelInitData->u16Width=3840, pstPanelInitData->u16Height=2160

[_MDrv_PNL_Init_Output_Dclk][381]u16HTotal=4400,u16VTotal=2260,pstPanelInitData->u16HTotal=4400,pstPanelInitData->u16VTotal=2260, u16DefaultVFreq=600

@@11=11

@@11=11

zs, [MDrv_PNL_SetPanelType, 697]reset vby1 packer process.

[MApi_XC_MLG_GetStatus, 1874]No instance existed, please get an instance by calling MApi_XC_Init() first

Init PWM0Init PWM1Init PWM2[msReadEfuse][1698]u32Result=50000051, after mask u32Result=40

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msSetVBY1RconValue][1734]u16temp= 11

jeremy.chan[MsDrv_PNL_Init][885]

Wait for PM51 standby DRAM ...........PM51 run ok...........

[CPU INFO] cpu opencreate instance at 345baff8 with private size 44 bytes at 345bb040

CPUIoctl - MDrv_CMD_CPU_QueryClock

[UTOPIA INFO] close moduleNames[38]: MODULE_CPU

UART BUS OFF!!

上面是开机所有打印,可以看到最后面明显的串口关闭标志,连Linux内核加载标志Starting kernel ... 都看不到,如果要打开串口,先重新上电进入控制台,如下:

AC_ON

MIU0_DQS-OK

MIU1_DQS-OK

BIST0-OK

BIST1-OK

_U

Relocation Offset is: 01200000

[AT][MB][start ub][329]

U-Boot 2011.06 (Dec 30 2015 - 14:41:55) MBOT-2.12.$Change: 1142033 $

[MIU INFO] miu opencreate instance at 345aa550 with private size 80 bytes at 345aa598

create instance at 345aa5f0 with private size 48 bytes at 345aa638

uboot held at [342ddf60~36200000],size=01f220a0

CPU : Muji

Board: BD_MST072B_20AEV_MUJI

DRAM: 354 MiB

Now running in RAM - U-Boot at: 35300000

FCIE_MODE_GPIO_PAD_DEFO_SPEED

FCIE_MODE_8BITS_MACRO_HIGH_SPEED

FCIE_MODE_32BITS_MACRO_HS200

eMMC: HS200 200MHz

eMMC 7.28 GB [E8FFF8h]

In: serial

Out: serial

Err: serial

Net: No ethernet found.

Set MAC default

MAC: 0x0: 0x30: 0x1b: 0xba:0x2: 0xdb

#######################################################################

#######################################################################

[CPU INFO] cpu opencreate instance at 345baaf8 with private size 44 bytes at 345bab40

CPUIoctl - MDrv_CMD_CPU_QueryClock

[UTOPIA INFO] close moduleNames[38]: MODULE_CPU

msIR_Initialize

[AT][MBoot][Driver Init][493]

MPOOL size : 0x200000

Changelist: 24543697

============= set bootargs ===============

Hit any key to stop autoboot: 0

<< MStar >>#

<< MStar >>#

<< MStar >>#

<< MStar >>#

<< MStar >>#

<< MStar >># setenv UARTOnOff on

<< MStar >># saveenv

Saving Environment to MMC...

Writing to MMC(0)... 128 blocks written: OK

128 blocks written: OK

done

<< MStar >># reset

输入以上三个命令后会自动重启,我们再看看打印信息发生了什么变化。

<< MStar >># reset

[AT][MB][start do_reset]

do_reset: Using RIU_MAP: 0x1f000000, at 55

UART_115200

AC_ON

MIU0_DQS-OK

MIU1_DQS-OK

BIST0-OK

BIST1-OK

_U

Relocation Offset is: 01200000

[AT][MB][start ub][341]

U-Boot 2011.06 (Dec 30 2015 - 14:41:55) MBOT-2.12.$Change: 1142033 $

[MIU INFO] miu opencreate instance at 345aa550 with private size 80 bytes at 345aa598

create instance at 345aa5f0 with private size 48 bytes at 345aa638

uboot held at [342ddf60~36200000],size=01f220a0

CPU : Muji

Board: BD_MST072B_20AEV_MUJI

DRAM: 354 MiB

Now running in RAM - U-Boot at: 35300000

FCIE_MODE_GPIO_PAD_DEFO_SPEED

FCIE_MODE_8BITS_MACRO_HIGH_SPEED

FCIE_MODE_32BITS_MACRO_HS200

eMMC: HS200 200MHz

eMMC 7.28 GB [E8FFF8h]

In: serial

Out: serial

Err: serial

Net: No ethernet found.

Set MAC default

MAC: 0x0: 0x30: 0x1b: 0xba:0x2: 0xdb

#######################################################################

#######################################################################

[CPU INFO] cpu opencreate instance at 345baaf8 with private size 44 bytes at 345bab40

CPUIoctl - MDrv_CMD_CPU_QueryClock

[UTOPIA INFO] close moduleNames[38]: MODULE_CPU

msIR_Initialize

[AT][MBoot][Driver Init][530]

MPOOL size : 0x200000

Changelist: 24543697

============= set bootargs ===============

Hit any key to stop autoboot: 0

run_ubootcmd_from_mtd0::368::cmd=mmc read.p 0x25000000 misc 1088

AC on

Writing to MMC(0)... 128 blocks written: OK

128 blocks written: OK

done

mmc change mount : tclconfig

Loading file "/mstar/tvconfig/config/PM.bin" at offset 0x0 from mmc device 0 partition tclconfig

24575 bytes read

Wait for PM51 stand波H?KVS&$琞Z恫 code time Jan 08 2016 20:00:00

Hi Main

CRC Check OPEN: 1

Power Down

standby by tcl system

In: serial

Out: serial

Err: serial

Net: No ethernet found.

Set MAC default

MAC: 0x0: 0x30: 0x1b: 0xba:0x2: 0xdb

#######################################################################

#######################################################################

[CPU INFO] cpu opencreate instance at 345baaf8 with private size 44 bytes at 345bab40

CPUIoctl - MDrv_CMD_CPU_QueryClock

[UTOPIA INFO] close moduleNames[38]: MODULE_CPU

msIR_Initialize

[AT][MBoot][Driver Init][530]

MPOOL size : 0x200000

Changelist: 24543697

============= set bootargs ===============

Hit any key to stop autoboot: 0

run_ubootcmd_from_mtd0::368::cmd=mmc read.p 0x25000000 misc 1088

DC on !!

Writing to MMC(0)... 128 blocks written: OK

128 blocks written: OK

done

create instance at 345bae50 with private size 344 bytes at 345bae98

MDrv_PNL_Init u32PnlRiuBaseAddr = 1f200000

MDrv_PNL_Init u32PMRiuBaseAddr = 1f000000

LINK TYPE = EXT

[MHal_PNL_Init_MOD][2141]Vx1 2 division

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=40

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msSetVBY1RconValue][1734]u16temp= 11

Vx1 2 division[_MDrv_PNL_Init_LPLL][333]pstPanelInitData->u16Width=3840, pstPanelInitData->u16Height=2160

[_MDrv_PNL_Init_LPLL][335]u16HTotal=4400,u16VTotal=2260,pstPanelInitData->u16HTotal=4400,pstPanelInitData->u16VTotal=2260, u16DefaultVFreq=600

@@11=11

[_MDrv_PNL_Init_Output_Dclk][379]pstPanelInitData->u16Width=3840, pstPanelInitData->u16Height=2160

[_MDrv_PNL_Init_Output_Dclk][381]u16HTotal=4400,u16VTotal=2260,pstPanelInitData->u16HTotal=4400,pstPanelInitData->u16VTotal=2260, u16DefaultVFreq=600

@@11=11

@@11=11

zs, [MDrv_PNL_SetPanelType, 697]reset vby1 packer process.

[MApi_XC_MLG_GetStatus, 1874]No instance existed, please get an instance by calling MApi_XC_Init() first

Init PWM0Init PWM1Init PWM2[msReadEfuse][1698]u32Result=50000051, after mask u32Result=40

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msReadEfuse][1698]u32Result=50000051, after mask u32Result=11

[msSetVBY1RconValue][1734]u16temp= 11

jeremy.chan[MsDrv_PNL_Init][885]

Wait for PM51 standby DRAM ...........PM51 run ok...........

[CPU INFO] cpu opencreate instance at 345baff8 with private size 44 bytes at 345bb040

CPUIoctl - MDrv_CMD_CPU_QueryClock

[UTOPIA INFO] close moduleNames[38]: MODULE_CPU

mmc change mount : tclconfig

Size of file "/mstar/tvconfig//boot0.jpg" from mmc device 0 partition tclconfig: 540807 bytes

Loading file "/mstar/tvconfig//boot0.jpg" at offset 0x0 from mmc device 0 partition tclconfig

540807 bytes read

create instance at 345baff8 with private size 312 bytes at 345bb040

[AT][MB][JPD Decode][2366]

[UTOPIA INFO] close moduleNames[35]: MODULE_NJPEG_EX

create instance at 345baff8 with private size 1720 bytes at 345bb040

[GOP INFO] gop opencreate instance at 345bb700 with private size 7760 bytes at 345bb748

[GOP_SetGop0GwinInfo]WidthEnd 0x0 >WidthStart 0x0

[GOP_SetGop0GwinInfo]WidthEnd 0x0 >WidthStart 0x0

[AT][MB][Show Logo][2407]

---MsDrv_PNL_BackLigth_On:931 Set MsDrv_PNL_BackLigth_On DelayTask 437

u32NuttxVirtAddr =345edbf0

The version of tee.bin is 00:00:00:00

MPOOL size : 0x200000

R2 Boot from 0x3ef40000

[CPU INFO] cpu opencreate instance at 345bd618 with private size 44 bytes at 345bd660

[AT][MBoot][Boot Nuttx][3492]

## Booting kernel from Legacy Image at 25000000 ...

Image Name: MStar-linux

Image Type: ARM Linux Multi-File Image (uncompressed)

Data Size: 13643601 Bytes = 13 MiB

Load Address: 20280000

Entry Point: 20280000

Contents:

Image 0: 11316648 Bytes = 10.8 MiB

Image 1: 2326941 Bytes = 2.2 MiB

## Loading init Ramdisk from multi component Legacy Image at 25000000 ...

ramdisk start = 0x25acadf4, ramdisk end = 0x25d02f91

-usb_stop(USB_PORT0)

-usb_stop(USB_PORT1)

-usb_stop(USB_PORT2)

-usb_stop(USB_PORT3)

-usb_stop(USB_PORT4)

Loading Multi-File Image ... OK

[AT][MB][start kr][3560]

Starting kernel ...

xy let the dog out in mboot before starting kernel, MI feed the dog ! wdt 120 secs

set 64 bit mode

__fdt_pointer=0x23000000

[ 0.000357] tommy: thread_info_cache_init

[ 0.354902] mtdoops: mtd device (mtddev=name/number) must be supplied

[ 0.558843] [SERIAL INPUT MANAGE] disable_serial : ~~bye(len:5)

[ 0.564787] [SERIAL INPUT MANAGE] enable_serial : (len: 0)

[ 0.570276] [KDEBUGD] enter : _MStar

[ 0.570276]

[ 0.576812] [SERIAL INPUT MANAGE] Managed tty_struct(.name:ttyS0) is freed !!!

[ 0.586584] init: /init.muji.rc: 280: ignored duplicate definition of service 'dhcpcd_bnep0'

[ 0.595331] init: /init.muji.rc: 455: invalid option 'chmod'

[ 0.601003] init: /init.muji.rc: 456: invalid option 'chmod'

[ 0.606700] init: /init.muji.rc: 466: invalid option 'chmod'

[ 0.724345] init: /dev/hw_random not found

[ 0.728597] [SERIAL INPUT MANAGE] disable_serial : ~~bye(len:5)

[ 0.734543] [SERIAL INPUT MANAGE] enable_serial : (len: 0)

[ 0.740032] [KDEBUGD] enter : _MStar

[ 0.740032]

[ 0.745264] [SERIAL INPUT MANAGE] Managed tty_struct(.name:ttyS0) is freed !!!

[ 0.757625] init: /dev/hw_random not found

[ 0.762776] fs_mgr: Warning: unknown flag block_validity

[ 0.768143] fs_mgr: Warning: unknown flag nodiscard

[ 0.773032] fs_mgr: Warning: unknown flag data=ordered

[ 0.778230] fs_mgr: Warning: unknown flag journal_checksum

[ 0.783734] fs_mgr: Warning: unknown flag block_validity

[ 0.789067] fs_mgr: Warning: unknown flag nodiscard

[ 0.793999] fs_mgr: Warning: unknown flag data=ordered

[ 0.799148] fs_mgr: Warning: unknown flag journal_checksum

[ 0.804678] fs_mgr: Warning: unknown flag block_validity

[ 0.810000] fs_mgr: Warning: unknown flag nodiscard

[ 0.814897] fs_mgr: Warning: unknown flag data=ordered

[ 0.820045] fs_mgr: Warning: unknown flag journal_checksum

[ 1.629033] init: cannot find '/system/bin/install-recovery.sh', disabling 'flash_recovery'

[ 1.914146] [SERIAL INPUT MANAGE] disable_serial : ~~bye(len:5)

[ 1.921541] [SERIAL INPUT MANAGE] enable_serial : (len: 0)

[ 1.928764] [KDEBUGD] enter : _MStar

后面太长,省略掉,现在是不是就可以看到很详细的打印了?有朋友问如果不能进入控制台该怎么办呢?不用担心,RT809H早已准备好不能进入命令行的串口打开方法。

在主界面芯片印字框输入EMMC,下方分类框选EMMC_ISP_MST_UART_ON这一项,飞线连接后直接点左侧写入,就会直接打开串口,查看到详细打印,操作简单直接。

下节精彩继续!

相关问答

如何查看linux根分区下全部目录及文件的大小-ZOL问答

搜索《linux就该这么学》,第6章存储结构与磁盘划分参考下!有用(0)回复jqmgls|xargs-I{}du-s{}希望对你有帮助。有用(0)回复313300你可...

像皮的英语单词_作业帮

[回答]eraser

带有er的英语单词有哪些?

1)-an,-ian,表示"……地方的人,精通……的人”American,historian,2)-al,表示"具有……职务的人"principal,3)-ant,...

新宝下载手机(2024已更新(V3.3.2/AI回答)

新宝下载手机:FNFErase-FridayNightMusic(FNFEraseFridayNightMusic安卓版)v0.0.4Thatqualifiesaswhat...

fast和quick的区别?

比如:一辆汽车行驶的非常快(It'saveryfastcar),一个人跑的非常快(Herunsveryfast)。在此时,我们需要用fast来形容。quick,quickly表...

...tandthattheotherperson'sviewiswrong.    Theconcept...

[回答]1.self-centered/subjective2.involves3.determine/define/k...

er这样的组合的单词有哪些?

1、error——/ˈerə/错误;差错;出错;误差2、erase——/ɪˈreɪz/抹去;擦掉;把(笔迹;痕迹)擦去;消除;破坏;消灭;杀死;从(磁...

为什么收到了findmyiphonehasbeendisabled?

寻找手机被关闭,就是说别人把你手机的找寻功能给关了。寻找手机被关闭,就是说别人把你手机的找寻功能给关了。

抹平的抹怎么读_作业帮

[回答]抹mǒ涂:涂抹.抹粉(喻美化或掩饰).抹黑(喻丑化).抹子(瓦工用来抹灰泥的器具.亦称“抹刀”).揩,擦:抹拭.哭天抹泪.除去,勾掉,不计在内:抹煞.轻微的...

怎么翻译“决定是否删除这个文件”_作业帮

[回答]decidewhethertodeletethefile

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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