Артём__ 0 26 июля, 2012 Опубликовано 26 июля, 2012 · Жалоба А у меня не появляются :( А совместим ли ваш eclipse с EmbSys? B выбран ли тип процессора? Скажите, а как у вас с отладкой шаблонного кода? Вроде нормально было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mbzyab 0 26 июля, 2012 Опубликовано 26 июля, 2012 · Жалоба А совместим ли ваш eclipse с EmbSys? B выбран ли тип процессора? А бог его знает. Версия эклипса - 3,7, но на сайте плагина написано только о проблемах версий старше 3,6 в сочетании с GDB (который я не использую). Тип процессора выбран, без этого структуру регистров было бы не видно вообще (и ошибка выдавалась). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 30 июля, 2012 Опубликовано 30 июля, 2012 · Жалоба Давно хотел спросить. Эклипса ругается на макрос: off(PIN_OUTPUT); пишет: Invalid use of macro pasting in macro: _clrL. Макрос объявлен так: #define _clrL(port,bit,val) PDR##port##_P##port##bit##=1 #define _clrH(port,bit,val) PDR##port##_P##port##bit##=0 #define _clr(port,bit,val) _clr##val(port,bit,val) Макрос рабочий, проверенный. Что в нём не нравится эклипсе? ЗЫ. PIN_OUTPUT определён так: #define PIN_OUTPUT 1, 4, L Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 31 июля, 2012 Опубликовано 31 июля, 2012 · Жалоба Короче, вот так заработало: #define _clrL(line) line=1 #define _clrH(line) line=0 #define _clr(port,bit,val) _clr##val(PDR##port##_P##port##bit) #define off(x) _clr(x) Что эклипсе не нравилось - так и не понял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 31 июля, 2012 Опубликовано 31 июля, 2012 · Жалоба Что эклипсе не нравилось - так и не понял.Возможно - последние ## после bit Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mbzyab 0 31 июля, 2012 Опубликовано 31 июля, 2012 · Жалоба Забил на кейловский плагин (раз уж, видимо, кейл генерирует такой map-файл по которому потом шаблонный код криво виден). Поднял отладку на yagarto с отладчиком j-link. Новая проблема - программа не останавливается в main (точнее, не доходит). Вишу в hard_fault_handler (при этом установлены биты STKERR и IMPRECISERR регистра BFSR - не совсем понятно, с чего это вдруг). Все настройки для debug conftiguartion брал с сайта yagarto. (Чтобы увидеть этот регистр, кстати говоря, пришлось в xml для EmbSys Registers ручками прописать его адрес, из коробки нема) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 31 июля, 2012 Опубликовано 31 июля, 2012 · Жалоба Возможно - последние ## после bit Точно! А фуджиковый препроцессор нормально это съедал. Интересно, кто из них прав? :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Canzo 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба Подскажите гуру, почему при компиляции в Эклипс в хэдере класа не узнает тип namespace? Выдает: ./Include/dInput_hw.hpp:54:1: error: unknown type name 'namespace' PS: ранее проект компилился в IAR, синтаксис должен быть правильный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба Код покажи... Навскидку, может быть расширение файла .c и вызывается gcc? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Canzo 0 10 августа, 2012 Опубликовано 10 августа, 2012 (изменено) · Жалоба //******************************************************************************** ***************** //* Discrete Input //* ARM AT91SAM7X128 Serial I/O Low Level Driver //******************************************************************************** ************************* #if !defined(_dInput_hw_hpp_) #define _dInput_hw_hpp_ //******************************************************************************** ************************* //* CONFIGURATION CONSTANTS //******************************************************************************** ************************* #define IN0 (AT91C_PIO_PB27) #define IN1 (AT91C_PIO_PB28) #define IN2 (AT91C_PIO_PB29) #define IN3 (AT91C_PIO_PB30) #define IN4 (AT91C_PIO_PA8) #define IN5 (AT91C_PIO_PA9) #define IN6 (AT91C_PIO_PA10) #define IN7 (AT91C_PIO_PA11) #define IN8 (AT91C_PIO_PA12) #define IN9 (AT91C_PIO_PA13) #define IN10 (AT91C_PIO_PA14) #define IN11 (AT91C_PIO_PA15) #define IN12 (AT91C_PIO_PA16) #define IN13 (AT91C_PIO_PA17) #define IN14 (AT91C_PIO_PA18) #define IN15 (AT91C_PIO_PB9) #define INB_MASK (IN0 | IN1 | IN2 | IN3 | IN15) #define INA_MASK (IN4 | IN5 | IN6 | IN7 | IN8 | IN9 | IN10 | IN11 | IN12 | IN13 | IN14) #define _Nbr_dIn_Ports_ (16) // Количество входов в блоке дискретных входов #define Nbr_dIn_Ports_Max (_Nbr_dIn_Ports_) /* ******************************************************************************** ************************* * FUNCTION PROTOTYPES ******************************************************************************** ************************* */ /* ******************************************************************************** ************************* * CLASS DEFINITION ******************************************************************************** ************************* */ namespace nm_dInput { class CdInput { public: CdInput(void); // конструктор ~CdInput(void); // деструктор s8 dInput_Cfg (void); // конфигурирование порта ввода s8 Init (void); // инициализация (полная перезагрузка) s8 ReInit (void); // переинициализация (частичная перезагрузка без перебоя в работе) s8 Update (void); // считывание и обработка данных принимаемых блоками дискретных входов s32 Get_Sts (u8 Addr) const; // считывание буфера дискретного входа s8 Get_EvntFlag (void); // считывание флага изменения состояния на входе private: u8 Nbr_dIn_Ports; // Количество входов в блоке дискретных входов u32 dIn_In [Nbr_dIn_Ports_Max]; // Массив считанных данных со входов блоков u32 dIn_Buf [Nbr_dIn_Ports_Max]; // Буферный массив считанных данных со входов блоков u32 dIn_Sts [Nbr_dIn_Ports_Max]; // Массив обработанных данных со входов блоков u8 dIn_Cnt [Nbr_dIn_Ports_Max]; // Массив счетчиков числа считываний входа u8 dIn_EvntFlag; // Флаг изменения на входе bool WE; // разрешение работы с экземляром класса - устанавливается если произведена инициализация }; extern CdInput dInput; // объявление глобальной переменной } #endif Компилятор Yagarto gcc arm-none-eabi-g++ Изменено 10 августа, 2012 пользователем IgorKossak [codebox]для длинного кода!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба ну попробуй сделать проект из одного файл main.cpp: namespace N {} class C {}; int main() { return 0; } :bb-offtopic: комментарии типа CdInput(void); // конструктор ~CdInput(void); // деструктор просто супер полезны ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Canzo 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба С одним main нормально. Грешен. И даже с классом в main.hpp в namespace {...} нормально. Видимо где-то в проекте накосячил при переносе :cranky: По поводу комментариев согласен - наследие предков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба Поисключай лишнее. Может предыдущий include включает что-то кривое... Или может все таки режим компиляции C, а не С++ для того файла, при компиляции которого вылезает ошибка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Canzo 0 10 августа, 2012 Опубликовано 10 августа, 2012 · Жалоба Буду пробовать. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aaron 1 13 августа, 2012 Опубликовано 13 августа, 2012 · Жалоба я в такие файлы, где есть дефайны и для C, и для C++ файлов, всегда ставлю #ifdef __cplusplus. И проблемы бы не возникло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться