zheka 1 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Собираюсь использовать FatFS от Chan. Как известно эта библиотека представляет собой функции FAT, а низкоуровневые операции с картой предлагает написать самим. Все что я видел в интернете и на форуме - либо для IAR, либо для WinARM. Попытки подключить их в KEIL и адаптировать ни к чему не привели. Ошибки, которые возникают при компиляции никто внятно прокомментировать не смог. Может быть кто делал проект на FatFS для KEIL ? Буду признателен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Ошибки, которые возникают при компиляции никто внятно прокомментировать не смог. Нет, это вы не дали себе труда хоть немного разобраться. Боюсь, что даже с готовым решением будет то же самое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба в проекте есть строка __ramfunc void timer0_c_irq_handler(void); ругается на __ramfunc. Что это я знаю, чем заменить это в KEIL - нигде информации не нашел. Можете подсказать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorenja 0 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба в проекте есть строка __ramfunc void timer0_c_irq_handler(void); ругается на __ramfunc. Что это я знаю, чем заменить это в KEIL - нигде информации не нашел. Можете подсказать? вы свою ветку давно смотрели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба в проекте есть строка __ramfunc void timer0_c_irq_handler(void); ругается на __ramfunc. Что это я знаю, чем заменить это в KEIL - нигде информации не нашел. Можете подсказать? Если знаете что это, то могу предложить два варианта замены: 1. #define __ramfunc /* Ничего, поживет и во флеши, нам проект пока собрать надо */ 2. Перед timer0_c_irq_handler написать: #pragma arm section code = "ramfunc", после - #pragma arm section code В области RAM scatter-файла добавить запись * (ramfunc) Ну, минут 20 надо на чтение документации, не больше. вы свою ветку давно смотрели? CARM давно упразднили. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
igorenja 0 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба CARM давно упразднили. Да... Я просто не читал что там Вот ещё: Take a look to the on-line file C:\Keil\ARM\Hlp\RVI.CHM - Embedded Programs - Specific Memory Areas. Example in: C:\Keil\ARM\Examples\RAM_Function взято отсюда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Лады, сделал. Ругается на __inline void AT91F_SSC_SetBaudrate ( Ругается так: "lib_AT91SAM7S64.h(52): error: #77-D: this declaration has no storage class or type specifier" кто-то мне наоборот советовал inline заменить на __inline Я сделал так же как с ramfunc. Компилируется. Но чем чревато отключение inline? Вот только думаю, будет ли работать, когда доберусь до отладочной платы. Биботека MMC.c: static void power_on (void) { // PORTE &= ~0x80; /* Socket power ON */ // for (Timer1 = 3; Timer1; ); /* Wait for 30ms */ // PORTB = 0b10110101; /* Enable drivers */ // DDRB = 0b11000111; // SPCR = 0b01010000; /* Initialize SPI port (Mode 0) */ // SPSR = 0b00000001; } Скачал с этого форума. Автор утверждает, что код "на ходу". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Ругается на __inline void AT91F_SSC_SetBaudrate ( Сдается мне, что с дефайнами в вашем проекте капитальный бардак. P.S. Я бы советовал вообще выбросить всю lib_BLA-BLA-BLA вместе с ее безмозглым содержимым, но это на будущее. Вот только думаю, будет ли работать, когда доберусь до отладочной платы. На то он и код "с интернета", чтобы терзаться подобными сомнениями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба а куда же без lib_bla-bla-bla? Без нее ругается. в общем код - каша! принес домой, все компилируется, подключаю библиотеку работы с LCD. Компилятор ругается на святая святых - stdio.h. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба а куда же без lib_bla-bla-bla? Без нее ругается. Ее нехитрое содержимое лучше заменить на написанное руками и головой. в общем код - каша! Вот именно. И тут уже никто не поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Головой... это если с нуля самому. А что делать если в отладочной плате olimex входы card_presence и card_write_protect это 15 и 25 пины, а в поставляемой производителем же библиотеке: while(((m_pPio->PIO_PDSR) & BIT15)) { /*put your card present event here*/ } //WP - write protect while(((m_pPio->PIO_PDSR) & BIT16)) { /*put your write protect event here*/ } имея исходные данные, в правильности которых уверен, было бы намного проще работать руками и думать головой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба А что делать если в отладочной плате olimex... Ответ очевиден: не брать исходные данные, в правильности которых не уверены. К неблагонадежному можно отнести 90+% кода, доступного бесплатно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 21 мая, 2010 Опубликовано 21 мая, 2010 (изменено) · Жалоба Ошибку в olimex'совском примере исправил, предлагаемые функции запичи и чтения блоков работают. Но это не подходит для FatFS... Ковыряюсь дальше... Так, решил еще раз штурмом взять пример c сайта elm. Дошел вот до каких ошибок: #ifndef RTC_H_ #include <stdint.h> #include <stdbool.h> typedef struct { uint16_t year; /* 1..4095 */ uint8_t month; /* 1..12 */ uint8_t mday; /* 1.. 31 */ uint8_t wday; /* 0..6, Sunday = 0*/ uint8_t hour; /* 0..23 */ uint8_t min; /* 0..59 */ uint8_t sec; /* 0..59 */ uint8_t dst; /* 0 Winter, !=0 Summer */ } RTC_t; //* ОШИБКА rtc.h(15): error: #256: invalid redeclaration of type name "RTC_t" (declared at line 15) int rtc_init(void); bool rtc_gettime (RTC_t*); // ОШИБКА rtc.h(18): error: #147-D: declaration is incompatible with "bool rtc_gettime(RTC_t *)" (declared at line 18) bool rtc_settime (const RTC_t*); // ОШИБКА rtc.h(19): error: #147-D: declaration is incompatible with "bool rtc_settime(const RTC_t *)" (declared at line 19) #endif Ну помогите же мне, я почти у цели!! Изменено 21 мая, 2010 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Дошел вот до каких ошибок: "... Саня Дрозд дошел до буквы «И» в слове «передовую»." © Стругацкие, «Понедельник начинается в субботу». Ну помогите же мне, я почти у цели!! Мне почему-то кажется, что если бы вы не тратили столько времени на написание вопрошающих постов, а просто сели и спокойно подумали, то уже давно бы во всём разобрались. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Когда Вы пишете #ifndef RTC_H_ следующей строкой должно быть #define RTC_H_ чтобы содержимое данного файла не подключалось к проекту дважды Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться