|
SW UART под ядро линукса |
|
|
|
Dec 28 2011, 11:12
|
Группа: Новичок
Сообщений: 4
Регистрация: 28-12-11
Пользователь №: 69 125

|
Вобщем суть такова: Есть некая железка, чип TCC8900 720MHz, 256 оперативы, 256 флеш, есть сата, есть 100мбит порт, есть USB-хост. Хотел сделать качалку и файл-шару. Беда в одном - китайцы не развели ни одного из шести аппаратных UART-ов, зато развели ноги под опциональные светодиоды, они не распаяны, просто дырки. Загрузчик я уже подогнал и собрал "вслепую" по ДШ, работает нормально, ядро тоже стартует, но встает где-то в конце на KP. Где - непонятно, так как нет вывода отладки, а есть только мигание светодиода, повешенное в ядре на функцию panic. Вопрос следующий: есть ли реализации программного UART под линуксовое ядро? Чтобы повесить его на случайный GPIO? То, что будет гнать ошибки при передаче знаю, пофиг, нужно только для отладки. К сожалению, в кодинге под ядро линукса не так силен, чтобы сразу написать с нуля или запросто портировать с восмибитного МК =(
|
|
|
|
|
 |
Ответов
(1 - 9)
|
Dec 28 2011, 11:48
|
Группа: Новичок
Сообщений: 4
Регистрация: 28-12-11
Пользователь №: 69 125

|
Далеко не факт, что ядро доходит до инициализации USB, да и как завернуть вывод ядра на этот переходник? Скорее всего никак.
|
|
|
|
|
Dec 28 2011, 13:06
|
Частый гость
 
Группа: Участник
Сообщений: 182
Регистрация: 4-11-10
Пользователь №: 60 646

|
от чего никак ? обычный uart тоже имеет драйвер и ядро его грузит вполне можно написать свой драйвер и собрать с ним ядро , вот только боюсь прийдется всё самому писать автору, потому как такие извращения крайне редкий случай может эта статья чем-то поможет
|
|
|
|
|
Dec 28 2011, 13:25
|
Группа: Новичок
Сообщений: 4
Регистрация: 28-12-11
Пользователь №: 69 125

|
Буду пробовать писать свой драйвер, но для этого придется детально разобраться с таймерами в ядре. Извращения то да. Но мы не ищем легких путей во-первых, а во-вторых, такие нестандартные задачи никак зарядка для ума.
|
|
|
|
|
Dec 28 2011, 18:03
|

Местный
  
Группа: Свой
Сообщений: 290
Регистрация: 27-06-05
Из: Киев
Пользователь №: 6 345

|
Цитата(NekoKoneko @ Dec 28 2011, 17:25)  Буду пробовать писать свой драйвер, но для этого придется детально разобраться с таймерами в ядре. Извращения то да. Но мы не ищем легких путей во-первых, а во-вторых, такие нестандартные задачи никак зарядка для ума. Скачайте Linux Kernel Device 3е издание. В написании драйверов ничего страшного нет, это поначалу страшно, потом интересно. Лучше его скомпилировать как модуль и подгружать- выгружать (insmod итд) при отладке. Для начала посмотрите в исходниках ядра, папка drivers, наверняка, кто-то что-то подобное уже писал. Недавно сам столкнулся - надо было цеплять матричную клавиатуру, нашел в ядре готовый драйвер/ чуть-чуть подпилил под себя, работает на ура.
--------------------
Если в сердце дверь закрыта - надо в печень постучать..
|
|
|
|
|
Dec 29 2011, 06:24
|
Знающий
   
Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960

|
Цитата(NekoKoneko @ Dec 28 2011, 14:12)  есть ли реализации программного UART под линуксовое ядро? Чтобы повесить его на случайный GPIO? ... К сожалению, в кодинге под ядро линукса не так силен, чтобы сразу написать с нуля или запросто портировать с восмибитного МК =( софтврный уарт под линуксом невозможен по причине того что драйверы линукс изобилуют конструкциями вида: Код timeout=50000; spin_lock_irqsave(lock, flags); do { if ( readl(base+REG_STATUS) & STATUS_READY ) break; udelay(1000); } while (--timeout) spin_unlock_irqrestore(lock, flags); if (!timeout) goto dev_not_ready; Так например исследования драйвера сд карты показали что он при определенных условиях запрещает прерывания на 1018ms. Реализовать обмен по типу spi - реально.
|
|
|
|
|
Dec 29 2011, 07:18
|
Группа: Новичок
Сообщений: 4
Регистрация: 28-12-11
Пользователь №: 69 125

|
Цитата Например, spi. правда, понадобится две gpio'шки, но зато проще. Не, не выйдет, так как нужно ваять переходник на МК, а пока возможности нет - на работе не из чего, а дома дел и без этого хватает, НГ на носу. Цитата софтврный уарт под линуксом невозможен по причине того что драйверы линукс изобилуют конструкциями вида Ну и вылетят пару-тройку байт, невелика потеря, это костыль, нужный только до запуска USB - дальше приделаю переходник и буду отлаживать через него. Сейчас портировал драйвер с AVR-ки, прицепил на таймер, буду испытывать - заработает или нет.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|