Zhongwen Cards

Наконец-то нашёл в себе силы продолжить проект. Это на самом деле самое сложное – заставить себя довести дело до полного конца, а не оставить его там, где оно есть, когда уже всё работает, но еще не хватает каких-то мелочей.

Переписал модуль импорта XML. Подключил его в том числе и к работе с файлами на SD-карте. Пока формат только мой собственный, нужно будет сделать импорт также из Pleco, Anki и, возможно, ZDT (не помню, есть ли там экспорт в XML). Нужно теперь сделать еще возможность экспорта, исправить несколько юзабилити-неприятностей. Еще всё-таки очень хочется довершить ту старую идею с тестом на путающиеся инициали и финали, совместно с путающимися тонами. Ну а затем наверное стоит продумать что еще у меня не кастомизируется и сделать это кастомизируемым :)

Также подумываю над тем, чтобы разделить локали – возможный задел на монетизацию. Потому что я, конечно, альтруист, но в первую очередь для русскоязычного населения. У мериканьцев на английском и так дофига учебного софта и материалов :)

В чём отличие между MIL-STD-1553 и MIL-STD-1533?

Ответ один – ни в чём. Второе – это написанное с опечаткой первое. Не бывает шины 1533! Справедливости ради, можно сказать, что документ под номером MIL-STD-1533 существовал, но он описывал стандарт на разъёмы с подпружиненными контактами, но впоследствии этот стандарт был отменён.

Пока что для аэроспейса и авионики есть только MIL-STD-1553 (он же “ГОСТ Р 52070-2003″), ARINC 429, IEEE1355 (он же SpaceWire). Ну, и какие-то несознательные личности ещё пытаются туда CAN присобачить…

JTAG, BSDL и сопутствующие

..it is true that asking regexpes to parse arbitrary HTML is like asking Paris Hilton to write an operating system..

Заинтересовался протоколом IEEE-1149, который JTAG. Хочу попытаться освоить его на низком уровне. Вроде как всё довольно просто – конечный автомат Тестового порта доступа (TAP) управляется линией TMS по переднему фронту TCK, данные вводятся по линии TDI, выводятся по TDO. Плюс необязательная линия TRST, про которую можно не думать. Автомат достаточно неплохо расписан в стандарте – всё довольно стройно и логично.
Далее начинаются усложнения. Стандарт описывает интерфейс и требования к протоколу, а вот сам протокол может быть с некоторыми ограничениями каким угодно. Для каждого устройства, оснащенного портом JTAG, производителем пишется BSDL-файл, в котором данный протокол и описывается. После чего данный файл выкладывается или не выкладывается (если производитель очень жадный) на всеобщее обозрение. Также, в BSDL-файле может содержаться дополнительная информация о внутренней структуре устройства и способах доступа к этим кишкам всё через тот же JTAG – попросту говоря, описывается что нужно сплясать на входе TDI, когда автомат состояний находится в правильном состоянии (Capture-IR или Capture-DR – пока этот момент я не особо уяснил).

Теоретическая информация – это хорошо, но я уясняю информацию только в практическом ключе – поэтому захотелось изваять простенький JTAG-комплекс. Взять программатор, который изначально был разработан для работы с совершенно другим самописным протоколом и попробовать подцепиться им к какому-нибудь камню. Для начала мне бы хватило правильно считанного значения IDCODE.

Я не люблю делать одноразовую работу, поэтому к задаче решил подойти издалека – написать свой собственный парсер BSDL-файлов. Возвращаясь к фразе из эпиграфа – структура этих файлов представляет собой обычный исходник, похожий на исходники любого другого языка программирования. И подойти к нему с точки зрения обычных конфигурационных файлов довольно проблематично. Поэтому я снова заинтересовался задачей синтаксического анализа. Пока что сижу и изучаю форму Бэкуса-Наура, расширенную форму их же, выбираю инструмент, которым буду пытаться описать грамматику BSDL, пока что по принципу количества информации лидирует yacc и его форки вроде bison. Освоение синтаксического анализа впоследствии может пригодиться для построения скриптовых интерпретаторов для внутренних задач.