Skip to content

arch_msp430_notes_ru

Serge Vakulenko edited this page Aug 26, 2015 · 1 revision

Особенности архитектуры MSP430

Особенности ассемблера GNU as для MSP430: http://sourceware.org/binutils/docs/as/MSP430_002dDependent.html

Распределение регистров MSP430: | Регистр | Применение | |:------------|:---------------| | r0 | Адрес следующей команды (PC) | | r1 | Указатель стека (SP) | | r2 | Статус процессора (SR) | | r3 | Генератор констант, только чтение | | r4 | Указатель фрейма функции | | r5 | Указатель на аргументы (gcc без оптимизации) | | r4...r11 | Сохраняемые регистры | | r12...r15 | Несохраняемые регистры | | r15...r12 | Аргументы функции | | r15 | Результат функции, вычисление выражений |

При вызове функции первые четыре параметра передаются в регистрах r15...r12. Остальные помещаются в стек в обратном порядке, последний параметр имеет больший адрес. Функция возвращает значение в регистре r15 или регистрах r15...r14 (в случае long).

При прерывании, состояние регистров сохраняется в стеке текущей задачи. Всего 14 слов или 28 байт: | Стек | |:---------| | --- | | --- | <--- Значение SP до прерывания | | PC | | SR | | r4 | | r5 | | ... | | r15 | <--- Новое значение SP | | --- |

Отладчик GDB

GDB 5.1.1 - последняя нормально работающая версия отладчика для MSP430. Судя по обсуждениям в инетрнете, на текущий момент (февраль 2009) более свежие версии не обладают приемлемой функциональностью.

Бинарную версию для Linux можно скачать здесь, или собрать из исходных текстов: Собрать

wget http://cygwin.mirrors.pair.com/gdb/old-releases/gdb-5.1.1.tar.bz2
tar xjvf gdb-5.1.1.tar.bz2

cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/mspgcc co gdb/gdb-5.1.1
cp -r gdb/gdb-5.1.1/* gdb-5.1.1/

cd gdb-5.1.1
./configure --target=msp430
make
make install

Для подсоединения к целевой плате необходимо использовать утилиту msp430-gdbproxy Для установки запустите скрипт install.sh.

Пример сеанса отладки:

$ msp430-gdbproxy msp430 &
$ msp430-gdb myprog.elf
(gdb) target remote localhost:2000
(gdb) c
You can’t perform that action at this time.