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

 
 
> Портирование кода для 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
 
Start new topic
Ответов
gte
сообщение Mar 24 2008, 12:44
Сообщение #2


Гуру
******

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



Решение оказалось весьма простым.
Нельзя вставлять определение такого массива в тело main.
Как только я вынес определение из main в начало файла, все стало на свои места.

Может кто дать комментарии к оставшимся мообщениям?

Converting to AVR COFF: um1.cof
avr-objcopy --debugging --change-section-address .data--и т.д.
Warning: no "data" section found in output file
Warning: file C:/WINDOWS/TEMP/cciw0ld7.s not found in symbol table, ignoring
Warning: ignoring function __vectors() outside any compilation unit
Warning: ignoring function __bad_interrupt() outside any compilation unit
c:\winavr\bin\avr-objcopy.exe: --change-section-vma .eeprom+0xff7f0000 never used

и еще 5 предупреждений.
Go to the top of the page
 
+Quote Post
cvv
сообщение Mar 24 2008, 12:50
Сообщение #3


Участник
*

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



Цитата(gte @ Mar 24 2008, 14:44) *
Решение оказалось весьма простым.
Нельзя вставлять определение такого массива в тело main.
Как только я вынес определение из main в начало файла, все стало на свои места.


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

Сообщение отредактировал cvv - Mar 24 2008, 12:51
Go to the top of the page
 
+Quote Post
gte
сообщение Mar 24 2008, 15:46
Сообщение #4


Гуру
******

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



Цитата(cvv @ Mar 24 2008, 15:50) *
скорее всего его надо было пометить как static так как любые массивы обьявленные без статик внутри ф-и располаются *исключительно* в стеке а ты хотел во флеш.


Попробовал.
На PROGMEM не ругается, но пишет
Repeated variable name table_v within block. Rename it
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 24 2008, 16:35
Сообщение #5


Гуру
******

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



Цитата(gte @ Mar 24 2008, 17:46) *
На PROGMEM не ругается, но пишет
Тяжело телепатировать после выходных у тещи. Выложите минимальный исходник, в котором возникает предупреждение.


--------------------
На любой вопрос даю любой ответ
"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
gte
сообщение Mar 25 2008, 18:43
Сообщение #6


Гуру
******

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



Цитата(Сергей Борщ @ Mar 24 2008, 19:35) *
Тяжело телепатировать после выходных у тещи. Выложите минимальный исходник, в котором возникает предупреждение.

Код
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>

const uint16_t table_v[] PROGMEM = {0xAAAA,0xAAAA,0x0000,0xAAAA,0x0000,0xAAAA,0x0000,0xAAAA,0x0000,0xAAAA,0x0000,0x
AAAA,0x0000,0xAAAA,0x0000,0x0000};

int  main (void)
{
//const  uint16_t table_v[] PROGMEM = {0xAAAA,0xAAAA,0x0000,0xAAAA,0x0000,0xAAAA,0x0000,0xAAAA,0x0000,0xAAAA,0x0000,0x
AAAA,0x0000,0xAAAA,0x0000,0x0000};
const unsigned int *data = table_v;
const unsigned int *dat_car;

while (0)
        {
           dat_car = data;
        }
}


В main пробовал разные варианты, не проходило, вынес работает.

Цитата(gte @ Mar 24 2008, 15:44) *
Может кто дать комментарии к оставшимся мообщениям?

Converting to AVR COFF: um1.cof
avr-objcopy --debugging --change-section-address .data--и т.д.
Warning: no "data" section found in output file
Warning: file C:/WINDOWS/TEMP/cciw0ld7.s not found in symbol table, ignoring
------------

пропадают если выйти и снова запустить VMLAB.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 25 2008, 22:38
Сообщение #7


Гуру
******

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



Переменные, объявленные вами внутри функции (автоматические переменные), размещаются на стеке. Вы же пытаетесь заставить компилятор разместить переменную во флеш. Но это нонсенс - она не может быть одновременно и на стеке и во флеше. Если вы хотите, чтобы переменная была во флеше и ее область видимости была ограничена функцией, то объявлять эту переменную внутри функции надо с атрибутом static:
Код
int  main (void)
{
    static const  uint16_t table_v[] PROGMEM =
Цитата(gte @ Mar 25 2008, 20:43) *
Код
const unsigned int *data = table_v;
const unsigned int *dat_car;

while (0)
        {
           dat_car = data;
        }
}
Здесь вы объявили указатель на int в ОЗУ. К большому сожалению, avr-gcc не отслеживает смешивание обычных указателей и указателей на флеш, хотя фактически это разные указатели sad.gif Т.е. то, что вы написали, avr-gcc проглотит, но не забудьте потом данные по этому указателю доставать при помщи pgm_read_xxx, а не *data. Лучше такие указатели сразу объявлять как const unsigned int PROGMEM *dat_car; - вам самому потом будет легче читать программу. А когда avr-gcc научится отличать указатели на флеш от указателей на ОЗУ - не придется править старые исходники.


--------------------
На любой вопрос даю любой ответ
"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   Портирование кода для AVR с IAR под GCC   Feb 3 2008, 11:17
- - Сергей Борщ   Цитата(cvv @ Feb 3 2008, 13:17) Такое впе...   Feb 3 2008, 11:27
|- - cvv   Цитата(Сергей Борщ @ Feb 3 2008, 13:27) В...   Feb 3 2008, 11:43
|- - Сергей Борщ   Цитата(cvv @ Feb 3 2008, 13:43) ключевые ...   Feb 3 2008, 13:32
|- - mdmitry   Цитата(cvv @ Feb 3 2008, 14:43) кстати по...   Feb 3 2008, 21:38
- - 733259   ЦитатаПо поиску cdk4avr ссылки на середину 2007 г,...   Feb 4 2008, 06:29
|- - cvv   Цитата(733259 @ Feb 4 2008, 08:29) В посл...   Feb 4 2008, 08:31
- - 733259   Цитатаа вообшето я поначалу собирался сам скомпили...   Feb 4 2008, 10:29
|- - cvv   Цитата(733259 @ Feb 4 2008, 12:29) Может ...   Feb 4 2008, 10:45
- - cvv   * Главная проблема была в кривизне прошивки - она...   Feb 4 2008, 14:45
- - gte   Надо разместить таблицу с двухбайтными значениями ...   Mar 24 2008, 08:21
|- - ReAl   Цитата(gte @ Mar 24 2008, 10:21) Значения...   Mar 24 2008, 08:28
- - MrYuran   У меня была проблема при переходе с ИАР на MSPGCC ...   Mar 24 2008, 08:38
- - gte   На конструкцию const uint16_t table_v[] PROGMEM = ...   Mar 24 2008, 09:09
- - xelax   подключи #include <avr/pgmspace.h> Должно ...   Mar 24 2008, 10:03
- - gte   Все стоит в начале файла #include <avr/io.h...   Mar 24 2008, 10:40
|- - mdmitry   Цитата(gte @ Mar 24 2008, 18:46) Попробов...   Mar 24 2008, 17:28
- - gte   Увы, я пробовал разные варианты объявления, в том ...   Mar 26 2008, 05:55
|- - Сергей Борщ   Цитата(gte @ Mar 26 2008, 07:55) Увы, я п...   Mar 26 2008, 10:40
- - gte   Я работал из VMLAB. При компиляции моего примера и...   Mar 26 2008, 16:39
|- - cvv   Цитата(gte @ Mar 26 2008, 18:39) Repeated...   Mar 27 2008, 05:45
- - gte   Repeated variable name table_v within block. Renam...   Mar 27 2008, 06:34
|- - AHTOXA   Цитата(gte @ Mar 27 2008, 11:34) Repeated...   Mar 27 2008, 20:15
- - gte   Да нет, я сразу же вынес, откомпилил и зашил в кон...   Mar 27 2008, 20:41
- - gte   В следующей программе переношу код работы с АЦП. В...   Mar 29 2008, 09:29
|- - Сергей Борщ   Цитата(gte @ Mar 29 2008, 11:29) В следую...   Mar 29 2008, 10:14
- - gte   Так я обнаружил в AVRStudio4. В общем, когда отлаж...   Mar 29 2008, 10:42
|- - Сергей Борщ   Для "дружбы" с AVRStudio естественным яв...   Mar 29 2008, 16:39
- - gte   Спасибо, подключил библиотеку результат положитель...   Mar 29 2008, 22:42


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

 


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


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