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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Портирование кода для AVR с IAR под GCC
cvv
сообщение Feb 3 2008, 11:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 3-02-08
Пользователь №: 34 700



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

подскажите с чего начать разруливать ситуацию ато в микроконтроллерах я новичок
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 3 2008, 11:27
Сообщение #2


Гуру
******

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



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


--------------------
На любой вопрос даю любой ответ
"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
cvv
сообщение Feb 3 2008, 11:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 3-02-08
Пользователь №: 34 700



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


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

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

Цитата(cvv @ Feb 3 2008, 13:41) *
ключевые слова eeprom && flash заменил на аналоги GCC.


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

Пишу для ATMega48
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 3 2008, 13:32
Сообщение #4


Гуру
******

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



Цитата(cvv @ Feb 3 2008, 13:43) *
ключевые слова eeprom && flash заменил на аналоги GCC.
но Это повлияло только на то что прошивки стали влазить во флеш и епром соответсвенно.
Прочитайте FAQ по приведенной мной ссылке в папке документации WinAVR (или где в вашем пакете лежит документация на avr-libc). Замены ключевых слов недостаточно - надо изменить и обращения к таким переменным.


--------------------
На любой вопрос даю любой ответ
"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
mdmitry
сообщение Feb 3 2008, 21:38
Сообщение #5


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(cvv @ Feb 3 2008, 14:43) *
кстати пользую не WinAVR а cdk4avr который в частности содержит более свежий GCC

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


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
733259
сообщение Feb 4 2008, 06:29
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Цитата
По поиску cdk4avr ссылки на середину 2007 г, а WinAvr 2007-12-20
В последних WinAvr gcc 4.x.x - ИМХО не лучший вариант, код больше, оптимизация хуже.
Go to the top of the page
 
+Quote Post
cvv
сообщение Feb 4 2008, 08:31
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 3-02-08
Пользователь №: 34 700



Цитата(733259 @ Feb 4 2008, 08:29) *
В последних WinAvr gcc 4.x.x - ИМХО не лучший вариант, код больше, оптимизация хуже.

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

а вообшето я поначалу собирался сам скомпилить gcc но потом передумал.
Go to the top of the page
 
+Quote Post
733259
сообщение Feb 4 2008, 10:29
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 205
Регистрация: 8-03-05
Пользователь №: 3 146



Цитата
а вообшето я поначалу собирался сам скомпилить gcc но потом передумал.
Может стоит собрать gcc 3.4.6 и новые binutils для собственного спокойствия от багов (в cdk4avr вроде 3.4.5).
Go to the top of the page
 
+Quote Post
cvv
сообщение Feb 4 2008, 10:45
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 3-02-08
Пользователь №: 34 700



Цитата(733259 @ Feb 4 2008, 12:29) *
Может стоит собрать gcc 3.4.6 и новые binutils для собственного спокойствия от багов (в cdk4avr вроде 3.4.5).

Если необходимость встанет ребром то придется...
Go to the top of the page
 
+Quote Post
cvv
сообщение Feb 4 2008, 14:45
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 3-02-08
Пользователь №: 34 700



* Главная проблема была в кривизне прошивки - она не стартовала до получения команды с последовательного порта
Go to the top of the page
 
+Quote Post
gte
сообщение Mar 24 2008, 08:21
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613



Надо разместить таблицу с двухбайтными значениями в памяти программ (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);
}

Где ошибка?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 24 2008, 08:28
Сообщение #12


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(gte @ Mar 24 2008, 10:21) *
Значения с таблицы не считывет.
Код
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};


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 24 2008, 08:38
Сообщение #13


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

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



У меня была проблема при переходе с ИАР на MSPGCC (под MSP430)
идеальный код, зацепиться не за что.
А в девайсе не работает ни в какую.
Мучался с неделю, пока один старший товарищ не заметил (опыт не пропьёшь!), что ИАР формирует файл прошивки несколько иначе, чем средства GCC.
Проблема была в формате текстового файла (hex,ti-text - не суть)
GCC формирует текстовик в линуховом формате - то есть в конце строки ставится только один символ - 0x0D, в то время как в формате MS(DOS,Win - не важно) положено 2 символа - 0A 0D.

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

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

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


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


Гуру
******

Группа: Свой
Сообщений: 2 318
Регистрация: 13-02-05
Из: Липецкая область
Пользователь №: 2 613



На конструкцию
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 массив определить.



Цитата(MrYuran @ Mar 24 2008, 11:38) *
Короче, резюме: при использовании GCC загрузчик должен быть соответствующий, либо нужно преобразовывать формат файла прошивки.

Спасибо. Прошивать буду AVReal, посмотрю за этим моментом.
Go to the top of the page
 
+Quote Post
xelax
сообщение Mar 24 2008, 10:03
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



подключи
#include <avr/pgmspace.h>

Должно всё быть ок.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 13:06
Рейтинг@Mail.ru


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