реклама на сайте
подробности

 
 
> СС430F5137 с нуля на asm, нужна помощь
vazz
сообщение Feb 23 2013, 14:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 189
Регистрация: 21-01-10
Пользователь №: 54 971



Приобрел EM430F5137RF900 и MSP-FET430UIF, до приобретения особо не заморачивался с подготовкой "рабочего пространства" под новый проект, вроде бы камни не особенно новые, часто встречал различную информацию о них и не думал, что доставабельностью нужной для начала разработки инфы возникнут проблемы. Пол дня поискал в сети примеры заголовочных файлов под этот камень, примеры инициализации периферии, увы - результат 0. Это такой секрет? Такие данные достаются потом и кровью? Раньше работал с AVR (да и продолжаю время от времени), никаких таких проблем не помню, все было как-то проще достать и среда разработки нормальная (и бесплатная). Бог с ней со средой, поставил IAR KS на 4кБ кода (мне для попробовать). С самим ассемблером MSP и системой команд ознакомился поверхностно, страха не вызвал, вроде бы все просто (по крайней мере помигать светодиодом для начала - понятно как, а особенности и "камни" по ходу дела разберу). Стандартный заголовочный файл, который есть в папке иара "\inc" при пустом проекте вызывает негодование у компилятора IAR (дублирование лэйблов в объявлении регистров DMA). Попытался найти нормальный заголовочный файл в сети - нашел лишь такой же, "замазал" все места вызывающие негатив комментариями, чтобы не было ошибок. Далее попытался найти файл, который инициализировал бы мне всю периферию - тут все и загнулось. Я понимаю, что скорее всего при запуске МК все отключает сам и морганию светодиодом врядли что-то помешает, но хотелось бы иметь заготовку с полной инициализацией всех узлов МК ну и ессно полную таблицу векторов прерываний воткнуть в начало. Это добавляет уверенности в дальнейшем освоении камня. В отладчике иара тож пока особо не разобрался, если честно с первого раза иар вроде показался "классическим" средством разработки с простым и понятным интерфейсом, как начал лезть глубже - начало казаться, что первое впечатление обманчиво, чувство "чего-то не хватает" не покидает - ну к примеру как мне для отладчика задать тип МК, частоту кварца (чтоб время выполения отслеживать), также не нашел средства для заливки прошивки в МК (нужно отдельным ПО для этого ввоспользоваться чтоли?!). Прошу извинить за смешивание всего в кучу - помогите найти (или разобраться) с заголовочный файл для ассемблера под этот МК, файл инициализации всех устройств на борту, ну и вектора прерываний до кучи. На Си для МК не программирую и не особо горю желанием.


--------------------
Не так страшна автоматизация, как её малюют.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SM
сообщение Jan 4 2014, 18:00
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Какая же это ошибка. Доступ к любому отдельному байту слова не ошибка, а фича sm.gif
Тут исключения только отдельные регистры железа, к которым нельзя физически так обращаться в силу каких-то внутренних особенностей реализации
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jan 4 2014, 18:04
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(SM @ Jan 4 2014, 22:00) *
Какая же это ошибка. Доступ к любому отдельному байту слова не ошибка, а фича sm.gif

То есть, получается так, что я задумывал использовать my_data как хранилище слова (о чем ясно указал - DS16), однако при написании кода я ошибся и обратился к этому слову как к байту. Моя программа в этом случае будет работать не правильно, а компилятор все видит и молчит? Тут все ложится на программиста? Нет средств для контроля?
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 4 2014, 18:15
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(d7d1cd @ Jan 4 2014, 22:04) *
однако при написании кода я ошибся и обратился к этому слову как к байту.


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

Цитата(d7d1cd @ Jan 4 2014, 22:04) *
Нет средств для контроля?

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


PS
Смысл в указании DS8/16/32 - чтобы линкер расположил переменную по адресу с корректным выравниваением, чтобы, например, слово, не попало на нечетный адрес. И больше ни для чего
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jan 5 2014, 11:58
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Спасибо за помощь. Но все таки есть метод, позволяющий в какой-то мере отслеживать ошибки, связанные с неправильным обращением к создаваемым переменным. И это касается не только размера этой переменной. Это еще чтение и запись. Для этого надо использовать директивы SFRB, SFRW и SFRTYPE. Есть еще SFRL, но почему то эта директива не работает. Наверное она работает с 32-х разрядными микроконтроллерами... Кому надо (новичкам в программировании на ассемблере) привожу пример:
Код
SFRB    AAA = 0x0201                  ; Переменная ААА размером 1 байт по адресу 0х0201
SFRW    BBB = 0x0202                  ; Переменная ВВВ размером 2 байта по адресу 0х0202
SFRTYPE CCC WORD, READ, WRITE = 0x0208; Переменная ССС размером 2 байта (WORD), с возможностью
                                      ; чтения (READ) и записи (WRITE) по адресу 0х0208

main2:  
        MOV     #10, AAA              ; Компилятор ругается (что и требовалось): Accessing SFR using incorrect size
        MOV.B   #10, AAA              ; Теперь все хорошо :)
        
        MOV.B   AAA, BBB              ; Здесь недостаток использования SFR, ведь байт можно переслать в слово, однако ругань
        MOV     #BBB, CCC             ; Перемещение в ССС адреса BBB (0x0202)
        MOV     BBB(R12), CCC         ; Использование ВВВ как массива (R12 - индекс массива)
        MOV     #12, &BBB+2           ; Занесение числа 12 во 2 элемент массива. Здесь компилотор предупреждает: Suspicious sfr expression
                                      ; Нужно обратить внимание, что здесь обязательно
                                      ; использование абсолютного режима адресации. Использование относительного режима
                                      ; адресации приводит к неправильному выполнению кода:
        MOV     #12, BBB+2            ; Помещаем число 12 во 2 элемент массива, однако число 12 попадает по адресу 0х1304, то
                                      ; есть на 0х1100 дальше. Почему так, не знаю...

Был тут еще вопрос по размеру кода при программировании на ассемблере в версии IAR с ограничением на размер программы. Я использовал готовую прошивку (размером больше 4-х кбайт) и попробовал запустить ее на отладку. Увы, IAR мне сказал, что есть ограничение на размер и идите лесом...

Сообщение отредактировал d7d1cd - Jan 5 2014, 13:32
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 5 2014, 12:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(d7d1cd @ Jan 5 2014, 15:58) *
Увы, IAR мне сказал, что есть ограничение на размер и идите лесом...

Это верно, ограничение на размер у линкера (xlink), и ему пофигу, на чем исходники был написан и в каких комбинациях.

А вот SFRx - они не для переменных придуманы. Это аббревиатура от Special Function Register - для описания регистров, к которым по железным причинам недопустимы какие-то виды операций с какими-то размерами данных. Хотя, конечно, как костыль использовать можно, особенно если размещение переменных по адресам памяти охота вручную делать.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Jan 5 2014, 13:08
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(SM @ Jan 5 2014, 16:12) *
...особенно если размещение переменных по адресам памяти охота вручную делать.

Бывают случаи, что не просто охота, а надо! wink.gif

Я тут добавил кое-что...

Сообщение отредактировал d7d1cd - Jan 5 2014, 13:33
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 5 2014, 13:20
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(d7d1cd @ Jan 5 2014, 17:08) *
Бывают случаи, что не просто охота, а надо! wink.gif


Честно говоря, именно в контексте MSP430, у которого нет внешней шины, куда может быть что-то снаружи подключено по фиксированным адресам, и в котором нет DMA доступа для кого-то, расположенного снаружи, не верится, что это бывает надо. Все красиво решается средствами ассемблера - RSEG, ASEG, COMMON, и получается при этом максимально перемещаемым.

Цитата(vazz @ Jan 5 2014, 17:17) *
Или директива DB для читоты эксперимента не катит, нужно именно командами замостить типа NOP?


да-да. там размер кода ограничен, а не данных. И Вы не можете не использовать линкер. Без него не получите программу, которую можно загрузить в процессор, в том числе и в отладчике, так как именно линкер генерирует на выходе загружаемый исполняемый модуль из "промежуточных" объектных модулей, или одного модуля, полученных в результате работы транслятора ассемблера.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vazz   СС430F5137 с нуля на asm   Feb 23 2013, 14:07
- - rezident   Цитата(vazz @ Feb 23 2013, 19:07) Стандар...   Feb 23 2013, 20:03
- - vazz   Благодарю за напутственные пояснения, наконец-то п...   Dec 28 2013, 14:12
- - rx3apf   "#" - непосредственный операнд, если зна...   Dec 28 2013, 14:33
- - vazz   А правда то, что ограничение 4кБ IAR Kickstart отн...   Dec 28 2013, 17:31
|- - d7d1cd   Цитата(vazz @ Dec 28 2013, 21:31) А правд...   Dec 28 2013, 17:32
|- - vazz   Цитата(d7d1cd @ Dec 28 2013, 21:32) Вроде...   Dec 29 2013, 11:55
|- - d7d1cd   Цитата(vazz @ Dec 29 2013, 15:55) Я пока ...   Dec 29 2013, 14:21
- - vazz   Почитал о режимах адресации, впринципе все понятно...   Dec 29 2013, 09:47
|- - d7d1cd   Цитата(vazz @ Dec 29 2013, 13:47) Почитал...   Dec 29 2013, 11:39
- - vazz   Не могу найти/понять информацию про стек. Вершина ...   Dec 30 2013, 19:55
|- - d7d1cd   Цитата(vazz @ Dec 30 2013, 23:55) Не могу...   Dec 31 2013, 06:25
|- - vazz   Цитата(d7d1cd @ Dec 31 2013, 10:25) Перво...   Dec 31 2013, 10:13
|- - d7d1cd   Цитата(vazz @ Dec 31 2013, 14:13) Про сте...   Dec 31 2013, 13:38
|- - vazz   Цитата(d7d1cd @ Dec 31 2013, 17:38) и буд...   Dec 31 2013, 14:52
- - vazz   А еще непонятны примочки ассемблера типа "NAM...   Dec 30 2013, 21:57
- - d7d1cd   А что за расширение файла .inc? Вот ты говоришь, ч...   Dec 31 2013, 15:32
|- - vazz   Цитата(d7d1cd @ Dec 31 2013, 19:32) А что...   Dec 31 2013, 16:05
|- - d7d1cd   Цитата(vazz @ Dec 31 2013, 20:05) Тут не ...   Dec 31 2013, 16:20
||- - vazz   Цитата(d7d1cd @ Dec 31 2013, 20:20) Мне к...   Dec 31 2013, 16:29
||- - d7d1cd   Цитата(vazz @ Dec 31 2013, 20:29) Кстати,...   Dec 31 2013, 20:11
|- - SM   Цитата(vazz @ Dec 31 2013, 20:05) Хм... н...   Jan 1 2014, 09:36
|- - vazz   Цитата(SM @ Jan 1 2014, 13:36) public/ext...   Jan 1 2014, 10:14
|- - d7d1cd   Цитата(vazz @ Jan 1 2014, 14:14) Благодар...   Jan 1 2014, 10:52
|- - SM   Цитата(vazz @ Jan 1 2014, 14:14) Благодар...   Jan 1 2014, 13:34
- - vazz   По мере разбирательства пытаюсь читать CC430 Users...   Jan 2 2014, 19:21
|- - rezident   Цитата(vazz @ Jan 3 2014, 00:21) Про MCLK...   Jan 2 2014, 20:03
|- - vazz   Цитата(rezident @ Jan 3 2014, 00:03) Поче...   Jan 2 2014, 22:09
|- - rezident   Цитата(vazz @ Jan 3 2014, 03:09) Не, я им...   Jan 3 2014, 17:03
- - vazz   IAR почему-то ругается на команду CMP.B по отношен...   Jan 3 2014, 19:03
- - vazz   Господин rezident, немного наслышан о тебе, как об...   Jan 3 2014, 20:37
|- - d7d1cd   Цитата(vazz @ Jan 4 2014, 00:37) Господин...   Jan 4 2014, 08:59
||- - vazz   Цитата(d7d1cd @ Jan 4 2014, 12:59) Я знаю...   Jan 4 2014, 10:02
|- - rezident   Цитата(vazz @ Jan 4 2014, 01:37) можно ли...   Jan 4 2014, 15:19
- - d7d1cd   vazz, можно, как ты говоришь, оффтоп... Ты пишешь ...   Jan 4 2014, 10:39
|- - vazz   Цитата(d7d1cd @ Jan 4 2014, 14:39) Чтобы ...   Jan 4 2014, 11:48
|- - d7d1cd   Цитата(vazz @ Jan 4 2014, 15:48) Наверное...   Jan 4 2014, 12:19
|- - vazz   Цитата(d7d1cd @ Jan 4 2014, 16:19) Как то...   Jan 4 2014, 16:33
||- - rezident   Цитата(vazz @ Jan 4 2014, 21:08) а вот пр...   Jan 4 2014, 16:48
||- - vazz   Цитата(rezident @ Jan 4 2014, 20:48) сраз...   Jan 4 2014, 17:12
|- - SM   Цитата(d7d1cd @ Jan 4 2014, 16:19) А для ...   Jan 4 2014, 16:45
|- - d7d1cd   Цитата(SM @ Jan 4 2014, 20:45) Объявить е...   Jan 4 2014, 17:14
- - SM   У меня сейчас IAR не установлен под 430. так что с...   Jan 4 2014, 17:36
|- - d7d1cd   Цитата(SM @ Jan 4 2014, 21:36) У меня сей...   Jan 4 2014, 17:50
||- - vazz   Цитата(SM @ Jan 5 2014, 17:20) да-да. там...   Jan 5 2014, 13:51
||- - SM   Цитата(vazz @ Jan 5 2014, 17:40) Замостил...   Jan 5 2014, 13:54
||- - vazz   Цитата(SM @ Jan 5 2014, 17:54) И Вы до си...   Jan 5 2014, 14:16
|- - vazz   Цитата(d7d1cd @ Jan 5 2014, 15:58) Был ту...   Jan 5 2014, 13:17
- - vazz   А у меня еще один интересный вопрос: можно ли как-...   Jan 4 2014, 18:59
- - SM   А вот это ищите в даташите. В некоторых MSP430 ест...   Jan 4 2014, 19:07
- - d7d1cd   Смотрите как я получил ограничение. Я создал шабло...   Jan 5 2014, 14:24
- - SM   Это они что-то поднамутили более свежего... Раньше...   Jan 5 2014, 14:30
- - vazz   Замостил связкой: КодJMP $ NOP Пространст...   Jan 5 2014, 14:32
- - vazz   То ли лыжи, то ли пол третьего ночи... Часовой ква...   Jan 5 2014, 22:43
|- - rezident   Цитата(vazz @ Jan 6 2014, 03:43) в регист...   Jan 6 2014, 05:55
- - vazz   Короче все запускается, оказывается помимо PxSEL н...   Jan 6 2014, 08:56
|- - rezident   Цитата(vazz @ Jan 6 2014, 13:56) Короче в...   Jan 6 2014, 09:16
|- - vazz   Цитата(rezident @ Jan 6 2014, 13:16) ... ...   Jan 6 2014, 09:28
|- - rezident   Цитата(vazz @ Jan 6 2014, 14:28) Поэтому ...   Jan 6 2014, 13:04
|- - vazz   Цитата(rezident @ Jan 6 2014, 17:04) вы б...   Jan 6 2014, 13:36
|- - rezident   Цитата(vazz @ Jan 6 2014, 18:26) Уверен, ...   Jan 6 2014, 13:43
|- - vazz   Честно говоря я уже погрузился в Unified Clock Sys...   Jan 6 2014, 14:55
- - vazz   А можно мне совет? Я что-то зря с этим XT1 походу...   Jan 6 2014, 20:47
- - rezident   Ну если вам на потребление начхать и 60мкА DCO vs ...   Jan 7 2014, 11:20


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th August 2025 - 05:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01563 секунд с 7
ELECTRONIX ©2004-2016