сначала в конфиге ядра включите SPI и поддержку для IMX
потом в файле платы пропишите структуры для устройств, далее в функции инита пропишите вызов регистрации для устройств..
примеры можно посмотреть в соседних файлах..
сначала в конфиге ядра включите SPI и поддержку для IMX (а где находиться этот конфиг???? и как его включить???)
потом в файле платы (в каком файле платы?) пропишите структуры для устройств (какие структуры и для каких устройств???), далее в функции инита (это в rc.local??? или где?) пропишите вызов регистрации для устройств (что за вызов регистрации для устройств???)..
примеры можно посмотреть в соседних файлах..(в каких соседних файлах?)
сначала в конфиге ядра включите SPI и поддержку для IMX (а где находиться этот конфиг???? и как его включить???)
потом в файле платы (в каком файле платы?) пропишите структуры для устройств (какие структуры и для каких устройств???), далее в функции инита (это в rc.local??? или где?) пропишите вызов регистрации для устройств (что за вызов регистрации для устройств???)..
примеры можно посмотреть в соседних файлах..(в каких соседних файлах?)
google.ru->"ядро menuconfig"
google.ru->"ядро файле платы"
google.ru->"ядро platform_register"
и самый важный запрос, без него не взлетит:
google.ru->"линукс для чайников"
так и хочется дописать еще совет
google.ru->"линукс - а что это???"
сначала в конфиге ядра включите SPI и поддержку для IMX (а где находиться этот конфиг???? и как его включить???)
потом в файле платы (в каком файле платы?) пропишите структуры для устройств (какие структуры и для каких устройств???), далее в функции инита (это в rc.local??? или где?) пропишите вызов регистрации для устройств (что за вызов регистрации для устройств???)..
примеры можно посмотреть в соседних файлах..(в каких соседних файлах?)
google.ru->"ядро menuconfig"
google.ru->"ядро файле платы"
google.ru->"ядро platform_register"
и самый важный запрос, без него не взлетит:
google.ru->"линукс для чайников"
так и хочется дописать еще совет
google.ru->"линукс - а что это???"
Спасибо за советы!
Ранее я работал с Beaglebone Black, так что там проблем не было, так как в инете много инфы по настройке и инициализации.
А переконфигурирование ядра я сам еще не делал, так что извините за такие вопросы)
Вам может показаться странным, но постановка вопроса слишком широка ...
Штатно в системе уже используется 1 SPI для общения с контроллером сенсорного экрана.
Если вам нужно какую то микросхему по SPI подключить (и ее драйвер есть в системе), тогда проще всего подключить ее к этому же порту а в структуре подключения устройства прописать новый чип.
Если нужно общаться по SPI из приложения пользователя, это уже другой случай, если задействовать свободный SPI порт, для этого потребуется:
1) включить в ядре поддержку "User mode SPI ..." (SPIDEV)
2) инициализировать в боардфайле новый SPI порт
3) инициализировать пины для SPI порта
4) добавить в ините боардфайла объявление spidev (не помню, нужно его аттачить к реальному порту или нет)
Можно проще, перенастроить имеющийся SPI порт на spidev.
Где и какие конкретно "буквы прописать" я сам не знаю, помню только направление действий, исходники перед глазами - экспериментируйте (уверен, среди тучи боардфайлов сторонних плат в этом же ядре найдется и пример подключения spidev).
Собрал ядро, залил, в /dev/ появились spidev0.0 и spidev3.0
Написал программку, которая в цикле читает и пишет в SPI.
Когда я делаю эту инициализацию, все работает нормально, смотрю в анализаторе.
int Init_SPI0(void)
{
txBuffer[0]=0xA1;
txBuffer[1]=0xB2;
txBuffer[2]=0xC3;
txBuffer[3]=0xD4;
там явно устанавливают количество бит в слове через ioctl
180 * bits per word
181 */
182 ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
183 if (ret == -1)
184 pabort("can't set bits per word");
185
186 ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
187 if (ret == -1)
188 pabort("can't get bits per word");