| |

iFix 爱修网

 找回密码
 注册

QQ登录

只需一步,快速开始

iFix爱修网知识星球,等待你的加入。。。
查看: 10988|回复: 14

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

  [复制链接]
发表于: 2018-1-3 10:27:23
| 显示全部楼层 |阅读模式
本帖最后由 shirleyhuang 于 2018-1-3 10:32 编辑

图片1.png

EMMC有四个区:boot1boot2userEXT_CSD,理论上来讲,引导程序放入boot区,主程序写入user区,具体的要视方案而定,MTKRTD芯片方案引导在user区,Mstar方案主板的引导起始地址在boot1区,最新的MSD6A838方案boot1区和boot2区都有用到,boot1区为引导起始地址,boot2区为Mstar魔法钥匙,也是目前为止,最高级的加密算法,不过这些都不用担心,RT809H轻松解决!

说到EMMC的四个区,不得不说的就是EXT_CSD,EXT_CSDEMMC扩展寄存器,对于维修行业来说,它的主要作用有三个:

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

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

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

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

1VCC3.3V供电,也是EMMC的主供电;

2VCCQ,也叫VCCIO,这个电压有3.3V1.8V两种,这个电压是由CPUEMMC总线的VCCIO电压值决定的,也就是说CPUEMMC总线的VCCIO3.3VEMMCVCCQ就必须为3.3V,如果CPUVCCIO1.8VEMMCVCCQ就必须为1.8V,这也是用编程器飞线读写时,比较重要的一个选择项,选择错误就可能读写出错,离线读写时候就不存在这个状况,默认3.3V即可。

3RST_N,复位,低电平复位,工作起来后为高电平。

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

5CLK,时钟。

6CMD,控制指令。

7D0-D78位数据通讯。

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

图片3.png

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

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

前文说到,整个操作系统软件运行的顺序为引导程序,内核程序,主程序,所以说从大的方面我们要分清楚这三个节点,引导是否运行完?内核是否启动?主程序是否启动?
下面我们先找一篇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电路,总线初始化失败就检查总线外挂相关电路,不能升级就检查升级标志有没有出现,维修智能电视主板就是这么简单!

微信扫一扫下方的二维码,关注iFix官方公众号,及时获取最新的精品维修教程!
微信扫一扫下方的二维码,关注iFix官方公众号,及时获取最新的精品维修教程!.jpg

回复

使用道具 举报

发表于: 2018-1-3 12:00:56
| 显示全部楼层
谢谢楼主分享的资料,论坛有你更精彩....下载收藏学习
回复 支持 反对

使用道具 举报

发表于: 2018-1-3 13:56:51
| 显示全部楼层
Thank you very much for your guidance.
回复 支持 反对

使用道具 举报

发表于: 2018-1-3 14:25:18
| 显示全部楼层
好资料  谢谢版主分享.谢谢辛苦拉!!!
回复 支持 反对

使用道具 举报

发表于: 2018-1-3 22:51:40
| 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

发表于: 2018-1-3 23:23:01
| 显示全部楼层
谢谢楼主分享的资料
回复 支持 反对

使用道具 举报

发表于: 2018-1-4 09:24:25
| 显示全部楼层
感谢版主,感谢 iFix团队。
回复 支持 反对

使用道具 举报

发表于: 2018-1-4 10:56:10
| 显示全部楼层
  好资料  谢谢版主分享   祝爱修网论坛越办越好  永远是我们的家园
回复 支持 反对

使用道具 举报

发表于: 2018-1-6 19:10:10
| 显示全部楼层
谢谢楼主的分享
回复 支持 反对

使用道具 举报

发表于: 2018-1-8 22:17:05
| 显示全部楼层
谢谢楼主,每天获得新知识,幸福啊。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|||iFix 爱修网 ( 粤ICP备2021135374号 )

粤公网安备 44060602002064号

GMT+8, 2024-4-26 13:13 , Processed in 0.073930 sec., 12 queries .

Powered by Discuz! X3.4

Release 20191201, © 2001-2024 Comsenz Inc.

MultiLingual version, Rev. 850, © 2009-2024 codersclub.org

快速回复 返回顶部 返回列表