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

 
 
> Примеры IAR4.12
algidim
сообщение Jul 11 2006, 10:38
Сообщение #1


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

Группа: Участник
Сообщений: 160
Регистрация: 5-04-06
Из: Москва
Пользователь №: 15 847



Поставил IAR4.12. А примеров использования компилятора там нет. ( Подскажите откуда их можно скачать.(типа работа с EEPROM, использовани ASM и тд)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
IgorKossak
сообщение Jul 11 2006, 12:19
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Простенькие примеры лежат в папке \avr\tutor.
Более подробно о создании проектов, примеры программирования и пр. можно почитать в документации, в частности в EWAVR_UserGuide.pdf в папке \avr\doc
Go to the top of the page
 
+Quote Post
algidim
сообщение Jul 18 2006, 11:13
Сообщение #3


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

Группа: Участник
Сообщений: 160
Регистрация: 5-04-06
Из: Москва
Пользователь №: 15 847



Господа, подскажите пожалуйста ,
почему при написании просто

#include <ioavr.h>
#include <inavr.h>


int main( void )
{
return 0;
}
В опциях проекта выбираю тип контроллера и генирацию map файла.
При компиляции программы в map файле написано, что программа занимает

38 bytes of CODE memory (+ 50 range fill )
64 bytes of DATA memory
А при компиляции программы:
int main( void )
{

unsigned char ind;
ind=10;
while(ind--){PORTD=ind;};

return 0;
}

52 bytes of CODE memory (+ 50 range fill )
64 bytes of DATA memory (+ 1 absolute )

Я непонимаю, почему переменная ind зпнимает столько много памяти, да еще распологается в сегменте кода ?
Помогите пожалуйста разобраться ohmy.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 18 2006, 12:12
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(algidim @ Jul 18 2006, 14:13) *
Я непонимаю, почему переменная ind зпнимает столько много памяти, да еще распологается в сегменте кода ?
Помогите пожалуйста разобраться ohmy.gif
Это шутка такая?
А программа while(ind--){PORTD=ind;}; располагается где же?

переменная объявлена внутри функции (локальная), поэтому размещается в стеке (скорее всего в тех 64 bytes of DATA memory). (+ 1 absolute ) - это PORTD


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
algidim
сообщение Jul 18 2006, 13:47
Сообщение #5


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

Группа: Участник
Сообщений: 160
Регистрация: 5-04-06
Из: Москва
Пользователь №: 15 847



Это не шутка. Я просто новичек. Скажите пожалуйста. Т.е компилятор создает в ОЗУ стек
в даном случае 64 byte и все локальные переменные помещает туда ?
А почему если созбать хоть 1 глобальную переменную размер кода резко повышается, а если больше, то с каждой созданной переменной unsigned char он повышается на 6 byte,а размер данных на 1 byte ?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 18 2006, 14:01
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(algidim @ Jul 18 2006, 16:47) *
Это не шутка. Я просто новичек. Скажите пожалуйста. Т.е компилятор создает в ОЗУ стек
в даном случае 64 byte и все локальные переменные помещает туда ?

Да. Но кроме локальных переменных на стеке хранятся адреса возвратов из подпрограмм и временные переменные (если они нужны компилятору в процессе выполнения кода).
Цитата
А почему если созбать хоть 1 глобальную переменную размер кода резко повышается, а если больше, то с каждой созданной переменной unsigned char он повышается на 6 byte,а размер данных на 1 byte ?
Можно с примерами? Если глобальная переменная инициализирована при объявлении, то необходим код для инициализации и для хранения инициализирующего значения. А если просто
Код
int a, b, c;
int main (int) {
  return 1;
}
и
int a, b, c, d, e, f;
int main (int) {
  return 1;
}
То размер кода должен остаться неизменным.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

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

 


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


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