康佳MSD6A628VXM平台液晶彩电打开电视机的串口的方法 电视机刚出厂的时候串口打印功能是关闭的,因为串口和VGA接着电脑的话可能无法开机,所以默认串口必须是关的,假如手动打开用完之后要记得将它关闭 打开电视机串口的方法 方法1、进入工厂菜单,选择串口打印选项,按确认由关切换至开,等待5秒钟,数据保存后,断电重启才能生效 方法2、为了有时候屏不亮或是其他无法进工厂菜单的情况,在开机上电的时候按住遥控器的频道加键8秒钟左右,串口就会自动打开 关闭电视机串口的方法 1、进入工厂菜单 2、选择Uart选项,按确认进入,选择Off选项,按确认, 3、等待5秒钟,数据保存后,断电重启才能生效 串口打印命令 Android系统是基于Linux内核的,所以打印信息也分两种,一种是Linux内核的打印,这个打印信息是只要串口打开就会打印的; 另外一种是Android系统的打印,这个打印默认是不输出的,需要执行logcat命令才会显示出来 Logcat命令执行方法 在电视机开机大概十几秒钟后,会打印出一个$符号,看到这个符号后就可以输入logcat命令,然后回车就可以看到不停的打印东西了 因为Android的打印信息会有缓存,在logcat命令执行前的打印信息会有部分保留,所以执行logcat命令后会有一串打印几种释放出来,但是有些时候我们是想看到某个操作执行之后的打印信息,这时候我们就需要首先把前面我们不关心的打印信息先删掉。 Logcat命令执行方法 删除前面打印的方法是输入logcat -c,即 $logcat -c 然后再输入logcat,即 $logcat 或者两条命令一起输入,即 $logcat -c;logcat Logcat命令退出方法 当需要退出Android打印状态,或者需要输入其他的Linux命令的时候,使用电脑键盘的Ctrl+c组合键即可退出logcat命令 打印信息的保存 一种简单的方法是打印信息显示后,在SecureCRT编辑菜单中选择“全选”,然后选择“复制”,再把它粘贴到一个文本文件中即可 另一种方法是直接保存在一个文件中,在SecureCRT文件菜单中选择记录会话(log session),然后会弹出图3所示对话框,输入一个文件名,点击保存即可,这样后面打印的信息除了在SecureCRT界面显示之外,也会直接保存在刚才选择的文件中 死机或重启信息的获取 有时候一些严重的错误会导致死机或重启,重启其实也是因为死机,因为出厂默认看门狗是打开的,当电视死机后,看门狗会让电视重启。软件系统中有一些机制能够帮助快速找到某些情况的死机是那段代码导致的。这种情况的死机会生成一个coredump的文件。 当死机生成coredump信息时会打印一下开头的一段信息 [ 474.063927] ***** Create coredump file to /var/core_dump.970.gz ****** [ 474.070516] * Ultimate CoreDump v0.4 : started dumping core into 'Coredump.1671.gz' file * [ 474.079396] <1>##### elf aligned pages num : 10 + (3 Coredump guard buffers) [ 474.086937] ##### Not used first lower guard page, elf_foffset : 38536, aligned_elf_foffset : 40960 [ 474.096318] ##### set_gzip_header() return success... [ 474.101511] ##### Allocated 267980 bytes for deflate workspace [ 474.107380] ##### coredump_alloc_workspaces() return success... 接着会打印很多带有#####的信息,同时会夹着其他的打印信息 [ 1422.503646] ##### default buf is full...cnt : 1 [ 1422.780208] ##### default buf is full...cnt : 2 [ 1423.243868] ##### default buf is full...cnt : 1 [ 1423.521003] ##### default buf is full...cnt : 2 [ 1423.984347] ##### default buf is full...cnt : 1 [ 1424.261264] ##### default buf is full...cnt : 2 [ 1424.739095] ##### default buf is full...cnt : 1 [ 1425.015875] ##### default buf is full...cnt : 2 [ 1425.480977] ##### default buf is full...cnt : 1 [ 1425.757779] ##### default buf is full...cnt : 2 [ 1426.228721] ##### default buf is full...cnt : 1 [ 1426.505555] ##### default buf is full...cnt : 2 [ 1426.985948] ##### default buf is full...cnt : 1 [ 1427.262675] ##### default buf is full...cnt : 2 Coredump信息结束时会打印如下的信息 [ 1429.718950] ##### default buf is full...cnt : 1 [ 1429.996349] ##### default buf is full...cnt : 2 [ 1430.503842] ##### (vma->vm_next) == NULL ... [ 1430.509719] ##### Process addr space debug Info ##### [ 1430.514893] ##### vma_cnt : 401 [ 1430.518133] ##### vm_page : 64307 [ 1430.521562] ##### user_page_cnt : 2135 [ 1430.525423] ##### zero_page_cnt : 62172 [ 1430.529371] ##### kernel_page_cnt : 0 [ 1430.533149] ##### uncomp_coredump_file_size : 263438336 [ 1430.538413] ##### GZIP tailer CRC32 : 2857245304 [ 1430.548009] CoreDump: finished dumping core 以上coredump信息生产完成之后,需要把生成的coredump文件用U盘拷贝出来提供给开发分析,具体拷贝方法如下: 1、最好在模拟死机现象之前先把U盘插入,因为有时候死机之后就无法挂载U盘了 2、执行命令busybox cp /var/core_dump.978.gz /mnt/usb/sda1/ (core_dump.978.gz文件名中的978有可能是其他值,sda1也可能是sda2或sdb1等,要根据实际情况) 3、这样就拷贝的U盘里了,把U盘中的core_dump.978.gz文件提供过来,并说明软件具体的版本信息,在系统信息中有显示 我们可以从生成的coredump信息中分析出代码调用顺序和代码死在哪行: #3 0x001fdb8c in mapi_video_base::Initialize (this=0x71322460, enInputSourceType=MAPI_INPUT_SOURCE_DTV, enDstWin=<value optimized out>, ptDispWin=<value optimized out>) at mapi_video_base.cpp:987 #4 0x0028d158 in mapi_dtv_video::Initialize (this=0x26bedb8, enInputSourceType=MAPI_INPUT_SOURCE_DTV, enDstWin=MAPI_MAIN_WINDOW, ptDispWin=0x0) at ./dtv/mapi_dtv_video.cpp:695 #5 0x0006600c in MSrv_DTV_Player::DoVideoInit (this=0x272b188, eInputType=MAPI_INPUT_SOURCE_DTV, eWin=MAPI_MAIN_WINDOW) at ./src/MSrv_DTV_Player.cpp:277 #6 0x0006efa8 in MSrv_Player::Init (this=<value optimized out>, eInputType=<value optimized out>, eWin=<value optimized out>) at ./src/MSrv_Player.cpp:923 #7 0x0011a88c in MSrv_Control_DVB::SwitchMSrvDtvRouteCmd (this=0x2718698, u8DtvRoute=<value optimized out>) at ./src/MSrv_Control_DVB.cpp:1351 有些死机时也能在打印信息中直接找到导致死机的代码,比如下面的带ASSERT FAIL关键字的信息就是提示程序死在那行,但是这种就没有上面拿coredump文件那样可以分析调用顺序,可以更详细的找到死机原因。 I/tvos ( 968): Error! Main window is re-initialized before being finalized I/tvos ( 968): ASSERT FAIL: mapi_video_base.cpp virtual void mapi_video_base::Initialize(MAPI_INPUT_SOURCE_TYPE, MAPI_SCALER_WIN, mapi_video_datatype::ST_MAPI_VIDEO_WINDOW_TYPE*) 987 |
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.