DM6446中 串口1 的移植方法

1、打开include/asm/arch/mux.h,在davinci_dm644x_index枚举定义中添加UART1控制索引 ,即:
enum davinci_dm644x_index {
/* ATA and HDDIR functions */
DM644X_HDIREN,
DM644X_ATAEN,
/* Memory Stick */
DM644X_MSTK,
/* I2C */
DM644X_I2C,
/* ASP function */
DM644X_MCBSP,
/* PWM0 */
DM644X_PWM0,
/* PWM1 */
DM644X_PWM1,
/* PWM2 */
DM644X_PWM2,
/* VLINQ function */
DM644X_VLINQEN,
DM644X_VLINQWD,
/* EMAC and MDIO function */
DM644X_EMACEN,
/* GPIO3V[0:16] pins */
DM644X_GPIO3V,
/* GPIO pins */
DM644X_GPIO0,
DM644X_GPIO3,
DM644X_GPIO43_44,
DM644X_GPIO46_47,
/* VPBE */
DM644X_RGB666,
/* LCD */
DM644X_LOEEN,
DM644X_LFLDEN,
/* UART1 */
DM644X_UART1,
};
2、打开arch/arm/mach-davinci/board-evm.c文件,在serial_platform_data数组中添加串口1的配置参数:
static struct plat_serial8250_port serial_platform_data[] = {
{
.membase = (char *)IO_ADDRESS(DAVINCI_UART0_BASE),
.mapbase = (unsigned long)DAVINCI_UART0_BASE,
.irq = IRQ_UARTINT0,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
.iotype = UPIO_MEM,
.regshift = 2,
.uartclk = 27000000,
},
{
.membase = (char *)IO_ADDRESS(DAVINCI_UART1_BASE),
.mapbase = (unsigned long)DAVINCI_UART1_BASE,
.irq = IRQ_UARTINT1,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
.iotype = UPIO_MEM,
.regshift = 2,
.uartclk = 27000000,
},
{
.flags = 0
},
};
在dm644x_setup_pinmux函数添加针对串口1的端口复用处理分支,即在switch中添加:
case DAVINCI_LPSC_UART1: //zhengrui
{
davinci_cfg_reg(DM644X_UART1);
volatile int *mux0,*mux1;
mux0 = (volatile int *)IO_ADDRESS(PINMUX0) ;
mux1 = (volatile int *)IO_ADDRESS(PINMUX1) ;
*mux0 &= 0xfffcffff; //ATAEN HDIREN disabled
*mux1 |= 3; //UART0 UART1 enabled
break;
}
davinci_psc_init函数结尾中添加串口1端口复用的调用语句:
davinci_psc_config(DAVINCI_GPSC_ARMDOMAIN, DAVINCI_LPSC_UART1, 1);
davinci_evm_init函数结尾添加串口发送接收复位语句:
volatile int *ptr_pgmgt,*ptr_ier;
ptr_pgmgt = (volatile int *)IO_ADDRESS(DAVINCI_UART1_BASE+0×30) ;
ptr_ier = (volatile int *)IO_ADDRESS(DAVINCI_UART1_BASE+0×4);
*ptr_pgmgt = 0×0; //reset tx and rx
*ptr_ier = 0×0; //disable int
int del=0;
for(del=0; del <100000 ; del++) // For delay
*ptr_pgmgt =0×6061;
3、打开arch/arm/mach-davinci/clock.c,在davinci_dm644x_clks数组中添加串口1的相关时钟配置:
{
.name = “UART1″,
.rate = &fixedrate,
.lpsc = DAVINCI_LPSC_UART1,
},
4、打开arch/arm/mach-davinci/mux_cfg.c,在davinci_dm644x_pins数组末尾添加具体串口端口复用的参数:
MUX_CFG(“UART1″, 1, 1, 1, 1, 0)



I、
[root@localhost linux-2.6.18_pro500]# make menuconfig


进入熟悉的kernel配置界面:

进入:Device Driver
ATA/ATAPI/MFM/RLL support     不选

II、编译
[root] make zImage


III、编译完后,运行
[root] ./mkzImage.sh


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值