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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> MSP430 на компьютере
d7d1cd
сообщение Dec 12 2012, 16:39
Сообщение #1


Местный
***

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



Привет всем! Подскажите, существует ли программа кроме NoICE, с помощью которой можно имитировать работу микроконтроллера семейства MSP430 по заданной программе (предпочтительно на ассемблере)?

NoICE все ничего, но не айс! То ли я чего то в нем не знаю, то ли он не правильно имитирует работу МК: специальные регистры и регистры периферии при сбросе не принимают значений, указанных в документации на МК.

Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 12 2012, 18:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Полностью смоделировать работу всей периферии МК это весьма сложная задача. Поэтому симуляторы обычно реализуют ограниченную модель функциональности периферии микроконтроллера. В IAR C-CPY, например, более-менее функционирует лишь событийная модель флагов прерываний.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Dec 13 2012, 02:39
Сообщение #3


Местный
***

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



А что вы скажите по поводу программы Proteus?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Dec 13 2012, 05:03
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(d7d1cd @ Dec 12 2012, 20:39) *
специальные регистры и регистры периферии при сбросе не принимают значений, указанных в документации на МК.

Какие, например?
Большинство периферийных регистров к сбросу равнодушно.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 13 2012, 11:55
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Dec 13 2012, 07:39) *
А что вы скажите по поводу программы Proteus?
"Не читал использовал, но осуждаю!" sm.gif Потому, что (см. первое предложение из моего предыдушего топика).
Цитата(MrYuran @ Dec 13 2012, 10:03) *
Большинство периферийных регистров к сбросу равнодушно.
Как раз большинство периферийных регисторов после сброса принимают конкретное состояние. И это становится проблемой для программиста, если он заранее надеется на default state. Поэтому я уже давно всем подряд советую использовать полную и явную инициализацию всех используемых регистров и не использовать маски, накладываемые на значения "по-умолчанию" (получаемые после сброса), как это часто встречается в примерах от TI.
Go to the top of the page
 
+Quote Post
ut1wpr
сообщение Dec 13 2012, 14:55
Сообщение #6


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

Группа: Участник
Сообщений: 98
Регистрация: 20-06-05
Пользователь №: 6 150



Цитата(rezident @ Dec 13 2012, 14:55) *
"Не читал использовал, но осуждаю!" sm.gif Потому, что (см. первое предложение из моего предыдушего топика).
Как раз большинство периферийных регисторов после сброса принимают конкретное состояние. И это становится проблемой для программиста, если он заранее надеется на default state. Поэтому я уже давно всем подряд советую использовать полную и явную инициализацию всех используемых регистров и не использовать маски, накладываемые на значения "по-умолчанию" (получаемые после сброса), как это часто встречается в примерах от TI.
+100500
Многие ругают либы от STM. А ведь там для каждого периферийного узла есть функция DeInit(). И ее рекомендуют применять достаточно безусловно. Эти функции приводят в исходное (дефолтовое) состояние всех регистров периферии принудительно. Очень полезное действо. И не надо хвалится, мол я подобный инит на три байта короче напишу, чем эти индусы....
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Dec 14 2012, 02:54
Сообщение #7


Местный
***

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



Как я понимаю, замечание про написание кода на три байта короче, чем какие-то индусы, относится ко мне sm.gif Дело не только в регистрах периферии и их дефолтном состоянии после сброса. Я думаю, что намного удобнее написать программу, отладить здесь же, в компьютере, и только потом приступать к монтажу самого устройства. Поэтому я и занялся поиском симулятора.
Go to the top of the page
 
+Quote Post
novchok
сообщение Dec 15 2012, 18:36
Сообщение #8


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

Группа: Свой
Сообщений: 128
Регистрация: 19-08-10
Из: Смоленск
Пользователь №: 58 991



Цитата(d7d1cd @ Dec 14 2012, 06:54) *
Как я понимаю, замечание про написание кода на три байта короче, чем какие-то индусы, относится ко мне sm.gif Дело не только в регистрах периферии и их дефолтном состоянии после сброса. Я думаю, что намного удобнее написать программу, отладить здесь же, в компьютере, и только потом приступать к монтажу самого устройства. Поэтому я и занялся поиском симулятора.


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

Сообщение отредактировал novchok - Dec 15 2012, 18:37


--------------------
Herz укроп и педрила
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 15 2012, 19:25
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(novchok @ Dec 15 2012, 23:36) *
симуляторы всегда полное фуфло и никогда не заменят реальной микросхемы
Ну почему же так уж принципиально? sm.gif Симулятор вполне пригодная вещь, чтобы проверить работу алгоритма частей программы, не привязанных жестко к "железу" МК. Но для этого нужно уметь разбивать программу на (под)уровни и выделять из них хотя бы HAL (Hardware Application Layer).
Не так давно симулятор помог нам с коллегой найти багу, возникшую при переносе исходника программы (как раз непосредственно с периферией не взаимодействующую) с ARM7 на MSP430. Бага возникала при неявном преобразовании типов данных. Причиной возникновения оказался неверно выбранный предыдущим программистом для группы переменных тип данных (unsigned short vs signed int).
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Dec 15 2012, 21:04
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(novchok @ Dec 15 2012, 20:36) *
И поскольку никто никогда не верит в чужой опыт, Вам скорее придется потратить полгода жизни, чтобы осознать, что симуляторы всегда полное фуфло и никогда не заменят реальной микросхемы. Могу только пожелать удачи.

Ну зачем же так категорично? нужно просто уметь их готовить и читать сопроводительную документацию, там, как правило, все отличия от железа должны быть описаны.
Я не буду вспоминать те затертые времена, когда флэша не было, а ультрафиолет стирал не мгновенно, это прошлый век. Но отладить сложный алгоритм или формулу, проконтролировать качество вычисления и работоспособность при ситуациях, в реале критических или крайне редких, но легко иммитируемых в симуляторе- это большой плюс и куча сэкономленного времени. Особенно когда железо или реальное окружение не доступно.
Go to the top of the page
 
+Quote Post
novchok
сообщение Dec 16 2012, 05:18
Сообщение #11


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

Группа: Свой
Сообщений: 128
Регистрация: 19-08-10
Из: Смоленск
Пользователь №: 58 991



можно поспорить конечно, не буду.

Сообщение отредактировал novchok - Dec 16 2012, 08:07


--------------------
Herz укроп и педрила
Go to the top of the page
 
+Quote Post
maksimp
сообщение Dec 16 2012, 07:31
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(rezident @ Dec 15 2012, 22:25) *
, чтобы проверить работу алгоритма частей программы, не привязанных жестко к "железу" МК. Но для этого нужно уметь разбивать программу на (под)уровни и выделять из них хотя бы HAL (Hardware Application Layer).

Если HAL выделить, то всё остальное кроме него можно скомпилировать как .exe под Windows и отлаживать алгоритмы. Нужен конечно программный модуль который замещает собой HAL для работы под Windows, с функцией main или WinMain. То есть например вместо вывода по UART данные пишутся в файл, вместо вывода в порт общего назначения значения битов рисуются в окне приложения и т.д.
Симулятор не нужен.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 16 2012, 08:21
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(maksimp @ Dec 16 2012, 10:31) *
Если HAL выделить ...
Симулятор не нужен.

Сам так делал 20 лет назад под DOS, для 80186.
Но теперь то зачем, если практически любая среда обеспечивает удобную отладку?
Да и отладка нужна только на первоначальном этапе, до запуска на МК средств общения с окружающим миром.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 16 2012, 18:30
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(maksimp @ Dec 16 2012, 12:31) *
Если HAL выделить, то всё остальное кроме него можно скомпилировать как .exe под Windows и отлаживать алгоритмы.
...
Симулятор не нужен.

В описанном мною случае один и тот же кусок исходника, скомпилированный в Borland C++, MSVC, IAR EWARM и IAR EW430, давал разный результат вычислений. Все дело было в волшебных пузырьках неявном приведении к разным типам данных (integer promotion). Тип int на x86, на ARM и на MSP430 вовсе не одинаковой разрядности. Так что симулятор иногда бывает нужен wink.gif
Go to the top of the page
 
+Quote Post
juvf
сообщение Feb 15 2013, 08:50
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(rezident @ Dec 17 2012, 00:30) *
В описанном мною случае один и тот же кусок исходника, скомпилированный в Borland C++, MSVC, IAR EWARM и IAR EW430, давал разный результат вычислений. Все дело было в волшебных пузырьках неявном приведении к разным типам данных (integer promotion). Тип int на x86, на ARM и на MSP430 вовсе не одинаковой разрядности. Так что симулятор иногда бывает нужен wink.gif

не нужно ни когда использовать int, short, long и т.п., по крайней мере когда пишешь для мк. Нужно использовать типы из <stdint.h>, такие как uint8_t, int16_t, int32_t. Будет тогда идентичный результат вычислений. тогда даже избежишь проблем при запуске программ написанных для win32 собранных(запущенных) в win64

ps Даже с чаром проблемы. хоть чар он и в африке 8 бит. но я обычно использую char = signed char. Но, например в иар, по умолчанию стоит галка, что чар есть беззнаковый.
Go to the top of the page
 
+Quote Post

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

 


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


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