zoukankan      html  css  js  c++  java
  • 2440开发板将串口2的修改为普通串口


    开发环境:

    主机环境:VMare下CentOS 5.5

    linux版本:linux-3.0-rc4


    1.背景

    Linux内核默认把UART2的功能设置为红外通讯(Irda),没有作为正常串口使用,如果我们想要将UART2作为串口,此时,串口2是无法收发数据的,因此需要做相应的修改。
    其寄存器部分寄存器的说明如下:

    2.修改平台配置文件

    2.1 修改mach-smdk2440.c

    打开arch/arm/mach-s3c2440/mach-smdk2440.c(注意不同的平台mach-smdk2440.c文件有可能有略微的区别)
    修改代码如下:

    static struct s3c2410_uartcfg smdk2440_uartcfgs[] __initdata = {
    [0] = {
        .hwport      = 0,
        .flags       = 0,
        .ucon        = 0x3c5,
        .ulcon       = 0x03,
        .ufcon       = 0x51,
    },
    [1] = {
        .hwport      = 1,
        .flags       = 0,
        .ucon        = 0x3c5,
        .ulcon       = 0x03,
        .ufcon       = 0x51,
    },
    /* IR port */
    [2] = {
        .hwport      = 2,
        .flags       = 0,
        .ucon        = 0x3c5,
    //  .ulcon       = 0x43,
        .ulcon       = 0x03,
        .ufcon       = 0x51,
    }
    };
    

    2.2 修改samsung.c

    打开drivers/tty/serial/samsung.c文件(不同内核版本可能文件位置略有不同)。
    加上如下代码:

    if (port->line == 2) {
        s3c2410_gpio_cfgpin(S3C2410_GPH(6), S3C2410_GPH6_TXD2);
        s3c2410_gpio_pullup(S3C2410_GPH(6), 1);
        s3c2410_gpio_cfgpin(S3C2410_GPH(7), S3C2410_GPH7_RXD2);
        s3c2410_gpio_pullup(S3C2410_GPH(7), 1);
    }
    

    S3C2410_GPH(6),S3C2410_GPH(7)等宏定义在mach/regs-gpio.h。需要包含该文件。有的内核版本是S3C2410_GPH6,S3C2410_GPH7,应根据具体情况修改。
    加上头文件:

    #include<linux/gpio.h>
    #include<mach/regs-gpio.h>
    

    3.修改配置文件

    确认相应驱动被被编译进内核makemenuconfig

    DivicesDrivers->Characterdevices->SerialDrivers->选中

    <*>SansungSoC serial support

    <*>Samsungs3c2410 serial port support

    <*>SamsungS3C2440/S3C2442/S3c2416 serial port support

    保存退出,重新编译内核,下载到开发板。

    4.测试

    运行测试程序后,有以下警告。好像是回溯信息,折腾了好久,没有去掉,就放着了。


    参考文献:

    https://wenku.baidu.com/view/1b26fc0eba1aa8114431d9f3.html
    http://blog.csdn.net/fyyy4030/article/details/7243998
    http://www.linuxidc.com/Linux/2011-09/43690.htm


  • 相关阅读:
    eclipse对项目Working Sets整理分类
    word中visio只显示边框,不显示内容解决
    使用WebStorm运行vue项目
    如何提高你的学习速度-超链接式学习法
    SQL中的join连接查询
    TCP的三次握手
    Tomcat 实现热部署
    Linux下软件设成系统服务运行
    Redis服务器搭建
    nginx.conf完整配置实例
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/6681887.html
Copyright © 2011-2022 走看看