Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программирование MSP430 под Linux
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Navuhodonosor
Приветствую всех!

Эта тема освещалась на форуме, но несколько в иной плоскости.

А проблема выглядит так.
Имеется готовая рабочая программа для устройства на MSP430, в котором из экономии энергоресурсов и объёма нет никакого интерфейса, кроме JTAG.
При запуске системы требуется варьировать двумя параметрами, которые записываются в information memory и занимают там 2 (два) байта.

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

Возможно ли использовать mspdebug более целенаправленно? Или всё же где-то есть средства, которые могут работать с сегментами памяти?

Заранее благодарю!
zhevak
Цитата(Navuhodonosor @ Feb 8 2012, 22:50) *
Приветствую всех!

А проблема выглядит так.
Имеется готовая рабочая программа для устройства на MSP430, в котором из экономии энергоресурсов и объёма нет никакого интерфейса, кроме JTAG. При запуске системы требуется варьировать двумя параметрами, которые записываются в information memory и занимают там 2 (два) байта.

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

Возможно ли использовать mspdebug более целенаправленно? Или всё же где-то есть средства, которые могут работать с сегментами памяти?

И Вам привет!

Я немного не понял вопроса (Вы не указали детали), но все же попробую ответить.

В mspdebug имееться команда erase. Эта команда в зависимости от своих аргументов позволяет стирать:
  • без аргументов -- программную память, за исключением информационной,
  • аргумент all -- обе памяти: и программную, и информационную,
  • аргумент segment <addr> -- указанный сегмент в информационной или программной памяти.


Вообще mspdebug позволяет работать в двух режимах: терминальном и автоматическом.

В терминальный режим Вы самостоятельно должны давать команды в командной строек mspdebug. Характерный признак этого режима -- соответствующая подсказка в начале строки:
(mspdebug)

Например, чтобы стереть сегмент D Вы должны дать команду:

(mspdebug) erase segment 0x1000

Выход из командного режима обратно в оболочку (консоль) осуществляется командой exit или нажатием на Ctrl+D.

В автоматическом режиме -- Вы вызываете mspdebug с указанием действий, которые ему надо выполнить. Эти действия Вы перечисляете в кавычках в конце команды вызова. Например так:

$ mspdebug uif -d /dev/ttyUSB0 "prog out.hex"

После выполнения заданных действий mspdebug вернет управление оболочке.

Если Вам нужно выполнить несколько действий, то, как вариант, можете написать маленький скриптовый файл.

Я не знаю, на то ли я ответил. Уточняйте, если что не так.
Navuhodonosor
Спасибо!

Это именно то, что нужно.

Я просто пытался менять данные в сегменте A в information memory, а это место защищено от записи. Поэтому ничего не выходило.

В общем, технология получается типа такой:

1. Копируем содержимое нужного сегмента в файл.

2. Стираем указанный сегмент.

3. С помощью команды mw пишем куда надо, что надо.

4. Загружаем записанный ранее сегмент обратно. Ячейки, которые были изменены, не записываются.

Вуаля!

Насчёт скрипта - это очень правильная мысль.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.