当前位置: 代码迷 >> 驱动开发 >> linux 系统移植有关串口控制平台的有关问题
  详细解决方案

linux 系统移植有关串口控制平台的有关问题

热度:53   发布时间:2016-04-28 10:48:38.0
linux 系统移植有关串口控制平台的问题

将linux2.6.38.2移植到s3c6410上
有两个问题
1.在哪里初始化控制平台 在start_kernel刚开始时加了打印没打出来
2.这个问题该如何解决
系统起来以后
打印
Load Kernel...
Uncompressing Linux... done, booting the kernel.

00962610:000009D8:0045507D
502719DC-507370DC>50008000
507370FC
50008000: E321F0D3 EE109F10 EB00861E E1B0A005 0A00862D EB000099 E1B08005 0A0000
55
50008020: EB0000A6 EB000004 E59FD008 E28FE000 E28AF010 EA00003E C0008300 E59F40
D4
50008040: E1A00004 E3A03000 E2806901 E4803004 E4803004 E4803004 E4803004 E13000
06
50008060: 1AFFFFF9 E59A7008 E28F00B8 E8900068 E0400003 E0855000 E0866000 E1A05A
25
50008080: E1A06A26 E1873A05 E7843105 E1350006 12855001 1AFFFFFA E1A0300F E1A03A
23
500080A0: E1873A03 E2840A03 E5A03000 E59F6068 E2800004 E0846926 E1500006 E28336
01
500080C0: 94803004 9AFFFFFB E2840A03 E3876205 E5806000 E59F7044 E59F3044 E1A03A
23
500080E0: E1A03103 E0840003 E2633901 E3530B02 83A03B02 E0806003 E1A03A27 E59A70
0C
s3c24xx_serial_initconsole
info Samsung S3C6400 UART
s3c24xx_serial_init_ports: initialising ports...
s3c24xx_serial_init_port: port=c04bc89c, platdev=c04cdda8
s3c24xx_serial_init_port: c04bc89c (hw 0)...
resource c04a8a78 (7f005000..7f005100)
port: map=7f005000, mem=f7005000, irq=16 (16,18), clock=1
s3c6400_serial_resetport: port=c04bc89c (7f005000), cfg=c04cd9d4
s3c24xx_serial_init_port: port=c04bc968, platdev=c04aa410
s3c24xx_serial_init_port: c04bc968 (hw 1)...
resource c04a8ae8 (7f005400..7f005500)
port: map=7f005400, mem=f7005400, irq=20 (20,22), clock=1
s3c6400_serial_resetport: port=c04bc968 (7f005400), cfg=c04cd9f4
s3c24xx_serial_init_port: port=c04bca34, platdev=c04aa550
s3c24xx_serial_init_port: c04bca34 (hw 2)...
resource c04a8b58 (7f005800..7f005900)
port: map=7f005800, mem=f7005800, irq=24 (24,26), clock=1
s3c6400_serial_resetport: port=c04bca34 (7f005800), cfg=c04cda14
s3c24xx_serial_init_port: port=c04bcb00, platdev=c04aa690
s3c24xx_serial_init_port: c04bcb00 (hw 3)...
resource c04a8bc8 (7f005c00..7f005d00)
port: map=7f005c00, mem=f7005c00, irq=28 (28,30), clock=1
s3c6400_serial_resetport: port=c04bcb00 (7f005c00), cfg=c04cda34
s3c24xx_serial_console_setup: co=c04bcbb8 (0), 115200
s3c24xx_serial_console_setup: port=c04bc89c (0)
s3c24xx_serial_console_setup: baud 115200
termios = 1002
selecting clock c04a9770
udivslot = 0000 (div 0)
config: 8bits/char
setting ulcon to 00000003, brddiv to 17, udivslot 00000000
baud 115200
setting ulcon to 00000003, brddiv to 17, udivslot 00000000
setting ulcon to 00000003, brddiv to 17, udivslot 00000000

static void s3c24xx_serial_set_termios(struct uart_port *port,
struct ktermios *termios,
struct ktermios *old)
{
struct s3c2410_uartcfg *cfg = s3c24xx_port_to_cfg(port);
struct s3c24xx_uart_port *ourport = to_ourport(port);
struct s3c24xx_uart_clksrc *clksrc = NULL;
struct clk *clk = NULL;
unsigned long flags;
unsigned int baud, quot;
unsigned int ulcon;
unsigned int umcon;
unsigned int udivslot = 0;

/*
* We don't support modem control lines.
*/
termios->c_cflag &= ~(HUPCL | CMSPAR);
termios->c_cflag |= CLOCAL;
dbg("termios = %04x\n", termios->c_cflag & CBAUD);
/*
* Ask the core to calculate the divisor for us.
*/

baud = uart_get_baud_rate(port, termios, old, 0, 115200*8);

if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST)
quot = port->custom_divisor;
else
quot = s3c24xx_serial_getclk(port, &clksrc, &clk, baud);

/* check to see if we need to change clock source */

if (ourport->clksrc != clksrc || ourport->baudclk != clk) {
dbg("selecting clock %p\n", clk);