Linux在TQ2440上移植串口驱动优化

3星 · 超过75%的资源 需积分: 3 15 下载量 158 浏览量 更新于2024-09-21 收藏 59KB DOC 举报
"在TQ2440平台上移植Linux系统时,对串口驱动进行完善是关键步骤,特别是针对S3C2440芯片的3个串口。本文主要关注如何将串口2从红外模式转换为普通串口,并配置其收发引脚功能。" 在TQ2440开发板上,Linux内核2.6.35.3版本的串口2被设定为红外通信模式,但我们需要将其调整为常规串口使用。这一过程涉及到对内核源码的修改,具体操作如下: 1. 首先,打开`arch/arm/mach-s3c2440/mach-smdk2440.c`文件,找到与串口2相关的配置部分。在注释中的IRport部分,可以看到串口2的初始化设置。修改线控制寄存器ULCONn的值,从红外模式改为普通串口模式。例如,将ULCON设置为0x03,这通常表示8位数据、无奇偶校验、1停止位的配置。 2. 接下来,为了使串口2能正常工作,需要配置其收发引脚。在`smdk2440.c`或`samsung.c`(取决于具体实现)中增加对UART2收发引脚的配置。这包括设置S3C2410_GPH6为TXD2(传输数据),S3C2410_GPH7为RXD2(接收数据)。同时,启用上拉电阻以确保信号的稳定性。 - 调用`s3c2410_gpio_cfgpin()`函数来配置引脚功能,如S3C2410_GPH6和S3C2410_GPH7分别设为TXD2和RXD2。 - 使用`s3c2410_gpio_pullup()`函数开启引脚的上拉电阻。 3. 在执行这些操作前,确保包含必要的头文件。在`samsung.c`中引入`<mach/gpio-fns.h>`以使用`s3c2410_gpio_cfgpin()`和`s3c2410_gpio_pullup()`函数。同时,引入`<mach/gpio-nrs.h>`以使用S3C2410_GPH6和S3C2410_GPH7的宏定义。最后,引入`<mach/regs-gpio.h>`以获取S3C2410_GPH6_TXD2和S3C2410_GPH7_RXD2的定义。 完成上述步骤后,串口2的驱动将被正确配置,可以作为普通串口使用。在实际应用中,可能还需要根据具体需求调整波特率、数据位、校验位等参数。此外,为了测试串口功能,可以编写简单的用户空间程序,通过标准输入输出与串口交互,验证驱动是否正常工作。 移植Linux到TQ2440平台并完善串口驱动涉及对硬件接口的深入理解和内核源码的修改。这个过程不仅需要熟悉ARM体系结构,还要了解Linux内核的串口驱动机制,以及S3C2440处理器的GPIO配置。正确配置后,串口驱动将成为设备通信、调试和日志记录的重要工具。