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

 
 
 
Reply to this topicStart new topic
> Есть вопрос по программе на С, Нужа помощь начинающему
MihailS
сообщение May 29 2008, 05:09
Сообщение #1


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

Группа: Свой
Сообщений: 124
Регистрация: 28-01-08
Из: Красноярск
Пользователь №: 34 493



Написал простейший код:

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

return 0;
}

Как я выяснил, переменную i он хранит а регистрах Rx.
Вопрос, как обьявить переменную, расположенную в ОЗУ, ПЗУ.

Сообщение отредактировал MihailS - May 29 2008, 05:09
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 29 2008, 05:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Код
#include "io430x16x.h"

int i_ram;
const int i_rom;

int main( void )
{
    ...
}
Go to the top of the page
 
+Quote Post
shasik
сообщение May 29 2008, 05:38
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188



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


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

2. Переменная в ПЗУ - звучит прикольно, но смысл понятен. Можно через const, а можно просто разместить переменную по определенному адресу, а этот адрес указывает на область ПЗУ, а подробнее смотрите в pdf IAR С Compiler.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение May 29 2008, 05:44
Сообщение #4


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

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



совсем не факт, что const обязательно попадёт во флеш.
вот если _flash const - то да.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
MihailS
сообщение May 29 2008, 06:31
Сообщение #5


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

Группа: Свой
Сообщений: 124
Регистрация: 28-01-08
Из: Красноярск
Пользователь №: 34 493



Спасибо.
Есть более общий вопрос.
Каким обазом объявляя переменную, определять в какой тип памяти её размещать?
И что это за штука такая: __data16 ?
Go to the top of the page
 
+Quote Post
rimpocha
сообщение May 29 2008, 07:49
Сообщение #6


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

Группа: Свой
Сообщений: 82
Регистрация: 6-03-07
Из: Новосибирск, Seattle
Пользователь №: 25 935



Цитата(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


--------------------
НГТУ, Физико-технический факультет, кафедра Лазерных систем
Go to the top of the page
 
+Quote Post
dxp
сообщение May 29 2008, 08:00
Сообщение #7


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(MrYuran @ May 29 2008, 12:44) *
совсем не факт, что const обязательно попадёт во флеш.

const попадет в секцию CONST, которая мапится на физическую память линкером согласно директив, заданных в линкерном скрипте. По умолчанию в MSP430 секция CONST мапится на флешь, т.к. это логично. Но руками можно сделать как угодно.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
MihailS
сообщение May 29 2008, 08:16
Сообщение #8


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

Группа: Свой
Сообщений: 124
Регистрация: 28-01-08
Из: Красноярск
Пользователь №: 34 493



Хорошо! Думаю что не стоит вас мучать мелкими вопросами. Подскажите пожалуйста где можно почитать информацию по размещенюю данных в памяти. Я понимаю, что сразу же предложат почитать EW430_CompileReferens.PDF или подобное - не подайдёт! Я читаю с английского, как первокласник с русского. Очень утомляет выуживать информацию по крупицам. Может гдето есть какая-нибудь документация по IAR на русском?
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 31 2008, 05:52
Сообщение #9


Гуру
******

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



Цитата(MihailS @ May 29 2008, 11:16) *
... Очень утомляет выуживать информацию по крупицам. Может гдето есть какая-нибудь документация по IAR на русском?

Я лично не встречал. Без английского программированием на С лучше не заниматься.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rezident
сообщение May 31 2008, 13:37
Сообщение #10


Гуру
******

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



Цитата(MihailS @ May 29 2008, 11:09) *
Как я выяснил, переменную i он хранит а регистрах Rx.
Вопрос, как обьявить переменную, расположенную в ОЗУ, ПЗУ.
Объявить ее как static. Только при этом следует учесть особенности области "видимости" такой переменной. Для размещения во Flash const, как уже выше сказали. Для компилятора for MSP430 этого достаточно.
Go to the top of the page
 
+Quote Post

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

 


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


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