首页 » 智能 » 31-iFix团队10月26号现场培训课程分享(五)_内核_标记

31-iFix团队10月26号现场培训课程分享(五)_内核_标记

神尊大人 2025-01-01 06:37:57 0

扫一扫用手机浏览

文章目录 [+]

EMMC有四个区:boot1、boot2、user、EXT_CSD,理论上来讲,勾引程序放入boot区,主程序写入user区,详细的要视方案而定,MTK和RTD芯片方案勾引在user区,Mstar方案主板的勾引起始地址在boot1区,最新的MSD6A838方案boot1区和boot2区都有用到,boot1区为勾引起始地址,boot2区为Mstar邪术钥匙,也是目前为止,最高级的加密算法,不过这些都不用担心,RT809H轻松办理!

说到EMMC的四个区,不得不说的便是EXT_CSD,EXT_CSD为EMMC扩展寄存器,对付维修行业来说,它的紧张浸染有三个:

31-iFix团队10月26号现场培训课程分享(五)_内核_标记 31-iFix团队10月26号现场培训课程分享(五)_内核_标记 智能

1、启动位置选择,我们都知道EMMC有三个区,分别为:boot1区、boot2区和user区,mboot从那个区开始?或者说mboot开始位置在哪个区?Mstar单EMMC芯片方案mboot开始位置在boot1区,而MTK单EMMC芯片方案mboot开始位置在user区初始位置,以是启动位置选择非常主要;

31-iFix团队10月26号现场培训课程分享(五)_内核_标记 31-iFix团队10月26号现场培训课程分享(五)_内核_标记 智能
(图片来自网络侵删)

2、启动位宽选择,目前来说启动位宽有三种8bit、4bit、1bit,另有高速/标准速率选择位,组合起来就有6种;

3、复位模式选择,复位模式分别有外部复位模式和内部复位模式两种。

上图为比较常见的EMMC与主芯片CPU通讯电路,一片EMMC的实物看上去很多引脚,实际上真正事情的就这么几个引脚,要想电路正常事情,必须知足几个条件:

1、VCC,3.3V供电,也是EMMC的主供电;

2、VCCQ,也叫VCCIO,这个电压有3.3V和1.8V两种,这个电压是由CPU的EMMC总线的VCCIO电压值决定的,也便是说CPU的EMMC总线的VCCIO为3.3V,EMMC的VCCQ就必须为3.3V,如果CPU的VCCIO为1.8V,EMMC的VCCQ就必须为1.8V,这也是用编程器飞线读写时,比较主要的一个选择项,选择缺点就可能读写出错,离线读写时候就不存在这个状况,默认3.3V即可。

3、RST_N,复位,低电平复位,事情起来后为高电平。

4、Flash选择,上图电路为3.3V通过RM101送入CPU识别,高电平为选择EMMC。

5、CLK,时钟。

6、CMD,掌握指令。

7、D0-D7,8位数据通讯。

再附上一张EMMC印制板点位图,供大家维修时参考。

以上为EMMC的事情条件,也是维修时候的主要检测点,前面说到,硬件是软件的载体,以是说要想软件流畅的运行,必须担保硬件的可靠。
在维修中,不管是软件故障还是硬件故障,我们通过打印信息合营剖析,都能很快找到故障点。

有朋友说到打印信息太难了,紧张是不认识英文,实在不然,看打印信息紧张是看它运行的节点标志,很多维修高手也不精通英文,只会三个单词,yes,no,ok,但是他们也会看打印信息。

前文说到,全体操作系统软件运行的顺序为勾引程序,内核程序,主程序,以是说从大的方面我们要分清楚这三个节点,勾引是否运行完?内核是否启动?主程序是否启动?

下面我们先找一篇MT5505的打印信息给大家看看打印的节点。

017-09-25,11:58:34

COM6,BaudRate:115200 bps, RXD: VGA->11,TXD: VGA-> 4, Printed by RT809H:

Boot- 初始化DDR

DRAM Channel ACalibration.

Byte 0 :Gating(2 ~ 47), Size=46, Mid=26, Set=16.

Byte 1 :Gating(2 ~ 42), Size=41, Mid=24, Set=14.

Byte 2 : Gating(2~ 62), Size=61, Mid=34, Set=24.

Byte 3 :Gating(2 ~ 57), Size=56, Mid=31, Set=21.

HW Byte 0 :DQS(10 ~ 39), Size 30, Set 23, HW_Set 26.

HW Byte 1 :DQS(7 ~ 37), Size 31, Set 21, HW_Set 24.

HW Byte 2 :DQS(9 ~ 40), Size 32, Set 24, HW_Set 25.

HW Byte 3 :DQS(9 ~ 38), Size 30, Set 23, HW_Set 24.

DRAM A Size =512 Mbytes.

Boot 初始化EMMC

Start Pmain

0x0000a000

EMMC boot

CID:0x0ae472cb

:0x30109196

:0x30344739

:0x11010030

LZHS addr:0x00100040

LZHS size:0x00099eb8

LZHS checksum:0x000000bc

Boot

Start Lmain 初始化总线

MT5880 BootLoader v0.10

Boot reason: A/Cpower on!!

Load VGAinternal EDID.................

Load HDMI internal EDID.................

CEC Physical offset 159

HDMI1 Physicaladr 0x10

HDMI1 PA 0x10

HDMI1 checksum0x52

HDMI2 PA 0x10

HDMI2 checksum0x52

HDMI3 PA 0x20

HDMI3 checksum0x42

HDMI4 PA 0x30

HDMI4 checksum0x32

SIF_Master0: newdesign

IR DATA register: 0x 0

Boot reason: A/Cpower on!!

T8032 init A/Con case loader stage...

Load T8032 FW(addr: 0x d6af60, size: 24576)success!!

T8032 FWversion: 84

T8032 change toloader stage...

LDR_FlashCopy0xf010 0x4d000 0x80

1st MAC in EEPis valid (64:88:ff:2e:65:da)

1st :(64:88:ff:2e:65:da)

2nd :(ab:3e:0f:52:c6:cf)

Boot reason: A/Cpower on!!

Boot reason: A/Cpower on!!

Boot reason: A/Cpower on!!

Boot reason: A/Cpower on!!

Disable VGAwakeup

GPIO_MtkLedCtrlFunc_eLedStatus=2

---standby_EEPDTV_GetCfg, bLedOnOff = 0x1!!

==Standby (待机标志)

DRAM Channel ACalibration.

Byte 0 :Gating(2 ~ 47), Size=46, Mid=26, Set=16.

Byte 1 : Gating(2~ 42), Size=41, Mid=24, Set=14.

Byte 2 :Gating(2 ~ 57), Size=56, Mid=31, Set=21.

Byte 3 :Gating(2 ~ 52), Size=51, Mid=29, Set=19.

HW Byte 0 :DQS(10 ~ 38), Size 29, Set 23, HW_Set 26.

HW Byte 1 :DQS(7 ~ 37), Size 31, Set 21, HW_Set 24.

HW Byte 2 :DQS(9 ~ 40), Size 32, Set 24, HW_Set 25.

HW Byte 3 :DQS(9 ~ 39), Size 31, Set 24, HW_Set 24.

DRAM A Size =512 Mbytes.

Boot

Start Pmain

0x0000a000

EMMC boot

CID:0x0ae472cb

:0x30109196

:0x30344739

:0x11010030

LZHSaddr:0x00100040

LZHSsize:0x00099eb8

LZHSchecksum:0x000000bc

Boot

Start Lmain

MT5880 BootLoader v0.10

SIF_Master0: newdesign

IR DATA register: 0x 0

T8032 change toloader stage...

LDR_FlashCopy0xf010 0x4d000 0x80

1st MAC in EEPis valid (64:88:ff:2e:65:da)

1st :(64:88:ff:2e:65:da)

2nd :(ab:7e:0f:52:c6:cf)

PDWNC_Init

GPIO_MtkLedCtrlFunc_eLedStatus=1

Enable Ledblinking (gpio_idx 201, on_value 1, period 20, type: 80)

USB0: Set GPIO64= 1.

USB1: Set GPIO64= 1.

USB2: Set GPIO61= 1.

Do USB upgrade 升级标志

USB: Vbus turnup time = 369 ms, Max =900 ms.

No USB device.

USB upgrade stop

eepNptv offset:0x260, EEP_BOOT_LOGO_INDEX offset: 0x91

Read boot logoindex from eeprom: 0, 0x01

Load boot logoindex: 0

Loader_ReadMsdc(14,0, 0x0d000000, 1048576)

Find panel index106 from EEPROM

Translate panelindex to 106

u4Offset == 0x70

Calc Flashpanelattrib checksum =0xff

[xh_dbg] selectflash panel's base data

Calc Flashpanelex_attrib checksum =0xffffffff

[xh_dbg] selectflash panel's extra data

[hhhxxx] panel_table.c

[hhhxxx] LoadProductIndex line 7690

Find product index 45 from EEPROM

[xh_pnl_drv]set CHProductTypeIndex = 45

---------- [SA7]vErrorHandleInit ----------

[SA7] Errorhandling init

[SA7] PANEL_GetPanelWidth=0x780,PANEL_GetPanelHeight=0x438 , 加载屏信息

wDrvGetOutputHTotal=0x898 ,wDrvGetOutputVTotal=0x465

[SA7]PANEL_GetHTotalMax=0xa60, PANEL_GetHTotalMin=0x870, PANEL_GetVTotalMax=0x5c8,PANEL_GetVTotalMin=0x44c

[SA7]PANEL_GetPixelClkMax=164000000, PANEL_GetPixelClkMin=100000000

[SA7] PANEL_GetPixelClk60Hz= 0x8d9ee20

---------- [SA7]vErrorHandleSetByTiming ----------

[SA7]u2HSyncWidth=260, u2HSyncStart=1930, u2VSyncWidth=26, u2VSyncStart=1094

---------- [SA7]vErrorHandleSetByTiming end----------

---------- [SA7]vErrorHandleSetByPanel end----------

[SA7] vDDDSInit

---------- [SA7]vErrorHandleSetByTiming ----------

[SA7]u2HSyncWidth=30, u2HSyncStart=1936, u2VSyncWidth=3, u2VSyncStart=1119

---------- [SA7]vErrorHandleSetByTiming end----------

[LVDS]u4Freq=148500000

vDrvSetOCLKClockSchemaInit.

[SA7]_fgVopllUseDDDS = True

[SA7] u4Syspll =648000000

[LVDS] VOPLLInitialize successful !

befor jpegdecode!

jpeg_decode(0x0d000000,1048576, 0x0e000000, 1048576, 0x0f000000, 1920, 1080)

Color:14BmpAddr:0x0f000000 Width:1920 Height:1080

---Panel 1920 x1080

LDR_OsdDisplay(14,0x0f000000, 1920, 1080) return 0

Flash load lzhsheader from 0x80000 to dram(0x15029d0), size=2048拷贝勾引到DDR

Decompressionuboot to 0x00800000...

Flash load imagefrom 0x80000 to dram(0x15029d0), size=0x3949a

secure boot ok 拷贝勾引完成

LZHS start

LZHS done

Startingimage...

运行勾引

U-Boot2011.12.12 (Feb 17 2016 - 10:46:27)

DRAM: 401 MiB

WARNING: Cachesnot enabled

MMC: HOST 1

Dev Num: 0,Timing Position: 0, Sample Edge: 0x00

11010030:30344739:30109196:0AE472CB

id1:00303034id2:47393010

eMMC Name:UNKNOWN

Dev Num: 0,Timing Position: 1, Sample Edge: 0x00

Dev Num: 0,Timing Position: 2, Sample Edge: 0x00

: 0

0.0.0.0

In: serial

Out: serial

Err: serial

Net: Net Initialization Skipped

No ethernetfound.

Hit any key tostop autoboot: 0

## Bootingkernel from Legacy Image at 00007fc0 ...拷贝内核到DDR

XIP Kernel Image ... OK 拷贝完成

OK

Starting kernel...

加载内核

timekeeping_initdone

mmc0: 5880

at 0xf006d000 irq 100 data mode 3 Optimization

mmc1: 5880

at 0xf0012000 irq 60 data mode 3

init:====~~~~starting 'ueventd'

special_arg:00000002

test mmc...

init: init:cannot open '/initlogo.rle'

Unable toregister pmem driver!

init: ====~init:I read console

===

init: =================appstore running======================

init: notcom.changhong.appstore.apk, or sdk appstore changed !

init: so copy/system/apk/com.changhong.appstore.apk to /data/app

Password: init:I read console

===

init:===============check tent================

init: the nv is0

init: the cv is1

init:====~~~~starting 'servicemanager'

init:====~~~~starting 'vold'

init:====~~~~starting 'uuid_init'

init:====~~~~starting 'netd'

init:====~~~~starting 'debuggerd'

init:====~~~~starting 'ril-daemon'

init:====~~~~starting 'zygote'

init:====~~~~starting 'drm'

init:====~~~~starting 'media'

init:====~~~~starting 'dbus'

init:====~~~~starting 'installd'

init:====~~~~starting 'keystore'

init:====~~~~starting 'vdevcreate'

init:====~~~~starting 'sensor-daemon'

init:====~~~~starting 'insmod'

init:====~~~~starting 'pre-init'

init:====~~~~starting 'post-init'

init:====~~~~starting 'dtv-svc'

init:====~~~~starting 'chtvos'

init:====~~~~starting 'cmddaemon'

init:====~~~~starting 'pppoe-dial'

init:====~~~~starting 'uploadservice'

init:====~~~~starting 'addvirtualnet'

==> pre-init start 内核加载完成,初始化开始。

2.11 3.10

chmod:/perm/voice: No such file or directory

mknod:/dev/mali: File exists

mknod: /dev/ump:File exists

Setting upswapspace version 1, size = 104853504 bytes

UUID=848eaee0-a1de-4c2c-ba23-85848ba71c1d

{At00:00:2:415}<<<<<dtv_svc main() functionbegin...>>>>>

dtv_svc_main:fbm phy addr = 1a170000, share mem addr = 400b6000, vir addr = 0, size = 0

{At00:00:2:485}<<<<<dtv_svc main() regist signal_sigpipe_entry GETSIGPIPE.>>>>>

{At00:00:2:537}<<<<<Before x_drv_init() ...>>>>>

SC_FCT_0:sched_getparam 708 error -1

SC_FCT_0:sched_getparam 711 error -1

drv_init as 0x39model

drv_init as EUmodel

MTDRVCUST_BootupCheck()fail, ret=-1

[MTCI0]MTCI_Init : 0

TVDMsgCtrl: NRL:60/40, PER:100/90

[1;31m TVOS first line [0m

x_drv_init end!!

{At00:00:3:808}<<<<<After x_drv_init() ...>>>>>

{At00:00:3:808}<<<<<Before MW init ...>>>>>

{IOM} UARTthread inited.

gl_initMTAL_Init!

gl_initMTAL_Init complete!

gl_initMTGFX_GetBufferPartition complete!

gl_initgl_mem_manager_init complete!

gl_initMTOSD_RGN_LIST_Create complete!

gl_initMTOSD_RGN_Create complete!

[ GL DFB ]Create plane (ON window (Shared)) :101170f

{At00:00:4:247}<<<<<Before MW customized parts init...>>>>>

{CI_glue}:ci_eng_init

88888888888888PHYSICAL_Init() entered 888888888888888

88888888888888ITC_Init() entered 888888888888888

88888888888888PHYS_DRVOpen() entered 888888888888888

88888888888888STB_CIOpen() entered 888888888888888

[MTCI0]MTCI_Init : 0

88888888888888STB_CIOpen() ended 888888888888888

88888888888888PHYS_DRVOpen() entered 888888888888888

{At00:00:4:317}<<<<<After MW customized parts init...>>>>>

{DT} Real TimeClock is available on this system.

MTDRVCUST_OptQuery()fail, ret=-1

{At00:00:4:321}<<<<<After MW init ...>>>>>

{At00:00:4:347}<<<<<dtv_svc main() function isready...>>>>>

wsfNotifyAutoDetSrc(u1CurrentDetSrcIdx=9, sts=1)

NotifyAutoDetSrc(av1(2),av2(1),ypbpr1(1),HDMI1(1),HDMI2(0),HDMI3(1),HDMI4(1)VGA(0))

======TypeProductIndex=TYPE_LED42C2000i=========

由于整篇打印信息太长,鉴于篇幅缘故原由,后面的信息没有贴上来。
在现场培训时讲了两篇打印,长虹MT5505芯片方案和乐视MSD6A938方案,实际上软件架构基本一样,只是勾引部分顺序有些差异,这并不影响我们去理解整篇打印信息的节点。

从全体软件架构理解,加载完Linux 内核后,勾引才会移交掌握权,也便是说加载完内核后勾引才会停滞,实际上,勾引程序指引启动内核时,不管内核是否能正常启动,作为勾引程序它已经无能为力了,以是说,启动内核的标志,可以算是勾引程序正常的一个标志,也便是打印信息里面的Starting kernel...标志,目前几大芯片厂家的标志都比较统一,大家认这个标志就可以。
在维修中,看到这个标志,就不要去轻易疑惑勾引程序了。

如果看到Starting kernel...这个标志后,涌现卡LOGO,或者涌现LOGO后黑屏等等,都属于主程序运行失落败,维修智能机主板实际上也是打消法,先软件后硬件,如果U盘升级不好,那就可能是Flash自身故障,或者软件运行的硬件有故障(常见为DDR自身,DDR通讯,主芯片),iFix君建议用RT809H完备擦除Flash,再重新写入,打消软件问题后,再去检修硬件。

勾引程序的节点也是一样,DDR初始化失落败就检讨DDR电路,EMMC初始化失落败就检讨EMMC电路,总线初始化失落败就检讨总线外挂干系电路,不能升级就检讨升级标志有没有涌现,维修智能电视主板便是这么大略!

相关文章

游戏变语言,数字时代的文化交融与创新

在数字时代,游戏已经不再仅仅是娱乐产品,它逐渐成为了承载文化、传递价值的重要载体。从《王者荣耀》到《英雄联盟》,从《阴阳师》到《原...

智能 2025-01-02 阅读0 评论0

芯片创业一念“地狱”?_芯片_公司

芯片是中美贸易战以来各界关心的热词,近日正式生效的美国《芯片与科学法案2022》更是将其热度推向高潮。在美国企图以芯片四方同盟、A...

智能 2025-01-02 阅读0 评论0