Перейти к содержанию
    

Портирование кода для AVR с IAR под GCC

:help: Вобщем после удачной компиляции и прошивки схема перестала работать. Такое впечатление что IAR выполнил какую-то неявную дополнительную настройку или что-то подобное

 

подскажите с чего начать разруливать ситуацию ато в микроконтроллерах я новичок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Такое впечатление что IAR выполнил какую-то неявную дополнительную настройку или что-то подобное
В IAR иначе ("прямее") организована работа с данными в флеш и eeprom. Ищите в коде ключевые слова __eeprom, __flash, читайте WinAVR/DOC/avr-libc/FAQ.html и WinAVR/DOC/avr-libc/index.html.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В IAR иначе ("прямее") организована работа с данными в флеш и eeprom. Ищите в коде ключевые слова __eeprom, __flash, читайте WinAVR/DOC/avr-libc/FAQ.html и WinAVR/DOC/avr-libc/index.html.

 

ключевые слова eeprom && flash заменил на аналоги GCC.

 

кстати пользую не WinAVR а cdk4avr который в частности содержит более свежий GCC

 

ключевые слова eeprom && flash заменил на аналоги GCC.

 

но Это повлияло только на то что прошивки стали влазить во флеш и епром соответсвенно.

 

Пишу для ATMega48

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ключевые слова eeprom && flash заменил на аналоги GCC.

но Это повлияло только на то что прошивки стали влазить во флеш и епром соответсвенно.

Прочитайте FAQ по приведенной мной ссылке в папке документации WinAVR (или где в вашем пакете лежит документация на avr-libc). Замены ключевых слов недостаточно - надо изменить и обращения к таким переменным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кстати пользую не WinAVR а cdk4avr который в частности содержит более свежий GCC

По поиску cdk4avr ссылки на середину 2007 г, а WinAvr 2007-12-20

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По поиску cdk4avr ссылки на середину 2007 г, а WinAvr 2007-12-20
В последних WinAvr gcc 4.x.x - ИМХО не лучший вариант, код больше, оптимизация хуже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В последних WinAvr gcc 4.x.x - ИМХО не лучший вариант, код больше, оптимизация хуже.

Поддерживаю... gcc 4.x.x - редкий sucks

 

а вообшето я поначалу собирался сам скомпилить gcc но потом передумал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а вообшето я поначалу собирался сам скомпилить gcc но потом передумал.
Может стоит собрать gcc 3.4.6 и новые binutils для собственного спокойствия от багов (в cdk4avr вроде 3.4.5).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может стоит собрать gcc 3.4.6 и новые binutils для собственного спокойствия от багов (в cdk4avr вроде 3.4.5).

Если необходимость встанет ребром то придется...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

* Главная проблема была в кривизне прошивки - она не стартовала до получения команды с последовательного порта

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо разместить таблицу с двухбайтными значениями в памяти программ (WINAVR).

Почитал FAQ, конференцию, Яндекс. Написал следующий код.

При трансляции ошибок нет.

Значения с таблицы не считывет.

 

{
unsigned int dac_cod = 0;
const unsigned int *data = table_v;

uint16_t table_v[] = {0xAAAA,0x0600,0x5B00,0x4F00,0x6600,0x6D00,0x7D00,0x0700,0x7F00,0x6F00,0x8000,0x
7D00,0x0700,0x7F00,0x6F00,0xAAAA};

dac_cod =pgm_read_word(data);
}

Где ошибка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значения с таблицы не считывет.

uint16_t table_v[] = {0xAAAA,0x0600,0x5B00,0x4F00,0x6600,0x6D00,0x7D00,0x0700,0x7F00,0x6F00,0x8000,0x
7D00,0x0700,0x7F00,0x6F00,0xAAAA};

Где ошибка?

const uint16_t table_v[] PROGMEM = {0xAAAA,0x0600,0x5B00,0x4F00,0x6600,0x6D00,0x7D00,0x0700,0x7F00,0x6F00,0x8000,0x

7D00,0x0700,0x7F00,0x6F00,0xAAAA};

или

const prog_uint16_t table_v[] = {0xAAAA,0x0600,0x5B00,0x4F00,0x6600,0x6D00,0x7D00,0x0700,0x7F00,0x6F00,0x8000,0x

7D00,0x0700,0x7F00,0x6F00,0xAAAA};

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня была проблема при переходе с ИАР на MSPGCC (под MSP430)

идеальный код, зацепиться не за что.

А в девайсе не работает ни в какую.

Мучался с неделю, пока один старший товарищ не заметил (опыт не пропьёшь!), что ИАР формирует файл прошивки несколько иначе, чем средства GCC.

Проблема была в формате текстового файла (hex,ti-text - не суть)

GCC формирует текстовик в линуховом формате - то есть в конце строки ставится только один символ - 0x0D, в то время как в формате MS(DOS,Win - не важно) положено 2 символа - 0A 0D.

 

А прошивал я старыми привычными средствами.

В результате загрузчик не находил конца строки (0А), а 0D прошивал в процессор, в результате там оказалась полная лажа.

 

Короче, резюме: при использовании GCC загрузчик должен быть соответствующий, либо нужно преобразовывать формат файла прошивки.

 

Не совсем в тему, конечно, речь-то идёт об AVR, но может кому пригодится, чтобы не страдали как я

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На конструкцию

const uint16_t table_v[] PROGMEM =

дает сообщение

* um_mega8.c, line 268: warning: '__progmem__' attribute ignored

 

вторую взял,

Static variable address beyond the RAM limit: table_v -> :0x800060

но с предупреждением

Repeated variable name table_v within block. Rename it

Я, так понимаю, пытается в RAM массив определить.

 

 

 

Короче, резюме: при использовании GCC загрузчик должен быть соответствующий, либо нужно преобразовывать формат файла прошивки.

Спасибо. Прошивать буду AVReal, посмотрю за этим моментом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...