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

#include "io430x16x.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
int i=10;

return 0;
}

Как я выяснил, переменную i он хранит а регистрах Rx.
Вопрос, как обьявить переменную, расположенную в ОЗУ, ПЗУ.
aaarrr
Цитата(MihailS @ May 29 2008, 09:09) *
Вопрос, как обьявить переменную, расположенную в ОЗУ, ПЗУ.

Код
#include "io430x16x.h"

int i_ram;
const int i_rom;

int main( void )
{
    ...
}
shasik
Цитата(MihailS @ May 29 2008, 08:09) *
Как я выяснил, переменную i он хранит а регистрах Rx.
Вопрос, как обьявить переменную, расположенную в ОЗУ, ПЗУ.


1. То что он хранит I в регистре - повезло. Это проделки компилятора - он не увидел необходимости отводить для нее ячейку памяти. По умолчанию все переменные будут создаваться в ОЗУ, напишите полноценный код и все сами увидите.

2. Переменная в ПЗУ - звучит прикольно, но смысл понятен. Можно через const, а можно просто разместить переменную по определенному адресу, а этот адрес указывает на область ПЗУ, а подробнее смотрите в pdf IAR С Compiler.
MrYuran
совсем не факт, что const обязательно попадёт во флеш.
вот если _flash const - то да.
MihailS
Спасибо.
Есть более общий вопрос.
Каким обазом объявляя переменную, определять в какой тип памяти её размещать?
И что это за штука такая: __data16 ?
rimpocha
Цитата(MrYuran @ May 29 2008, 12:44) *
совсем не факт, что const обязательно попадёт во флеш.
вот если _flash const - то да.

А зачем, пардон, эту переменную пихать в ОЗУ, которая в 30 раз меньше флэша? Компилятор он ведь не дурак.


Цитата(MihailS @ May 29 2008, 13:31) *
Каким обазом объявляя переменную, определять в какой тип памяти её размещать?
И что это за штука такая: __data16 ?

Вот тут все написано:
C:\Program Files\IAR Systems\Embedded Workbench Evaluation 4.0\430\doc\EW430_CompilerReference.pdf
dxp
Цитата(MrYuran @ May 29 2008, 12:44) *
совсем не факт, что const обязательно попадёт во флеш.

const попадет в секцию CONST, которая мапится на физическую память линкером согласно директив, заданных в линкерном скрипте. По умолчанию в MSP430 секция CONST мапится на флешь, т.к. это логично. Но руками можно сделать как угодно.
MihailS
Хорошо! Думаю что не стоит вас мучать мелкими вопросами. Подскажите пожалуйста где можно почитать информацию по размещенюю данных в памяти. Я понимаю, что сразу же предложат почитать EW430_CompileReferens.PDF или подобное - не подайдёт! Я читаю с английского, как первокласник с русского. Очень утомляет выуживать информацию по крупицам. Может гдето есть какая-нибудь документация по IAR на русском?
Dog Pawlowa
Цитата(MihailS @ May 29 2008, 11:16) *
... Очень утомляет выуживать информацию по крупицам. Может гдето есть какая-нибудь документация по IAR на русском?

Я лично не встречал. Без английского программированием на С лучше не заниматься.
rezident
Цитата(MihailS @ May 29 2008, 11:09) *
Как я выяснил, переменную i он хранит а регистрах Rx.
Вопрос, как обьявить переменную, расположенную в ОЗУ, ПЗУ.
Объявить ее как static. Только при этом следует учесть особенности области "видимости" такой переменной. Для размещения во Flash const, как уже выше сказали. Для компилятора for MSP430 этого достаточно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.