|
内核启动过程中串口初始化问题--基于龙芯1嵌入式开发板
[复制链接]
本人有一海山dev3210的龙芯1开发板,在移植到 linux-2.6.22.6 时,遇见了串口不能正常初始化的问题,导致不能显示 printk() 函数要打印的内容,于是使用了 prom_printf() 函数在初始化串口前打印相关内容来调试,发现是在:(--> 箭头表示调用链)
register_console(&serial8250_console)-->
serial8250_console_setup(serial8250_console, 115200)-->
uart_set_options(&serial8250_ports[0]->port, serial8250_console,baud,prity,bits,flow)-->
serial8250_set_termios(serial8250_ports[0], &termios, NULL)-->
serial_out(uart_port, offset, value)-->
outb(value, uart_port->port.iobase + offset) 在此处卡了壳,在 vim + cscope 下始终找不到 outb() 函数的定义,于是改写为:
*(unsigned char *)(0xA0000000 + uart_port->port.iobase + offset)= (value & 0xff),该 UART 寄存器位宽 1byte 。
结果,重新编译启动内核,似乎能通过卡壳的地方了,但是 prom_printf()打印的内容似乎被清除了,也就是打印出来后又被清屏了,连PMON 打印出来的部分内容也被清掉了,且还有不足一行的乱码。至于printk()是否打印出来还不知道。反正这下没法继续调试了,不知哪位高手能解疑惑,不胜感激 。。。。。。
|
|