首页 > 编程知识 正文

window调试linux,串口调试工具发送指令

时间:2023-05-03 16:52:19 阅读:165152 作者:1973

# define kern _ emerg '0'/* systemisunusable * /

# define kern _ alert '1'/* actionmustbetakenimmediately * /

# define kern _ crit '2'/* critical conditions * /

# define kern _ err '3'/* error conditions * /

# define kern _ warning '4'/* warning conditions * /

# define kern _ notice '5'/* normalbutsignificantcondition * /

# define kern _ info '6'/* informational * /

# define kern _ debug '7'/* debug-level messages * /

extern int console_printk[];

# define console _ log level (console _ printk [0] ) )。

# define default _ message _ log level (console _ printk [1]

# define minimum _ console _ log level (console _ printk [2]

# define default _ console _ log level (console _ printk [3]

对于printk('……' ),只有在n小于console_loglevel时才能打印。

假设default_message_loglevel的值为4,如果printk的参数标头中没有样式字符,则在进一步处理printk函数之前会加4

minimum_console_loglevel是默认值,通常不起作用。 不能使用其他工具小于minimum_console_loglevel的值

default_console_loglevel也是预设值,平时不起作用。 将console_loglevel设置为死的默认值在其他工具设置console_loglevel的值时使用

上面代码中的console_printk是一个数组,在kernel/printk.c中定义

int console_printk[4]={

DEFAULT_CONSOLE_LOGLEVEL,/* console_loglevel */

DEFAULT_MESSAGE_LOGLEVEL,/* default_message_loglevel */

MINIMUM_CONSOLE_LOGLEVEL,/* minimum_console_loglevel */

DEFAULT_CONSOLE_LOGLEVEL,/* default_console_loglevel */

(;

可以在用户空间中更改printk函数的记录级别

装载proc文件系统后,如果读取/proc/sys/kernel/printk文件,则会显示console_loglevel、

default_message_loglevel、minimum_console_loglevel、

default_console_loglevel的四个值。

cat /proc/sys/kernel/printk

7 4 1 7

可以通过以下命令更改此值

echo ' 1417 '/proc/sys/kernel/printk

这样,您就可以设置对终端的承诺级别,以便只有在printk(…)的n小于console_loglevel时才能打印

如果console_loglevel设置为1,则只打印打印打印级别为0的printk语句。 因为新的优先顺序可以指定1~8的整数值,所以如果我们

要确保所有的打印文都能接受,我们可以

echo ' 8417 '/proc/sys/kernel/printk

这样,任何printk打印语句都可以打印信息。

也可以在dmesg中显示系统信息

oops消息

大多数错误都是因为空指针具有值,或者使用了其他错误的指针值。 这些错误通常会导致oops信息。

由于处理器使用的大部分地址是虚拟地址,所以除了存储器管理子系统自身使用的物理存储器以外,这些地址通过被称为页表的复杂结构被映射到物理地址,参照1

如果存在错误的指针,分页机制将无法将其地址映射到物理地址。 在这种情况下,处理器希望向操作系统发出信号。 在这种情况下,处理器正好处于超级用户模式,系统将生成一个

oops

ops显示错误时处理器的状态,例如cpu寄存器的内容和其他不能理解的信息。 这些信息是用printk打印的

以下是分别使用空指针进入oops的示例

unabletohandlekernelnullpointerdereferenceatvirtualaddress 000000

pgd=c0004000

[00000000] *pgd=00000000

internal error : oops :805 [ #1]

模块链接在内:

CPU :非tainted (2.6. 22.6 # 18 ) )。

PCI sats 3c 2410 FB _ probe0x 18/0x 560

lrisatplatform _ drv _ probe0x 20/0x24

PC : [ ] lr : [ ] PSR : a 00000013

sp : c 042 Fe 64 IP : c 042 FEA 0f p : c 042 fe9c

r 103360000000 r 93360 c 0025864 r 8: c 03892 EC

r 73360000000 r 6: c 0353358 r 5336000000000 r 43360 c 032 c 560

r :00001234 r 2336000000001 r 1: c 047 BD 84 r 0: c 032 c 558

unabletohandlekernelnullpointerdereferenceatvirtualaddress 000000

你会发现使用了空指针。 查找函数调用关系: PCI sats 3c 2410 FB _ probe0x 18/0x 560

,表示错误命令是s3c2410fb_probe函数的偏移量为0X18的命令。 pc : []表示错误指令的地址为c001abc4

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。