Регистрация событий во встроенных системах - PullRequest
7 голосов
/ 11 августа 2011

Обычно в SBC, работающем с ОСРВ, было бы легко записать данные / журналы событий на внешний носитель, такой как SD-карты. Однако во встроенных системах, в которых используется микроконтроллер, например, Микросхемы PIC, имеют ограниченную память данных / программ. Хотя некоторые чипсеты поддерживают внешние носители, предполагая, что нет, как можно войти в MCU?

Единственный возможный способ, которым я мог придумать, - это записать его в EEPROM MCU, но возможно ли это? Если бы это можно было сделать, как можно было бы писать и читать?

Ответы [ 4 ]

3 голосов
/ 11 августа 2011

Регистрация может быть выполнена на любом устройстве памяти, включая SD-карты (при условии наличия соответствующего аппаратного периферийного устройства). Если к последовательному порту подключено внешнее устройство, вы можете записать на него данные.

Обычно регистрация событий производится только в исключительных случаях. Запись в EEPROM или Flash (для более новых устройств) является относительно медленной, потребляет энергию и использует ограниченный ресурс (пространство и циклы стирания).

Для отладки обычно используется последовательный порт (или порт SWO на Cortex-M3).

2 голосов
/ 11 августа 2011

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

Я использовал этот подход для приложения, где 100-200 событий были сгенерированы в течение 1-2-минутного сеанса тестирования. Затем список был загружен через последовательный порт и проанализирован с помощью небольшого скрипта Python.

1 голос
/ 13 августа 2011

Обычно можно вывести данные в UART и записать или отобразить их в эмуляторе терминала, таком как TeraTerm (или HyperTerminal, если необходимо).

Если вы внедрите кольцевой буфер и ISR для подачи UART, это окажет минимальное влияние на поведение системы во время выполнения, если вы не превысите пропускную способность порта в течение продолжительных периодов. Более вероятно, что она будет иметь меньшее влияние на систему и будет более детерминированной, чем запись в EEPROM или Flash, особенно если UART имеет возможности FIFO или DMA, и хотя пропускная способность может быть ограничена, она имеет преимущество практически безграничной емкости.

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

1 голос
/ 11 августа 2011

В зависимости от ваших потребностей в данных вы можете использовать флэш-память SPI или EEPROM I²C.

ЭСППЗУ I2C меньше с точки зрения хранения, но его интерфейс доступен в большинстве микроконтроллеров (если нет, это сделать относительно просто в программном обеспечении с обычными выводами ввода-вывода), и они намного медленнее (в основном из-за шины I2C). это ограничено в 1 МГц). легко найти их до 1 Мбит в емкости и с упаковкой 8DIP.

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

...