热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

AT91RM9200开发笔记(8):serial port configuration

来源: 作者: 时间:2008-03-28 Tag: 点击:

文章说明:calmarrow(lqm)原创
文章引自:http:
//piaoxiang.cublog.cn

 
    内核版本为Linux 2.6.20.修改9200的串口驱动,改arch/arm/mach-at91rm9200/board-dk.c。
 

/*
 * Serial port configuration.
 * 0 .. 3 = USART0 .. USART3
 * 4 = DBGU
 */

static struct at91_uart_config __initdata dk_uart_config = {
    .console_tty    = 0,                /* ttyS0 */
    .nr_tty        = 2,
    .tty_map    = { 4, 1, -1, -1, -1 }        /* ttyS0, ..., ttyS4 */
};

 
    理解各项的含义,需要弄清楚at91_uart_config结构体的细节。定义地址在include/asm-arm/arch-at91rm9200/board.h。
 

/* Serial */
struct at91_uart_config {
        unsigned short console_tty; /* tty number of serial console */
        unsigned short nr_tty; /* number of serial tty's */
        short tty_map[]; /* map UART to tty number */
};

 
    可见,这个结构体要实现SoC硬件设备与tty设备名之间的对应关系。at91rm9200的serial设备有DEGU,USART0,USART1,USART2,USART3.硬件设计上来说,DEGU作为调试通道,一般是有的。而串行口的设计上,可以设计为两个,也可以设计为四个,依定需求而确定。
 
    at91_uart_config的console_tty是调试终端对应的设备名,这里一般会选择ttyS0。这个与bootloader命令行参数设计中console=ttySAC0,115200似乎有点冲突,具体细节需要考虑。
 
    nr_tty是串口设备的数目,比如现在用的板子只有三个串口,那么就要设定为3.
 
    tty_map是映射对应函数。初始化的值是SoC设备代表的数字,其中DEGU为4,USART[0-3]分别为[0
-3]。
 

DEGU(4) ---> ttyS0
USART0(0) ---> ttyS1
USART1(1) ---> ttyS2
USART2(2) ---> ttyS3
USART3(3) ---> ttyS4

 
    如果设定为上述对应关系,那么.tty_map = { 4, 0, 1, 2, 3 }.

    如果串口小于5个,那么用-1表示不存在。比如,在现在这块开发板上面,对应关系如下:
 

DEGU(4) ---> ttyS0
USART0(0) ---> ttyS1
USART1(1) ---> ttyS2
(下面没有使用)
USART2(2) ttyS3
USART3(3) ttyS4


    所以.tty_map = { 4, 0, 1, -1, -1 }

    当然,自然对应关系最好,你也可以让DEGU对应ttyS3,不过相应的变化启动脚本要发生变化

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册