Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SW UART под ядро линукса
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
NekoKoneko
Вобщем суть такова:
Есть некая железка, чип TCC8900 720MHz, 256 оперативы, 256 флеш, есть сата, есть 100мбит порт, есть USB-хост. Хотел сделать качалку и файл-шару. Беда в одном - китайцы не развели ни одного из шести аппаратных UART-ов, зато развели ноги под опциональные светодиоды, они не распаяны, просто дырки.
Загрузчик я уже подогнал и собрал "вслепую" по ДШ, работает нормально, ядро тоже стартует, но встает где-то в конце на KP. Где - непонятно, так как нет вывода отладки, а есть только мигание светодиода, повешенное в ядре на функцию panic.
Вопрос следующий: есть ли реализации программного UART под линуксовое ядро? Чтобы повесить его на случайный GPIO? То, что будет гнать ошибки при передаче знаю, пофиг, нужно только для отладки.
К сожалению, в кодинге под ядро линукса не так силен, чтобы сразу написать с нуля или запросто портировать с восмибитного МК =(
Dron_Gus
Вряд ли есть. Можно опробовать воткнуть usb-serial преобразователь. Возможно проканает, смотря когда ядро паникует.
NekoKoneko
Далеко не факт, что ядро доходит до инициализации USB, да и как завернуть вывод ядра на этот переходник? Скорее всего никак.
Dron_Gus
console=/dev/ttyUSB0 ?
follow_me
от чего никак ?
обычный uart тоже имеет драйвер и ядро его грузит
вполне можно написать свой драйвер и собрать с ним ядро , вот только боюсь прийдется всё самому писать автору, потому как такие извращения крайне редкий случай

может эта статья чем-то поможет
NekoKoneko
Буду пробовать писать свой драйвер, но для этого придется детально разобраться с таймерами в ядре.
Извращения то да. Но мы не ищем легких путей во-первых, а во-вторых, такие нестандартные задачи никак зарядка для ума.
KostyantynT
Цитата(NekoKoneko @ Dec 28 2011, 17:25) *
Буду пробовать писать свой драйвер, но для этого придется детально разобраться с таймерами в ядре.
Извращения то да. Но мы не ищем легких путей во-первых, а во-вторых, такие нестандартные задачи никак зарядка для ума.

Скачайте Linux Kernel Device 3е издание. В написании драйверов ничего страшного нет, это поначалу страшно, потом интересно. Лучше его скомпилировать как модуль и подгружать- выгружать (insmod итд) при отладке. Для начала посмотрите в исходниках ядра, папка drivers, наверняка, кто-то что-то подобное уже писал. Недавно сам столкнулся - надо было цеплять матричную клавиатуру, нашел в ядре готовый драйвер/ чуть-чуть подпилил под себя, работает на ура.
Dron_Gus
Я бы предложил реализовать интерфейс не так требовательный к таймингам. Например, spi. правда, понадобится две gpio'шки, но зато проще.
_3m
Цитата(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 - реально.
NekoKoneko
Цитата
Например, spi. правда, понадобится две gpio'шки, но зато проще.

Не, не выйдет, так как нужно ваять переходник на МК, а пока возможности нет - на работе не из чего, а дома дел и без этого хватает, НГ на носу.

Цитата
софтврный уарт под линуксом невозможен по причине того что драйверы линукс изобилуют конструкциями вида

Ну и вылетят пару-тройку байт, невелика потеря, это костыль, нужный только до запуска USB - дальше приделаю переходник и буду отлаживать через него. Сейчас портировал драйвер с AVR-ки, прицепил на таймер, буду испытывать - заработает или нет.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.