Пишем программу на STAPLe.

 

Прежде всего: STAPL( Standard Test and Programming Language ) – это специализированный интерпретирующий язык высокого уровня, который в состоянии облегчить жизнь всем, кто имеет дело с JTAG. Его исходники на С были выложены на сайте Altera. Но это всего лишь одна из его реализаций, т.к. стандарт языка был разработан JEDEC (Solid State Technology Association) и опубликован в августе 1999 года. Есть более продвинутая версия интерпретатора от фирмы Actel. JTAG на сегодня имеется не только в микросхемах программируемой логики FPGA, но и во многих популярных процессорах и микроконтроллерах. В связи с этим он постепенно становится необходимым в той, или иной степени  тем, кто работает в области программируемых встроенных систем. Автор данной статьи приобрел опыт работы с ним при использовании процессора Intel386EX. Вы можете скачать help-файл по STAPL на англ. с моего сайта. Программа, интерпретирующая код STAPL-а, называется STAPL-Player и может быть портирована из исходников в различные операционные системы. В этой статье мы будем подразумевать версии, работающие под Win32, в качестве консольного приложения. Вы можете сделать для него надстройку с менюшками, кнопочками, редактором и контекстным help-ом, используя Visual C++, исходя из ваших задач. Главное преимущество STAPL заключается в том, что вы не должны: заботиться о деталях реализации JTAG интерфейса, учитывать переходы TAP-контроллера по его состояниям, словом, можете забыть о низком уровне навсегда!   Правда, бывают исключения из этого правила, но о них в этой обзорной статье мы толковать не станем. Итак, главный “изюм” – это операторы ACTION. А все потому, что запуская STAPL-Player, вы можете ( и должны ) указать в командной строке имя той ACTION, которую вам необходимо выполнить.

”Но ведь это ограничение возможностей!”- возмутиться кто-то из вас и будет совершенно неправ. STAPL призван работать с железом, а в этом случае всё довольно серьезно. Мы с детства помним, к чему приводят поспешные, необдуманные действия даже с игрушечными паровыми машинами. Чипы умирают молча, только когда они имеются в виде отдельного изолированного элемента на макетной плате( правда, если они стоят несколько десятков долларов наших собственных денег, их смерть сопровождается воплями покаяния их неосторожного убийцы ). Поэтому ACTION это ACTION! Вообще говоря, в начале stapl-файла ( обычно для них используются расширения .jam, .stp, .stapl ) идет множество всяких NOTE. Если вы не хотите с ними ……, просто перепишите их в свой файл из какого-нибудь готового. Обратите внимание только на “STAPL_VERSION” и “MAX_FREQ”. Одиночный апостроф используется для комментирования строк, или остатков строк вправо на манер // в С.

Через запятую перечисляются последовательно выполняемые данным ACTION процедуры.

Пример:

                     ACTION <name> = <procname1>,

                                             ...,

                                     <procnameN>;

Как видите, операторы в STAPL разделяются как и в большинстве других языков ;

 

Принято размещать в начале stapl-файла строки с NOTE, затем ACTION, затем блоки данных, и, наконец, все остальное, то есть различные процедуры.

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

Хотя не должно быть неименованных глобальных данных, локальные переменные в процедурах допускаются. Таким образом, именованные блоки данных позволяют гибко объединять данные между различными PROCEDURE и, следовательно, ACTION.

 

Пример первой программы на STAPLе:            

                     NOTE "CREATOR" "TESTSOFTWARE";

                     NOTE "DEVICE" "XXX";

                     NOTE "PACKAGE" "XXX-PQ208";

                     NOTE "DATE" "2003/06/10";

                     NOTE "STAPL_VERSION" "JESD71";

                     NOTE "MAX_FREQ" "5000000";

                    

                     ACTION DATATEST = INIT,

                                       INIT1;

 

                     DATA PARAMETERS;

                      INTEGER P1=5;

                     ENDDATA;

 

                                          

                     PROCEDURE INIT USES PARAMETERS;

                     

                      PRINT "INIT";

                      PRINT "P1=",P1;

                      P1=100; 

                     ENDPROC;

                     

                     PROCEDURE INIT1 USES PARAMETERS; 

                      PRINT "INIT1";

                      PRINT "P1=",P1;

                     ENDPROC;

                    

 Сохраните этот исходный текст в файле, например, test.jam

 Запустите на выполнение консольное приложение:

                     Jam p1 –adatatest test.jam

 
Номер порта ( ключ –Pxxx) в данном примере безразличен, поскольку наша первая программа просто выводит на консоль. Если вы ошибетесь, набирая имя ACTION, STAPL Player выдаст сообщение об ошибке:

 

Error: action “<то, что вы набрали>” is not supported for this Jam file

     

Если же все правильно, ты вы увидите на консоли примерно следущее:

 

Jam STAPL Player Version 2.2

Copyright © 1997-2000 Altera Corporation

INIT

P1=5

INIT1

P1=100

Exit code = 0 ...Success

Elapsed time = 00:00:00

     

В дальнейшем мы ознакомимся более подробно со всеми ключами и допустимыми параметрами командной строки. А пока вы можете написать для тренировки Windows-программу, которая выискивает во входном stapl-файле всевозможные ACTION, формирует нужные пункты динамического меню и запускает STAPL Player на исполнение, как консольное приложение с нужными параметрами командной строки. Можно, конечно, использовать для этой цели и готовые программы, такие как MULTIEDIT. Поскольку мы имеем дело с интерпретатором, то можем использовать все преимущества, свойственные интерпретаторам. Попробуйте поменять местами процедуры в ACTION, затем закомментировать любую из них. Удобно, не правда ли? Когда вы отлаживаете работу с железом, можно использовать эту технологию быстрой замены и модификации кода. Также удобно иметь несколько stapl-файлов, которые делают примерно одно и то же с вариациями. Ведь у вас под рукой многоканальный осциллограф и тратить во время проведения экспериментов с железом время на редактирование и сборку кода нерационально. Поэтому следует подготовиться заранее, а в ходе эксперимента работать с клавиатурой в минимальном объеме. Код на STAPL-е за счет его специализации весьма компактен. К тому же редактируемый вами файл немедленно выполняется! Эти два обстоятельства не только обеспечили ему “место под солнцем”, но способствуют его развитию и распространению. Немаловажно, конечно и то, что он бесплатен.

 

                      (Продолжение следует )



Hosted by uCoz