2015-01-12 2 views
0
#define BITINIT \ 
    uint8_t clrClkAndData = PORTD & ~0x28 

#define BIT(n) \ 
    PORTD = clrClkAndData; \ 
    asm __volatile__ \ 
     ( "sbrc %2," #n "\n" \ 
    "\tsbi 18,3\n" \ 
    "\tsbi 18,5\n" \ 
    "\tsbic 16,2\n" \ 
    "\tori %0,1<<" #n "\n" \ 
    : "=d" (spiIn) : "0" (spiIn), "r" (spiOut)) 

Я установил ubuntu и использовал TOSSIM. Все компилируется правильно и работает. Но когда файл HPLAt45dbIOP.nc для micaz выполняется на TOSSIM, я получаю ошибки какЗапись данных во флеш с помощью тренажера TOSSIM

/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc: 

Assembler сообщений:

/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:150: Error: no such instruction: `sbrc %cl,7' 
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:151: Error: no such instruction: `sbi 18,3' 
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:152: Error: no such instruction: `sbi 18,5' 
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:153: Error: no such instruction: `sbic 16,2' 
/opt/tinyos-2.1.2/tos/platforms/micaz/chips/at45db/HplAt45dbIOP.nc:154: Error: no such instruction: `ori %dl,1<<7' 

У меня есть машина Intel. Почему TOSSIM не может выполнять инструкции для ассемблера?

ответ

1

Прежде всего, sbrc, sbi и т. Д. Являются инструкциями AVR Assembler, поэтому машина Intel не может их выполнить.

Тем не менее, TOSSIM не может и не может запускать одни и те же компоненты, зависящие от платформы, как реальные узлы. Такие компоненты используют регистры микроконтроллера для управления выводами IO, обрабатывают аппаратные прерывания, обмениваются данными с внешними периферийными устройствами по шинам, таким как SPI и т. Д. Помимо беспроводных сенсорных сетей: представьте себе, что у вас есть приложение, которое снимает фото с камеры, подключенной к ПК, а затем печатает Это. Как бы вы имитировали выполнение такого приложения без физического владения камерой и принтером?

Что на самом деле делает TOSSIM, так это то, что работает, заменяя компоненты реализацией моделирования (см. documentation). По сравнению с приложением для ПК, о котором я упоминал ранее, TOSSIM работает, заменяя некоторые аппаратные компоненты, такие как принтер и камеру, программными модулями, имитирующими их поведение, так называемыми mocks. Затем приложение связывается с такими программными модулями вместо реального оборудования, что позволяет тестировать более высокие уровни логики приложения без физического оборудования.

Этот подход, однако, требует внедрения программных издевок, что иногда не всегда легко. Платформа TinyOS micaz, которая, насколько я знаю, является единственной поддержкой TOSSIM, поставляется с некоторыми модульными модулями. Вы можете найти их в каталогах с именем sim. Например, tos/platform/micaz/chips/cc2420/sim/ содержит mocks для радиочипа CC2420 и tos/chips/atm128/timer/sim/ включает в себя mocks для аппаратных таймеров, доступных на микроконтроллере ATM128.

В TinyOS, при компиляции с помощью команды make micaz sim, фиктивные компоненты автоматически используются вместо реальных реализаций предшествующих все включают пути с включают пути, заканчивающиеся /sim (в TinyOS система сборки всегда выбирает первый компонент, соответствующий).

К сожалению, похоже, что нет флеш-памяти для драйвера флэш-памяти, поэтому невозможно использовать вспышку в симуляциях. Для проверки вашего приложения необходимо иметь MICAz mote. TOSSIM в основном используется для моделирования радио, поскольку такие эксперименты не всегда могут быть легко выполнены в реальной среде, и их результаты могут быть неопределенными, что мешает воспроизводить проблемы и отлаживать приложения.

+0

Спасибо. Есть ли в любом случае, когда код ассемблирования был изменен? –

+0

Чего именно вы хотите достичь? – maral

+0

Я хочу, чтобы данные, собранные датчиком, записывались во флэш-память. Для этого я использовал компонент BlockStorageC, у меня также возникла проблема с созданием файла StorageVolumes.h, который я разрешил с помощью команды tos-storage-at45db вручную.Я хочу знать, что, когда TOSSIM имитирует узлы датчика, позволяет ли он также использовать некоторую форму хранилища в смоделированном узле датчика, чтобы, если бы любые ТОЛЬКО такие эксперименты, как отправка и хранение данных во флэш-памяти, могли быть сделаны через TOSSIM. Ошибка поступает в файл HPLat45dbIOP.nc –

Смежные вопросы