Перейти к содержанию
    

Ищу функции работы с SD картой, написанные для KEIL и SAM7

Собираюсь использовать FatFS от Chan.

Как известно эта библиотека представляет собой функции FAT, а низкоуровневые операции с картой предлагает написать самим.

Все что я видел в интернете и на форуме - либо для IAR, либо для WinARM. Попытки подключить их в KEIL и адаптировать ни к чему не привели. Ошибки, которые возникают при компиляции никто внятно прокомментировать не смог.

Может быть кто делал проект на FatFS для KEIL ? Буду признателен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибки, которые возникают при компиляции никто внятно прокомментировать не смог.

Нет, это вы не дали себе труда хоть немного разобраться. Боюсь, что даже с готовым решением будет то же самое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в проекте есть строка __ramfunc void timer0_c_irq_handler(void); ругается на __ramfunc. Что это я знаю, чем заменить это в KEIL - нигде информации не нашел.

Можете подсказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в проекте есть строка __ramfunc void timer0_c_irq_handler(void); ругается на __ramfunc. Что это я знаю, чем заменить это в KEIL - нигде информации не нашел.

Можете подсказать?

вы свою ветку давно смотрели?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CARM давно упразднили.

 

Да... Я просто не читал что там :biggrin:

 

Вот ещё:

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

 

взято отсюда

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лады, сделал.

Ругается на __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;
}

 

Скачал с этого форума. Автор утверждает, что код "на ходу".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ругается на __inline void AT91F_SSC_SetBaudrate (

Сдается мне, что с дефайнами в вашем проекте капитальный бардак.

 

P.S. Я бы советовал вообще выбросить всю lib_BLA-BLA-BLA вместе с ее безмозглым содержимым, но это на будущее.

 

Вот только думаю, будет ли работать, когда доберусь до отладочной платы.

На то он и код "с интернета", чтобы терзаться подобными сомнениями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а куда же без lib_bla-bla-bla? Без нее ругается.

 

в общем код - каша!

принес домой, все компилируется, подключаю библиотеку работы с LCD. Компилятор ругается на святая святых - stdio.h.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а куда же без lib_bla-bla-bla? Без нее ругается.

Ее нехитрое содержимое лучше заменить на написанное руками и головой.

 

в общем код - каша!

Вот именно. И тут уже никто не поможет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Головой... это если с нуля самому.

А что делать если в отладочной плате 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*/ }

имея исходные данные, в правильности которых уверен, было бы намного проще работать руками и думать головой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что делать если в отладочной плате olimex...

Ответ очевиден: не брать исходные данные, в правильности которых не уверены. К неблагонадежному можно отнести 90+% кода, доступного бесплатно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ошибку в 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

 

Ну помогите же мне, я почти у цели!!

Изменено пользователем zheka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дошел вот до каких ошибок:

"... Саня Дрозд дошел до буквы «И» в слове «передовую»." © Стругацкие, «Понедельник начинается в субботу».

Ну помогите же мне, я почти у цели!!

Мне почему-то кажется, что если бы вы не тратили столько времени на написание вопрошающих постов, а просто сели и спокойно подумали, то уже давно бы во всём разобрались.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда Вы пишете

#ifndef RTC_H_

следующей строкой должно быть

#define RTC_H_

чтобы содержимое данного файла не подключалось к проекту дважды

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...