Суть вот в чем. У меня плата с процом AT91SAM9260, Dataflash и ОЗУ (Nand нет). На плату залили Bootstrap и U-boot, далее залили Linux 2.6.24
и файловую систему (rootfs+ramdisk) через tftp с Виртуальной машины c помощью команды run tftp_update, все работает - rootfs, ramdisk и ядро системы предоставлялось производителем платы. Целью же является работа из Linux через SPI-контроллером, выводы которого разведены на плате.
вот конфиг ядра
Код
# SPI support
#
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
CONFIG_SPI_ATMEL=y
CONFIG_SPI_BITBANG=y
#
# SPI Protocol Masters
#
# CONFIG_SPI_AT25 is not set
CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_WATCHDOG is not set
#
CONFIG_SPI=y
# CONFIG_SPI_DEBUG is not set
CONFIG_SPI_MASTER=y
#
# SPI Master Controller Drivers
#
CONFIG_SPI_ATMEL=y
CONFIG_SPI_BITBANG=y
#
# SPI Protocol Masters
#
# CONFIG_SPI_AT25 is not set
CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_WATCHDOG is not set
так же был пересобран Busybox-1.1.2, с такими подключенными приложениями, как mdev, which и др.
далее выполняем след. шаги:
Цитата
1) spidev включите в ядре "User mode SPI device driver support"
2.1) поправьте cs в at91sam9260_devices.c
static const unsigned spi0_standard_cs[4] = {...
и
static const unsigned spi1_standard_cs[4] = {...
2.2) жестко включите spi там же
short enable_spi0 = 1;
short enable_spi1 = 1;
2.3) исправить файл board-sam9260ek.c
3) после запуска mdev -s появятся /dev/spi* с котрыми можно работать из userspace
2.1) поправьте cs в at91sam9260_devices.c
static const unsigned spi0_standard_cs[4] = {...
и
static const unsigned spi1_standard_cs[4] = {...
2.2) жестко включите spi там же
short enable_spi0 = 1;
short enable_spi1 = 1;
2.3) исправить файл board-sam9260ek.c
Код
/*
* SPI devices.
*/
static struct spi_board_info ek_spi_devices[] = {
..................
{
.modalias = "spidev",
.chip_select = 2,
.controller_data = AT91_PIN_PC5,
.max_speed_hz = 1 * 1000 * 1000,
.bus_num = 1,
},
{
.modalias = "spidev",
.chip_select = 3,
.controller_data = AT91_PIN_PC4,
.max_speed_hz = 1 * 1000 * 1000,
.bus_num = 1,
}
* SPI devices.
*/
static struct spi_board_info ek_spi_devices[] = {
..................
{
.modalias = "spidev",
.chip_select = 2,
.controller_data = AT91_PIN_PC5,
.max_speed_hz = 1 * 1000 * 1000,
.bus_num = 1,
},
{
.modalias = "spidev",
.chip_select = 3,
.controller_data = AT91_PIN_PC4,
.max_speed_hz = 1 * 1000 * 1000,
.bus_num = 1,
}
3) после запуска mdev -s появятся /dev/spi* с котрыми можно работать из userspace
насколько мне известно, mdev берет информацию из /sys, но эта папка у нас вообще пустая... можно заполнить ее с помощью команды mount -t sysfs sysfs /sys , но как собрать ядро, чтобы оно само выполняло эти действия? это во первых, а во вторых после выполнения mdev -s в /dev появляется много устройств, но SPI все равно нет... помогите пож-та разобраться