转载请标注原文地址:http://blog.csdn.net/uranus_wm/article/details/11176877
当串口控制台suspend时,内核c语言函数printk无法输出log
在linux2.3.0版本,arm架构下有两个汇编函数printascii和printhex,可以用于log调试
由于是用arm汇编指令写的,仅支持arm架构平台
文件位置:/arch/arm/kernel/debug.S
ENTRY(printascii)
addruart_current r3, r1, r2
b 2f
1: waituart r2, r3
senduart r1, r3
busyuart r2, r3
teq r1, #'\n'
moveq r1, #'\r'
beq 1b
2: teq r0, #0
ldrneb r1, [r0], #1
teqne r1, #0
bne 1b
mov pc, lr
ENDPROC(printascii)
这个函数需要在menuconfig中打开宏定义:CONFIG_DEBUG_LL
打开这个宏之后log会很多,所以建议是直接编辑:/arch/arm/kernel/Makefile
在obj-y 后面增加一项:debug.o
这样就可使直接调用这两个函数
汇编文件中可以这样使用: