Easyelectronics.ru

Электроника для всех
Текущее время: 16 фев 2019, 00:21

Часовой пояс: UTC + 5 часов




Начать новую тему Ответить на тему  [ Сообщений: 24 ] 
Автор Сообщение
 Заголовок сообщения: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 11:17 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 1162
Откуда: Сочи
Привет парни.

Я все чаще сталкиваюсь с необходимостью читать/прошивать микросхемы (контроллеры), которые не поддерживаются имеющимися у меня программаторами, а то и вовсе неизвестно, чем поддерживаются. При этом на них есть даташит с полным описанием процесса чтения/записи внутренней памяти.
И вот не дает мне покоя мысль об универсальном программаторе. Основной его функцией должна быть простая перенастройка на любую новую микросхему.
Вот здесь описан программатор, с которым в комплекте идет язык HPL, позволяющий просто и быстро описать протокол программирования микросхем.
Конечно, исходников никаких нет.

Кто-нибудь занимался написанием интерпретатора языка? Я пока вообще не представляю, как это делать.

В качестве железа можно применить все, что угодно, например, FT2232H, модуль PinBoard, STM32, CY68013, да хоть параллельный порт.

То есть архитектура видится такой:
Для каждой микросхемы имеется описание на HPL.
Программа читает этот файл, разбирает его и на каждый шаг составляет карту бит, которая передается на аппаратный интерфейс или читается с интерфейса.

Пример реализации самого файла hpl можно посмотреть в демо-версии оболочки программатора.
http://www.cnc-lab.com/files/or5demo.rar


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 11:52 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 4476
antonluba писал(а):
Для каждой микросхемы имеется описание на HPL.

Если оно действительно имеется, то задача просто парсить текстовый файл с этим описанием.
Не столько сложно, сколько громоздко и муторно, но вполне решаемо.

Но понадобится еще знание стандартов в которых предоставлены данные для прошивания, так как их придется читать тоже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 12:22 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 1162
Откуда: Сочи
Кот495 писал(а):
если оно действительно имеется

Оно действительно имеется для полутора тысяч поддерживаемых микросхем.
Для новых микросхем придется написать самому.

Кот495 писал(а):
Но понадобится еще знание стандартов в которых предоставлены данные для прошивания, так как их придется читать тоже.

Процесс прошивки описан обычно в даташите или programming manual.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 12:31 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 807
antonluba писал(а):
Оно действительно имеется для полутора тысяч поддерживаемых микросхем.
Для новых микросхем придется написать самому.

Насколько я понимаю тебе не нужно реализовывать поддержку ни для тысяч, ни даже для десятков микросхем, а только для тех, которые не поддерживают другие твои программаторы. В таком случае проще все реализовывать в самой клиентской программе, на том языке, на котором она написана.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 12:47 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2473
antonluba писал(а):
Пример реализации самого файла hpl можно посмотреть в демо-версии оболочки программатора

Сразу видно, что "язык" писал ембеддер :) Ну совершенно нечитабельный синтаксис, хотя по форме всего лишь обычный виндовый .ini файл (старый, еще от винды 3.1).

По поводу парсинга: если где-нибудь есть описание грамматики языка (сомневаюсь, но все-таки), то парсинг пишется с пол-пинка с помощью какого-нибудь lex + bison или (лучше) antlr. Если описания грамматики нет, то ее можно попробовать восстановить анализом исходных файлов. Полторы тысячи описаний должно быть более чем достаточно для этого. Ну и в любом случае нужен некоторый бекграунд по теории. Я бы посоветовал "Грис Д. Конструирование компиляторов для цифровых вычислительных машин" (можно взять вот тут) . Не смотря на возраст она, пожалуй, остается самым внятным учебником по этому вопросу. Впрочем, имея бэкграунд написать парсер рекурсивным спуском вполне посильная задача без каких-либо дополнительных инструментов.

P.S. вообще имеет смысл взять эти описания и перегнать в другой синтаксис (естественно, автоматически), но это отдельная и чуть более сложная задача.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 16:42 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 1162
Откуда: Сочи
Спасибо.
Для человека недалекого (то есть далекого от предмета):

Вначале нужно написать описание языка в формате antlr.
Потом вместе с описанием языка подсовывать файлы с описаниями различных микросхем, чтобы сформировать полный набор функций, выполняющихся при соответствующих конструкциях в исходнике.
Этот пункт лишний. Описания языка достаточно.
А дальше заполнить тело этих функций соответствующим кодом взаимодействия с аппаратурой.

Так получается?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 16:57 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2473
antonluba писал(а):
Спасибо.
Для человека недалекого (то есть далекого от предмета):

Вначале нужно написать описание языка в формате antlr.
Потом вместе с описанием языка подсовывать файлы с описаниями различных микросхем, чтобы сформировать полный набор функций, выполняющихся при соответствующих конструкциях в исходнике.
Этот пункт лишний. Описания языка достаточно.
А дальше заполнить тело этих функций соответствующим кодом взаимодействия с аппаратурой.

Так получается?


Это один из возможных вариантов. Другой вариант - сформировать внутреннее представление и уже его обрабатывать. Второй вариант исключает из таймингов сам процесс разбора (это позволит избежать влияния парсинга на задержки). Кроме того, к моменту окончания парсинга точно известна корректность описанного алгоритма с точки зрения языка. Иначе ошибки в самой программе могут прервать процесс записи в самый неподходящий момент.

P.S. я бы посоветовал разобраться с парсингом (на самом деле это далеко не самый сложный раздел в программировании) и написать разбор руками рекурсивным спуском. грамматика у этого языка не выглядит сложной, рекурсивный спуск должен справиться. в итоге будет а) лучшее понимание как все работает (и, соответственно, будет проще править ошибки/доделки/переделки) и б) будет проще выполнять операции или генерировать промежуточное представление.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 17:50 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 1162
Откуда: Сочи
Хм. Это большая работа. К тому же на PC уже забыл, когда писал в прошлый раз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 18:03 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3108
если задача прикрутить новую микросхему к какому-либо программатору, взаимодействовать с которым опять же собрались сами напрямую, то зачем это делать через жопу ещё одну прокладку, тем более что выглядит это .ini - образное описание мягко говоря не очень уж красиво.
имхо тогда проще взять любой понравившийся скриптовый язык lua, python,... и писать описание из даташита сразу на нём.

function Init()
on(RESET)
...
off(RESET)
on(CS)
write(0xaaaa)
off(CS)
end

function WriteData(data)
on(CS)
write(CMD1)
write(CMD2)
write(data)
off(CS)
end

хотя обычно даже этого не надо.
как-то когда надо было прошить какой-то простой еепром, вместо поиска подходяшего программатора проще и быстрее оказалось наговнячить на С небольшую утилитку которая альтеровским усб-бластером тупо шила только эту конкретную микросхему.
не каждый же день надо десяток новых типов микросхем шить?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 18:26 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2473
antonluba писал(а):
Хм. Это большая работа. К тому же на PC уже забыл, когда писал в прошлый раз.

Да, кусок не маленький. Тем более в слабо знакомой области. Как тут верно заметили, вполне возможно, что проще будет прикрутить готовый скриптовый язык и описывать процесс прошивки прямо на нем. Думаю, даже при весьма примитивной поддержке типа "дернуть ногой вверх/вниз" можно будет описывать протоколы любой сложности и это будет как минимум так же читабельно, как описание на "языке" из топика. Вполне возможно, что небольшого "прохождения напильником" (добавить функции для работы с портами) будет достаточно, что бы сделать себе специализированную версию того же node.js. Функциональности и скорости жабаскрипта должно быть с головой для этой задачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 19:28 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 4476
Да дело ж не в этом.
А (как пишет автор) - к его услугам здоровенный массив готовых описаний на языке HPL. И он хочет ими воспользоваться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 19:35 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2013, 16:07
Сообщения: 613
Откуда: Германия
А как у этого массива с лицензией? А то напишешь интерпретатор, а выложить никуда нельзя.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 19:40 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3108
Огласите весь спсочек пожалуйста.
описанных на этом HPL микросхем
если он реально большой, то можно подумать просто о том чтобы сконвертировать этот убогий HPL в скрипт на той же Lua, и исполнять его уже готовым интерпретатором.
а если нет, то тогда ну его, проще что-нибудь другое взять за основу для описания действий для программирования микросхем памяти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 19:44 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2473
Кот495 писал(а):
Да дело ж не в этом.
А (как пишет автор) - к его услугам здоровенный массив готовых описаний на языке HPL. И он хочет ими воспользоваться.

Иной раз проще перепилить пару-тройку нужных описаний на нормальный инструмент, чем пытаться воспользоваться готовым. И да, после написания своего инструмента (со своей грамматикой) написать парсер, который перегонит из одного языка в другой - не очень сложная задача. В некоторых случаях подобная задача решается вообще каким-нибудь инструментом типа awk или, скажем, питон-руби-перл. Вобщем, решать автору.

P.S. как тут верно заметили, зачастую под конкретную задачу (конкретный чип и протокол) проще выпилить свой инструмент на коленке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 19:52 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 4476
А может эта фирма cnc будет пополнять))))) - и вот чтоб не перегонять каждый раз, ...

dev писал(а):
А как у этого массива с лицензией? А то напишешь интерпретатор, а выложить никуда нельзя.

А при чем тут лицензия массива? Интерпретатор пишет antonluba. И он - его собственность. Как хочет - так и выложит.

Касательно же массива - раз выкладывают в свободный доступ, значит позволяют брать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 20:08 
Старожил

Зарегистрирован: 23 мар 2017, 14:45
Сообщения: 4476
_pv писал(а):
можно подумать просто о том чтобы сконвертировать этот убогий HPL в скрипт на той же Lua, и исполнять его уже готовым интерпретатором.
А точно это проще?
Ведь сей список - не данные))))))
Данные - это файл прошивки, например .hex или .bin
А этот HPL должен сформировать некую управляющую структуру, которая, будучи запущена, обработает данные и произведет дрыганье ногами
Сможет Lua такое?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 24 июл 2017, 20:31 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3108
проще.
сможет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 25 июл 2017, 11:51 
Старожил

Зарегистрирован: 27 мар 2015, 01:22
Сообщения: 1338
antonluba писал(а):
Кто-нибудь занимался написанием интерпретатора языка? Я пока вообще не представляю, как это делать.

В качестве железа можно применить все, что угодно, например, FT2232H, модуль PinBoard, STM32, CY68013, да хоть параллельный порт.

То есть архитектура видится такой:
Для каждой микросхемы имеется описание на HPL.
Программа читает этот файл, разбирает его и на каждый шаг составляет карту бит, которая передается на аппаратный интерфейс или читается с интерфейса.

Интерпретатор сделать просто, если выбрать подходящий язык - http://wiki.c2.com/?HomoiconicExampleIn ... gLanguages

Самое простое решение: OpenOCD --> jtag адаптер --> STM32 --> target
В OpenOCD встроен Tcl, как раз подходящий язык, чтоб делать свои интерпретаторы, да и сам OpenOCD так и сделан.
Вот пример - viewtopic.php?p=473424#p473424

HPL файлы под жёстким копирайтом, их нельзя использовать, разве что для информации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 25 июл 2017, 13:19 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 1162
Откуда: Сочи
Есть еще вот такое
http://wavedrom.com/tutorial.html
Исходники доступны. Это как-то может помочь?
Ведь парсер языка есть, осталось только вместо рисования выдать наружу (это если сильно упрощая).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 25 июл 2017, 13:29 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2473
Кот495 писал(а):
А точно это проще?

Зависит от опыта. Кому-то может быть проще, кому-то сложнее.
Кот495 писал(а):
Ведь сей список - не данные))))))

Все есть данные, в том числе исходный код.
Кот495 писал(а):
Данные - это файл прошивки, например .hex или .bin
А этот HPL должен сформировать некую управляющую структуру, которая, будучи запущена, обработает данные и произведет дрыганье ногами
Сможет Lua такое?

Думаю, это сможет любой язык программирования общего назначения. Вопрос скорее в затратности и целесообразности использования конкретного языка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 25 июл 2017, 13:34 
Старожил
Аватара пользователя

Зарегистрирован: 23 сен 2012, 20:35
Сообщения: 2473
antonluba писал(а):
Есть еще вот такое
http://wavedrom.com/tutorial.html
Исходники доступны. Это как-то может помочь?
Ведь парсер языка есть, осталось только вместо рисования выдать наружу (это если сильно упрощая).

Какая прикольная вещь! Вместо рисования на выходе можно выдать наружу код, например, на С, который, будучи скомпилированным превращается в плагин для некоей программы-прошивалки. Как один из возможных вариантов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 25 июл 2017, 15:32 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3108
всё-таки оно для рисования диаграмм,
а для описания программирования памяти имхо больше подходит тупо последовательность функций.
там в основном не отдельными ногами надо дрыгать, а байтовые команды полысать.
то есть оборачивать их ещё раз в строку где каждый символ что-то кодирует, вроде wave: "x.345x|=.x", data: ["head", "body", "tail", "data"] наглядности имхо не добавит и описание не упростит.

Цитата:
Ведь парсер языка есть, осталось только вместо рисования выдать наружу

готовых скриптовых языков полно, приделать к любому из них библиотеку для работы с конкретным программатором (для той же lua, привязать несколько функций из libftdi совсем не сложно, да и поди уже что-нибудь готовое есть) который будет дёргать ногами совсем не проблема.

или обязательно надо сделать что-то своё, со своим корявым синтаксисом?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 25 июл 2017, 19:26 
Старожил
Аватара пользователя

Зарегистрирован: 28 мар 2012, 10:33
Сообщения: 1162
Откуда: Сочи
_pv писал(а):
или обязательно надо сделать что-то своё, со своим корявым синтаксисом?

Лучше всего вообще ничего не делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Реализация языка описания протоколов обмена
СообщениеДобавлено: 25 июл 2017, 20:17 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3108
изначально вопрос был про свой интерпетатор.
так вот берите готовое.
любой понравившийся скриптовый язык, и пишите описание программирования памяти на нём.
используя ряд простых функций вроде SpiTransferByte(), SetPin(), ClrPin().
реализовать их для работы с конкретым программатором - имхо самая простая часть, особенно если это ftdi.
а у какого-нибудь USB blaster протокол вообще тривиальный, даже гораздо проще MPSSE. да и китайские клоны по 2$.
С Lua могу помочь.

ну либо зайти с другой стороны, как vt340 посоветовал, разбирайтесь с tcl, и добавляйте недостающие микросхемы к openOCD, там с поддержкой железа уже всё сделано.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB