• MTK 修改kernel log 时间


    一、mtk kernel log 等级修改

      修改mtk log等级需要注意一下两个文件  

      kernel-3.18includelinuxprintk.h中定义了各默认日志的级别  

      vendormediatekproprietaryootableootloaderlkappmt_bootmt_boot.c

        sprintf(cmdline,"%s%s",cmdline," quiet");-------如果有这个 则kernel 默认的输出等级是4

      修改kernel loglevel 等级可以屏蔽掉上面的 

      sprintf(cmdline,"%s%s",cmdline," loglevel=7"); ---直接修改loglevel 等级,比较类似以前展讯的方法。

      参看kernel 的默认等级可以直接访问proc文件节点:

        cat  /proc/sys/kernel/printk 

      查看cmdline可以使用 : cat /proc/cmdline

      *在目前使用的代码中对应的项目 kernel的 deconfig中,虽然有如下配置:

      CONFIG_CMDLINE="console=tty0 console=ttyMT0,921600n1 root=/dev/ram vmalloc=496M slub_max_order=0 slub_debug=O loglevel=8 initcall_debug gpt "  

      但是修改对用的loglevel 等级没有生效,展讯方案目前是在对应的 dts 里面修改loglevel 等级

      其他可以更详细代码可参看:http://blog.csdn.net/ffmxnjm/article/details/72723325

    二、修改kernel log 里面的时间显示方式

      mtk 默认的kernel log的时间 是以开机时间保存的。

    <3>[10059.945257] <2> (2)[30487:pass1][Camera-ISP][ISP_Buf_CTRL_FUNC][rtbc][DEQUE](2):d(8)/id(0x0)/bs(0x2c8f80)/va(0xe406f000)/pa(0x1d800000)/t(10059.906818)/img(1632,1224,2704,0,1,0,0,0,0)/m(0xda)/fc(221)/rrz(0,0,1632,1224,1440,1080),dmao(0,0,2704,1080),lm#(0xda)
    <3>[10059.945260] <2> (2)[30487:pass1][Camera-ISP][ISP_Buf_CTRL_FUNC]cur dma:8,read idx = 0,total cnt = 3,bWaitBufRdy= 1 ,0_0_0_
    <3>[10059.949506] <2> (2)[30487:pass1][Camera-ISP][ISP_Buf_CTRL_FUNC]cur dma:8,read idx = 0,total cnt = 3,bWaitBufRdy= 1 ,0_0_0_

      按照网上所说的 搜索 UTC 或者 Android time 关键字 没有找到对应的log,没法与mobile log 里面的其他log的时间对应起来

      尝试修改 printk.c 里面的时间记录方式

      使用 网上:http://blog.csdn.net/fanwenjieok/article/details/38731121

      struct timex  txc; 
      struct rtc_time tm; 
      do_gettimeofday(&(txc.time)); 
      rtc_time_to_tm(txc.time.tv_sec,&tm); 
      printk(“UTC time :%d-%d-%d %d:%d:%d /n”,tm.tm_year+1900,tm.tm_mon, tm.tm_mday,tm.tm_hour,tm.tm_min,tm.tm_sec);

       获取时间分方式 函数可以找到,但是修改之后不能开机,一直不停重启,由于没有开uart调试 没法定位原因,只能放弃这种方式。

      current_kernel_time(); get_seconds();// __getnstimeofday64(&tv); --这些也同样会导致重启

       只能放弃上面的方式,转为获取开机时间,getboottime(&tv);

      通过计算 获得当前时间:效果如下  

    <3>01-01 08:34:59.326953 [ 2094.788753] <0> (1)[13075:pass1][Camera-ISP][ISP_Buf_CTRL_FUNC]cur dma:8,read idx = 1,total cnt = 3,bWaitBufRdy= 1 ,0_0_0_
    <3>01-01 08:34:59.328583 [ 2094.790383] <0> (1)[13075:pass1][Camera-ISP][ISP_Buf_CTRL_FUNC]cur dma:8,read idx = 1,total cnt = 3,bWaitBufRdy= 1 ,0_0_0_
    <3>01-01 08:34:59.349154 [ 2094.810953] <1> (1)[13078:pass2][Camera-ISP][ISP_Buf_CTRL_FUNC][rtbc][DEQUE](1):d(8)/id(0x0)/bs(0x2c8f80)/va(0xe3d6f000)/pa(0x1e

    getboottime(&tv);// 获取系统启动时刻的实时时间

    tem_nsec = bootTm.tv_nsec + rem_nsec;

    //tv.tv_nsec = tem_nsec % 1000000000;//更新
    tem_sec =tem_nsec/1000000000 + bootTm.tv_sec + ts;//更新
    tem_nsec = tem_nsec % 1000000000 ; // 更新小数点后面时间
    rtc_time_to_tm(tem_sec, &real_tm);
      *mark 一下 展讯的方案是在log apk记录的时候加上时间前缀,直接使用uart 则还是为开机时间,可以减少kernel计算

      时间匆忙,如有错误,请见谅。  

     更详细的时间方面的介绍:http://blog.csdn.net/droidphone/article/details/7989566

     

  • 相关阅读:
    android学习日记08--Paint画笔
    android学习日记07--Canvas画布
    android学习日记06--SurfaceView视图
    android学习日记06--View视图
    android学习日记05--Activity间的跳转Intent实现
    android学习日记04--开发中的通用细节
    android学习日记03--常用控件Dialog
    android学习日记03--常用控件ListView
    android学习日记03--常用控件tabSpec/tabHost
    android学习日记03--常用控件progressbar/seekbar
  • 原文地址:https://www.cnblogs.com/atlas2016/p/7234109.html
Copyright © 2020-2023  润新知