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

 
 
 
Reply to this topicStart new topic
> IAR ругается на __farflash
west329_
сообщение Sep 29 2008, 10:36
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Проект изначально писался под мегу128, после отладки программы попытались перейти на другой контроллер а именно мегу162.
Компилятор сразу выругался на обьявленные процедуры

Код
Error[Pa043]: the keyword "__farflash" is not available with the  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 43   current settings   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 125   parameter of type "unsigned char *"   Warning[Pe111]: statement is unreachable E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 221   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 238   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 258   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 262   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 275   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 290   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 314   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 329   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 347   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 356   parameter of type "unsigned char *"   Error[Pe167]: argument of type "char __flash *" is incompatible with  E:\RADIO\IAR4.21A\avr\tutor\Xbox4\main.c 364   parameter of type "unsigned char *"


описание самих процедур выглядит так
Цитата
extern void PrintDebug(unsigned char __farflash stringD[25]);


в сырцах ничего особенного не менялось.

ключ в экстраопциях учтён --string_literals_in_flash

подскажите куда копать ?
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 29 2008, 11:24
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



__farflash - ну так это только для процов с флешом больше чем 64К, каковым и была Mega128.

Так что временно сделайте #define __farflash __flash


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 29 2008, 11:35
Сообщение #3


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

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



Цитата(west329_ @ Sep 29 2008, 14:36) *
Проект изначально писался под мегу128, после отладки программы попытались перейти на другой контроллер а именно мегу162.

Цитата
__farflash - ну так это только для процов с флешом больше чем 64К, каковым и была Mega128.

Да уж, со стороны может показаться, что 162 круче, чем 128...


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


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Благодарю. Всё собралось.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 29 2008, 12:29
Сообщение #5


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Это хорошо, что собралось. Но на будущее лучше сделать какой-нибудь свой тип FLASH (или как хотите назовите), который определять в зависимости от проца. Потому как переопределение встроенных идентификаторов типа препроцессором - это костыль, именно для того, чтобы "всё собралось".


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
west329_
сообщение Sep 29 2008, 12:57
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата
//#define AVRm128
//#define AVRm16
#define AVRm162


#ifdef AVRm128
#include <iom128.h>
#else
#ifdef AVRm16
#include <iom16.h>
#else
#ifdef AVRm162
#include <iom162.h>
#define __farflash __flash
#else
#error "Device not defined!
#endif
#endif
#endif


А можно ли как то компилятору передать тим контроллера, чтоб каждый раз не лазить в опции проекта а там в конфигурацию контроллера, и выбирать их.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 29 2008, 13:11
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Rst7 @ Sep 29 2008, 15:29) *
... Потому как переопределение встроенных идентификаторов типа препроцессором - это костыль, именно для того, чтобы "всё собралось".

А почему, поясните, плз?
Не далее, как сегодня, при переходе с AVR на ARM сделал так
#define __flash
И что мне за это будет?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 29 2008, 13:25
Сообщение #8


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
А можно ли как то компилятору передать тим контроллера, чтоб каждый раз не лазить в опции проекта а там в конфигурацию контроллера, и выбирать их.


Вы бы заглянули в avr/inc/ioavr.h (имеется в виду каталог с установкой иара)
Код
#ifdef  __IAR_SYSTEMS_ICC__
#ifndef _SYSTEM_BUILD
#pragma system_include
#endif
#endif

#if defined(__ATtiny13__)
#include "iotiny13.h"
#elif defined(__AT90S2313__)
#include "io2313.h"
#elif defined(__AT90S2323__)
#include "io2323.h"
#elif defined(__AT90S2333__)
#include "io2333.h"
#elif defined(__AT90S2343__)
#include "io2343.h"
#elif defined(__AT90S4414__)
#include "io4414.h"
#elif defined(__AT90S4433__)
#include "io4433.h"
#elif defined(__AT90S4434__)
....


Да и
Цитата
#include <iom128.h>

и остальные надо заменить на <ioavr.h>, само нужный подключит.

Цитата
А почему, поясните, плз?


Понимаете ли, в принципе, негласно, имена, начинающиеся с двух подчеркиваний отданы на пользование компилятору. Идеологически более правильно определять такие вещи своим модификатором, а его уже делать чем надо при помощи #define. С кросс-платформенностью потом лучше. Хотя ситуацию усугубляет то, что, например, в GCC эти фишки устроены по другому.

Цитата
И что мне за это будет?


Конкретно в IAR и AVR->ARM - ничего.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 30 2008, 06:03
Сообщение #9


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Я вот завел себе некий allcompat.h , в котором пытаюсь утрясти все разночтения путем #ifdef.... #endif Файлик ежедневно пополняеццо по необходимости.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 30 2008, 06:12
Сообщение #10


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Цитата
И что мне за это будет?
Конкретно в IAR и AVR->ARM - ничего.


Кстати, погорячился я насчет "ничего". По науке надо бы на const заменить, если уже не стоит в самом описании.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:09
Рейтинг@Mail.ru


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