Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/50: Рейтинг темы: голосов - 50, средняя оценка - 4.60
MikoKomiko
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 7
1

SW UART под ядро линукса

27.12.2011, 16:32. Просмотров 9016. Ответов 16
Метки нет (Все метки)

Вобщем суть такова:
Есть некая железка, чип TCC8900 720MHz, 256 оперативы, 256 флеш, есть сата, есть 100мбит порт, есть USB-хост. Хотел сделать качалку и файл-шару. Беда в одном - китайцы не развели ни одного из шести аппаратных UART-ов, зато развели ноги под опциональные светодиоды, они не распаяны, просто дырки.
Загрузчик я уже подогнал и собрал "вслепую" по ДШ, работает нормально, ядро тоже стартует, но встает где-то в конце на KP. Где - непонятно, так как нет вывода отладки, а есть только мигание светодиода, повешенное в ядре на функцию panic.
Вопрос следующий: есть ли реализации программного UART под линуксовое ядро? Чтобы повесить его на случайный GPIO? То, что будет гнать ошибки при передаче знаю, пофиг, нужно только для отладки.
К сожалению, в кодинге под ядро линукса не так силен, чтобы сразу написать с нуля или запросто портировать с восмибитного МК =(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2011, 16:32
Ответы с готовыми решениями:

Создание программ под Windows из под Линукса
Как используя QtCreator из под Дебиана, создавать программы под Винду? Поставил...

Компиляция в .ехе из под Линукса
Вообщем долго гуглил, но так и не понял, как это делается. Нашел только...

Запуск Виндовских приложений из-под Линукса
Привет многоуважаемый ALL!!! Где то слышал что из-под Линукса можно запускать...

Как кодить в Делфи из под Линукса
Добрый вечер! У меня вопрос такой: Я переустановила систему с виндовс на...

Ядро под линукс .
Зашел на оф.сайт http://kernel.org/ по ядру линукса и заметил что ядро весит 67...

16
botu_dork
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
27.12.2011, 16:48 2
Мне кажется в реалтаймовых осях юзать софтовый уарт - не получится. посылка данных будет постоянно прерываться. Если имеется опыт работы с БГА могу посоветовать найти доку на проц - посмотреть где выведены уарты и попытаться прозвонить их - бывает что их выводят на различные тестовые пятачки на плате или если есть там какие либо гребенки - может быть на них.
Это самый простой путь установить истину если нет схем на ваш девайс.
0
MikoKomiko
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 7
27.12.2011, 17:00 3
ДШ на проц есть, но порт не разведен точно - делал в загрузчике тест, переводил все UART-ы в GPIO-режим и "дергал" в бесконечном цикле ими. Ну и искал светодиодом по плате. Не разведено. Схемы на устройство нет и не будет, мелкосерийная китайская поделка и фирма-производитель уже умерла.
А на USB не повесить не выйдет - во-первых, порт Dual-role, через него же девайс и шьется, а во-вторых, не факт, что ядро доходит до инициализации USB.
0
tikoth
0 / 0 / 0
Регистрация: 07.08.2010
Сообщений: 37
27.12.2011, 17:05 4
Если в ДШ есть распиновка может просто к дорожкам от ног подпаяться?
0
MikoKomiko
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 7
27.12.2011, 17:10 5
Проц BGA, дорожек от неразведенных ног нет.
0
botu_dork
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
27.12.2011, 19:05 6
про дорожки - это проверялось? я именно про прозвонку дорожек и говорил. Есть ли на плате какие либо технологические точки? Я почему сказал что надо снять процессор и прозвонить выводы портов сериальных - очень часто не юзаемые ноги подвязывали к резисторам или емкостям на плате. Даже если потом оно никуда не шло. Просто есть шанс что найдете пару резисторов подтяжки, на которых будет порт и к ним уже подпаяться проще чем под чип бга. Хотя если есть микроскоп и тонкая медная проволока в изоляции - подпаяться под БГА не такая уж не реальная задача. Тем более что шаг должен быть крупнее чем в мобилках.
0
MikoKomiko
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 7
27.12.2011, 19:25 7
К сожалению, оборудования под BGA нет, так что снять нереально, иначе и не морочил бы голову так. Подтяжки на этом проце есть внутренние, включаются установкой битов по определенному адресу, внешние не нужны. Технологических точек полно, но на них нет тех самых ног, проверено "дерганьем" этих ног из бутлоадера.
0
botu_dork
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
27.12.2011, 20:55 8
чегото я самое главное и просмотрел - а есть же USB HOST. бутлоадер можно собрать с поддержкой USB CDC?
тогда было бы немного проще - можно было бы собрать диагностический кабель из преобразователя USB2Com.
Вариант попроще - если есть 3 пина для диодов (лишних) можно сделать чтото типа SPI - в нем скорости повыше и не так критично если на пару циклов тактового сигнала не будет.
Один вывод - сброс регистра сдвига, второй - тактовый и третий - данные.
и быстрый 8ми битный сдвиговый регистр. с которого код символа чем то забирать( например контроллером).
Просто именно такая реализация будет отвязана от стабильного бод рейта - ибо данные будут записываться в то время когда дойдет время до задачи - выводящей лог в порт. И если например в момент вывода произойдет прерывание процедуры - ничего страшного не произойдет ибо данные не потеряются.
0
omooro
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 351
28.12.2011, 01:21 9
Если из загрузчика ногами дергаете то какие проблемы драйвепр написать? самый грубый и простой в ~сотню строк.
0
botu_dork
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
28.12.2011, 03:00 10
Драйвер UART приложение критичное ко времени. В аппаратных UART соблюдением временных интервалов занимается железо. От юзера требуется только пихать в регистр байт.
Но для кристала с тактовой частотой в 700 Мегагерц и с многозадачной осью написать СОФТОВЫЙ UART очень нетривиальная задача как минимум по 2м причинам - огроменные циклы задержки между отсылкой бита и неизвестное время выполнения команд из-за возможности прерывания передачи - другим процессом( а стало быть - невозможность рассчитать правильно задержку).

Хотя если бутлоадер еще не запускает кернел а просто грузит ось в память - то возможно менеджер задач еще не запущен и можно будет вывести лог дрыгая ногами. Но если я правильно понял - проблема как раз уже после старта ядра.
0
omooro
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 351
28.12.2011, 03:28 11
Для отладки можно зыбать про многозадачность и наставить задержек, даже активных, я где-то видел такой код. По поводу прерывания контекста другими задачами не знаю, может и будут проблемы. Есть ещё чуть более сложный вариант создать поток ядра и в нем ставить задержки и дергать ногами, тогда производительность не пострадает, да и приоритет можно задрать и не беспокоится о том что нас кто-то прервет. Ещё вариант задействовать аппаратный таймер и дергать ногой по прерыванию.
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
28.12.2011, 04:15 12
Последнее, ИМХО, самый годный вариант.
0
MikoKomiko
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 7
29.12.2011, 13:56 13
Итак, драйвер с горем пополам написал. Даже без использования таймеров, все на mdelay(), файлик получился на килобайт всего. ЧСХ, процент ошибок где-то в районе 1-2, скорость опытным путем была установлена как 57600 - на ней ошибок меньше всего. Костыль отличный.
Если кому надо - могу выложить.
0
dikor
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 918
29.12.2011, 14:11 14
А я бы SPI сделал, там тайминги не нужны. А потом прилепил бы просто SPI->USORT на STM/Меге. А ядру бы его как USORT представил. Жаль, что не прочёл тему раньше.
0
botu_dork
0 / 0 / 0
Регистрация: 09.02.2011
Сообщений: 544
29.12.2011, 14:21 15
Я тоже это предложил но человек решил сделать уарт.
0
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
29.12.2011, 16:30 16
странно было бы писать софтовый уарт как процесс системы... а вот с прерываниями таймера точно бы все получилось, а уж на 700 МГц подавно.
0
MikoKomiko
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 7
29.12.2011, 17:47 17
Вобщем драйвер работает, как костыль сойдет. Ядро запустил, КР нашел и убрал, теперь сетевой интерфейс настраиваю (dm9000cep). С usb пока непонятки - по логам все хорошо, порт находит, но вот при подключении флешки ничего не происходит, хотя она должна загореться при подключении. Видимо где-то стоит ключ на питание, будем искать.
0
29.12.2011, 17:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2011, 17:47

Выбор железяки под ядро сети
Приветствую всех! Помогите пожалуйста с выбором оборудования под ядро сети....

Скомпилировать драйвер cPCI-7841 под ядро 3.5
Такая ситуация. Есть плата CAN интерфейс CompactPCI - cPCI-7841 (Adlink) Под...

Под каким углом ядро пролетит максимальное расстояние
Вот такая задачка попалась: Под каким углом ядро пролетит максимальное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru