关于uboot dev_dbg如何打开

uboot的log系统 有些使用dev_dbg, dev_err来控制。

dev_err默认开着。

如何打开dev_dbg呢?

 

查看代码, 有两处定义分别位于两个头文件中...

include/dm/device.h

  934 #ifdef DEBUG                                                                                                                                  
  935 #define dev_dbg(dev, fmt, ...) \                                                                                                              
  936 ?   __dev_printk(7, dev, fmt, ##__VA_ARGS__)                                                                                                  
  937 #else                                                                                                                                         
  938 #define dev_dbg(dev, fmt, ...)? ?   ?   ?   ?   \                                                                                             
  939 ({? ?   ?   ?   ?   ?   ?   ?   \                                                                                                             
  940 ?   if (0)? ?   ?   ?   ?   ?   ?   \                                                                                                         
  941 ?   ?   __dev_printk(7, dev, fmt, ##__VA_ARGS__);?  \                                                                                         
  942 })

include/linux/compat.h

   36 #define dev_dbg(dev, fmt, args...)› ›   \                                                                                                     
   37 ›   debug(fmt, ##args)                                                                                                                        
+  38 #endif                                                                                                                                                                                                                                                               
   42 #define dev_vdbg(dev, fmt, args...)››   \                                                                                                     
   43 ›   debug(fmt, ##args)                                                                                                                        
   44 #define dev_info(dev, fmt, args...)››   \                                                                                                     
   45 ›   printf(fmt, ##args)                                                                                                                       
   46 #define dev_err(dev, fmt, args...)› ›   \                                                                                                     
   47 ›   printf(fmt, ##args)                                                                                                                       
   48 #define dev_warn(dev, fmt, args...)››   \                                                                                                     
   49 ›   printf(fmt, ##args)                                                              

 

故导致有时未正确打开相应宏, 导致没log输出。

 


其他模块未深究, 

关于dwc3/ep0.c的log输出, 需要更改compat.h的dev_dbg定义。

 

* debug宏的定义又有很多, 

感觉是include/log.h中的定义

101 #ifdef DEBUG                                                                                                                                                        
102 #define _DEBUG› 1                                                                                                                                                   
103 #else                                                                                                                                                               
104 #define _DEBUG› 0                                                                                                                                                   
105 #endif                                                                                                                                                              
106                                                                                                                                                                     
107 #ifdef CONFIG_SPL_BUILD                                                                                                                                             
108 #define _SPL_BUILD› 1                                                                                                                                               
109 #else                                                                                                                                                               
110 #define _SPL_BUILD› 0                                                                                                                                               
111 #endif                                                                                                                                                              
112                                                                                                                                                                     
113 #if !_DEBUG && CONFIG_IS_ENABLED(LOG)                                                                                                                               
114                                                                                                                                                                     
115 #define debug_cond(cond, fmt, args...)› ›   ›   \                                                                                                                   
116 ›   do {›   ›   ›   ›   ›   ›   \                                                                                                                                   
117 ›   ›   if (1)› ›   ›   ›   ›   \                                                                                                                                   
118 ›   ›   ›   log(LOG_CATEGORY, LOGL_DEBUG, fmt, ##args); \                                                                                                           
119 ›   } while (0)                                                                                                                                                     
120                                                                                                                                                                     
121 #else /* _DEBUG */                                                                                                                                                  
122                                                                                                                                                                     
123 /*                                                                                                                                                                  
124  * Output a debug text when condition "cond" is met. The "cond" should be                                                                                           
125  * computed by a preprocessor in the best case, allowing for the best                                                                                               
126  * optimization.                                                                                                                                                    
127  */                                                                                                                                                                 
128 #define debug_cond(cond, fmt, args...)› ›   ›   \                                                                                                                   
129 ›   do {›   ›   ›   ›   ›   ›   \                                                                                                                                   
130 ›   ›   if (cond)›  ›   ›   ›   \                                                                                                                                   
131 ›   ›   ›   printf(pr_fmt(fmt), ##args);›   \                                                                                                                       
132 ›   } while (0)                                                                                                                                                     
133                                                                                                                                                                     
134 #endif /* _DEBUG */

136 /* Show a message if DEBUG is defined in a file */                                                                                                                  
137 #define debug(fmt, args...)››   ›   \                                                                                                                               
138 ›   debug_cond(_DEBUG, fmt, ##args)                                                                                                                                 
139                                                                                                                                                                     
140 /* Show a message if not in SPL */                                                                                                                                  
141 #define warn_non_spl(fmt, args...)› ›   ›   \                                                                                                                       
142 ›   debug_cond(!_SPL_BUILD, fmt, ##args) 

如果#define DEBUG在这里, uboot中会有很多log...

 

故直接修改compat.h中 dev_dbg的定义...

+  39 #define dev_dbg(dev, fmt, args...)› ›   \                                                                                                                         
+  40 ›   printf(fmt, ##args); \                                                                                                                                        
+  41     printf("\n")

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uboot是一种常用的开源引导加载程序,用于嵌入式系统的引导启动。其中,board_init_r和board_init_f是uboot中的两个重要函数。 board_init_r函数是在uboot启动过程中执行的第一个函数。它负责执行一系列的初始化工作,例如初始化系统时钟、设置内存映射等。此函数被用于配置和初始化各个硬件模块,包括中断控制器、串口控制器、定时器等,以确保系统正常运行。该函数还读取并解析配置文件,加载设备树等操作,为后续的引导加载准备好必要的条件。 board_init_f函数是在board_init_r函数之后调用的。它用于进一步初始化系统,并执行一些与硬件相关的操作。例如,该函数可能会初始化网络接口、USB接口、存储设备等,并设置系统的默认环境变量。此外,board_init_f函数还负责将uboot的控制权交给操作系统的引导加载程序,从而完成uboot的使命。 通过调用board_init_r和board_init_f函数,uboot能够在系统启动时完成各种硬件的初始化和配置工作。这两个函数是uboot启动过程中的重要环节,确保系统能够顺利地加载操作系统并运行。同时,它们也为开发者提供了扩展uboot的接口,可以在这两个函数中添加自定义的初始化代码,以满足系统特定的需求。 总结来说,board_init_r和board_init_f是uboot中两个重要的函数,用于初始化和配置嵌入式系统的硬件,并为操作系统的加载做好准备。它们是uboot启动过程中不可或缺的一部分,保证系统的正常启动和运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值