按照at91sam9260ek_defconfig配置后,编译出的内核无法识别PCF8563时钟芯片,串口仅识别三个。
修改方法:
arch/arm/mach-at91中的board-sam9260ek.c 中添加
/*
* I2C devices
*/
static struct i2c_board_info __initdata ek_i2c_devices[] = {
{
I2C_BOARD_INFO("pcf8563", 0x51),
},
/* more devices can be added using expansion connectors */
};
位置是随意的,只要别添加到别的函数中去。这样PCF8563就可以被识别到了。当然你还得把内核配置I2C驱动及RTC驱动。要不然也不找到PCF8563。
还是在这个C文件里开头 把ek_map_io函数修改成下面就可以把驱动5个串口了,
static void __init ek_map_io(void)
{
/* Initialize processor: 18.432 MHz crystal */
at91sam9260_initialize(18432000);
/* DGBU on ttyS0. (Rx & Tx only) */
at91_register_uart(0, 0, 0);
/* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
| ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
| ATMEL_UART_RI);
/* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
/* USART2 on ttyS3. (Rx, Tx, RTS, CTS) */
at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
/* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */
at91_register_uart(AT91SAM9260_ID_US3, 4, ATMEL_UART_CTS | ATMEL_UART_RTS);
/* set serial console to ttyS0 (ie, DBGU) */
at91_set_serial_console(0);
}
其实里就是引用了同文件夹下的at91sam9260_devices.c中的at91_register函数,在系统启动时加载串口驱动,可能是因为at91sam9260ek开发板只用3个串口的原因,所以它只加载了其中的3个串口驱动,少注册了几个。