ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
397340
Evgeny_CD, Архитектор (25.03.2013 23:42 - 23:55, просмотров: 6548)
Набор идей по использованию UDP поверх Ethernet для быстрой и удобной связи с устройством для целей отладки. http://ru.wikipedia.org/wiki/UDP
http://windata.ru/windows-world/com/utilita-arp/
1. ARP релизуем ручками. В коде устройства пишем MAC адрес, ARP кеш венды прописываем ручками -> 2. Структура UDP пакета сложностью не страдает -> 3. CRC для UDP не обязательно! Поскольку у нас пересылка "в пределах стола", то будем использовать контрольную сумму Ethernet, благо она сама считается во всех контроллерах. 4. Например, в Tcl с UDP работать легко и просто. Во многих других языках тоже. http://wiki.tcl.tk/8493 http://tcludp.sourceforge.net/ http://www.packtpu …-tcl-using-udp-sockets 5. Общий алгоритм работы устройства - есть некий процесс, порождающий данные для отправки в ПЦ - заводим массив, формируем начальные байты под IP UDP, включая поля Ethernet пакета - заполняем массив целевыми данными - программируем Ethernet контроллер на отправку На прием аналогично. Можно также сделать потверждения и ввести нумерацию пакетов, чтобы адекватно работать с задержками (т.е. не ждать ответа сразу) Что имеем в итоге? - канал связи ПЦ с устройтвом с CRC, хорошей пропускной сопособностью (10 Мбайт/сек дуплекс - это не хухры-мухры) и минимальной нагрузкой на целевой проц - память под буфера нужна, но ее не так мало в современных контроллерах - автоматичское соблюдение границ пакета - удобный программный интерфейс, который пойдет под любой ОСью - использование бинарного протокола (граница пакета соблюдается!) повысит эффективность коммуникаций. Printf во встраиваемом устройстве для целей отладки суть ересь - тут же программируем сценарий обмена на высокоуровневом языке. Из устройтва можно слать структуры прямо в бинаром виде. И тут же запрограммировать их удобну раскладку в нужную визуальную форму. Отправлять тоже можно сразу упакованные структуры - expect на ура прикручивается. - масса монотонной ручной работы легко автоматизируется. Вкалывают роботы! Важно: - нужно отойти от стандартных стеретотипов - RS-232, консоль, telnet. Т.е. для самого начального запуска RS-232 самое то:), но не более. - гальваническая развязка тоже штука полезная. - высокая скорость обмена и небольшая латентность позволят часть алгоритма обоработки вынести в ПЦ. Например: - мы делаем некий достаточно сложный алгоритм, которые работает с непростой периферией. - есть реализация алгоритма на ПЦ, на плавучке, быстрая, правильная, проверенная. - нам надо проверить, что вообще целевую зазачу можно решить - делаем работу с периферией на MCU - целевой алгоритм пока реализуем на ПЦ - гоням данные как описано - навскидку, при требованиях по RT до 1мс при использовании RT Linux в качестве хоста больших проболем с задержками не будет - после проверки начинаем утаптыват алгоритм в MCU (например переводим, в 16 бит целочисленные, что-то упрощаем), при этом писюковую реализацию используем как эталон для тестов -- например, из устройства отгоняем в ПЦ полученные данные и результат работы встроенной версии алгоритма -- проверяем на ПЦ - получила ли эталонная версия из исходных данных конечные. Проверяем допустимость ошибок и проч.