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

 
 
> Пару вопросов по IAR AVR
SZ0
сообщение Mar 14 2009, 19:44
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Компилятор 5.11

1.
В файле var.h

Код
typedef union
{
unsigned char f4_b;
struct
{
  unsigned char start1:1;           //0 - клавиша отжата, 1 - нажата
  unsigned char stop1:1;
  unsigned char block1:1;
  unsigned char start2:1;
  unsigned char stop2:1;
  unsigned char block2:1;
  unsigned char start3:1;
  unsigned char stop3:1;
};
}flag4;

extern flag4 f4;


В файле var.c

Код
flag4 f4;


При обращении к флагам f4.start1 = 1 компилятор пишет Error[Pe134]: expected a field name
Если убрать 1 в конце названия флага в описании типа (start:1) и обращаться в программе f4.start = 1 то всё нормально. Ещё оказалось если так же в названии типа написать start_1 и в программе обращаться f4.start_1 = 1 то тоже всё замечательно. Чем же компилятору не понравилось название start1? Переменные с цифрами в конце не создают проблем.

2.
После компиляции проекта компилятор выдал: 736 bytes of DATA memory (+ 22 absolute )
При этом все переменные у меня просто не занимают столько памяти! Полез копаться в листингах, там я не шибко силён. Нашёл в файле map следующее:

Код
                ****************************************
                *                                      *
                *            MODULE SUMMARY            *
                *                                      *
                ****************************************

Module               CODE      DATA         XDATA
------               ----      ----         -----
                    (Rel)  (Rel)  (Abs)  (Rel)  (Abs)
?C_STARTUP             36
?EEPROM_16             26
?EPILOGUE_B_L09        18
?FILLER_BYTES           8
  + common            220
?PROLOGUE_L09          10
?RESET
  + common              4
?__exit                 6
?low_level_init         4
?segment_init         128
?xV_SWITCH_L06        192
lcd                   836
  + shared                                          1
main                  617      6      9
  + shared              7             3
tcnt1                 144     11      4
  + common             72
uart                  382      6      6
  + common            220
var                          137           135
N/A (command line)           576
N/A (alignment)
----------          -----    ---     --    ---      -
Total:              2 414    736     22    135      1
  + common            220


Что это за строка - N/A (command line) 576? Откуда эти 576 байт данных могли взяться? cranky.gif

Сообщение отредактировал SZ0 - Mar 14 2009, 19:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SergeyTT
сообщение Mar 14 2009, 22:40
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 3-07-06
Из: Харьков
Пользователь №: 18 533



Я не гуру в программировании,но вот такой код не ругается на номера флагов:

Код
typedef union {
  unsigned char f4_byte;
  struct {
    unsigned char start1: 1;           //0 - клавиша отжата, 1 - нажата
    unsigned char stop1:  1;
    unsigned char block1: 1;
    unsigned char start2: 1;
    unsigned char stop2:  1;
    unsigned char block2: 1;
    unsigned char start3: 1;
    unsigned char stop3:  1;
  }f4_struct;
}flag4;

__C_task void main(void)
{
flag4 f4union;

f4union.f4_byte = 0;
f4union.f4_struct.start1 = 1;
f4union.f4_struct.start1 = 0;
if(f4union.f4_struct.start1 == 0)
  f4union.f4_struct.stop1  = 1;
}//of main()
Go to the top of the page
 
+Quote Post
SZ0
сообщение Mar 16 2009, 07:31
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Цитата(SergeyTT @ Mar 15 2009, 03:40) *
Я не гуру в программировании,но вот такой код не ругается на номера флагов:


Оставил f4.start_1. А то f4union.f4_struct.start1 = 1 слишком длинно писать smile.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 16 2009, 09:00
Сообщение #4


Шаман
******

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



Цитата(SZ0 @ Mar 16 2009, 09:31) *
Оставил f4.start_1. А то f4union.f4_struct.start1 = 1 слишком длинно писать smile.gif

У меня работает без ошибок и с f4.start1. Версия компилятора та же, но с апдейтом iccavr5.12C3. В настройках компилятора указан язык Extended Embedded C++ (в нём допускаются анонимные структуры).
Go to the top of the page
 
+Quote Post
SZ0
сообщение Mar 16 2009, 10:21
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Цитата(IgorKossak @ Mar 16 2009, 14:00) *
Версия компилятора та же, но с апдейтом iccavr5.12C3.


А где скачать апдейт? К местному ресурсу у меня нет доступа.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 16 2009, 13:01
Сообщение #6


Шаман
******

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



Цитата(SZ0 @ Mar 16 2009, 12:21) *
А где скачать апдейт? К местному ресурсу у меня нет доступа.

Я скачивал с ИАРовского сайта после формальной регистрации. Похоже, что уже выкладывался кем-то здесь.
Хотел выложить сюда, не получается, вечером из дому попробую.
Попробуйте также с настройками повозиться.
Go to the top of the page
 
+Quote Post
SZ0
сообщение Mar 16 2009, 15:24
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Цитата(IgorKossak @ Mar 16 2009, 18:01) *
Я скачивал с ИАРовского сайта после формальной регистрации.


На сайте мне не удалось скачать. Т.к. я понял им надо чтобы лицензия была официальная cool.gif . А где копаться в настройках по данной проблеме, я даже на знаю, кроме разве что в MISRA. Но я там... unsure.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 16 2009, 15:27
Сообщение #8


Шаман
******

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



Цитата(SZ0 @ Mar 16 2009, 17:24) *
На сайте мне не удалось скачать. Т.к. я понял им надо чтобы лицензия была официальная cool.gif . А где копаться в настройках по данной проблеме, я даже на знаю, кроме разве что в MISRA. Но я там... unsure.gif

У меня триальная лицензия.
По поводу настроек (компилятора) я имел в виду установить язык Extended Embedded C++.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SZ0   Пару вопросов по IAR AVR   Mar 14 2009, 19:44
- - Непомнящий Евгений   Цитата(SZ0 @ Mar 14 2009, 22:44) Что это ...   Mar 16 2009, 05:20
- - Димитрий   Цитата(SZ0 @ Mar 14 2009, 22:44) При обра...   Mar 17 2009, 05:03
|- - SZ0   Цитата(Димитрий @ Mar 17 2009, 10:03) А в...   Mar 17 2009, 05:15
|- - IgorKossak   Цитата(Димитрий @ Mar 17 2009, 07:03) Сде...   Mar 17 2009, 07:49
|- - SZ0   Цитата(IgorKossak @ Mar 17 2009, 12:49) П...   Mar 17 2009, 09:19
- - IgorKossak   Выкладываю патч, если ещё нужен.   Mar 19 2009, 18:24
|- - SZ0   Цитата(IgorKossak @ Mar 19 2009, 23:24) В...   Mar 24 2009, 11:15
|- - IgorKossak   Цитата(SZ0 @ Mar 24 2009, 13:15) А вот ес...   Mar 24 2009, 13:04
|- - SZ0   Цитата(IgorKossak @ Mar 24 2009, 18:04) О...   Mar 26 2009, 05:26
- - IgorKossak   Скорее всего в Вашем большом проекте имеется конфл...   Mar 26 2009, 09:05


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

 


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


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