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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> FatFs. LPC2388. MCI. Не работает, На какие грабли наступил?
skripach
сообщение Jul 28 2009, 06:30
Сообщение #16


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
А файликом для MCI не поделитесь для FatFs?

А чегож не поделится, поделюсь.
Прикрепленные файлы
Прикрепленный файл  mci2.rar ( 15.29 килобайт ) Кол-во скачиваний: 138
 


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
EXeGLuMATOR
сообщение Jul 29 2009, 05:08
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



Спасибо. Шикарный файлик. smile.gif
Остается прикрутить его к FatFs. И не накосячить... smile.gif
Go to the top of the page
 
+Quote Post
skripach
сообщение Jul 29 2009, 06:27
Сообщение #18


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Пардон, не понял, FatFS и вот это не одно и то же?


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
EXeGLuMATOR
сообщение Jul 29 2009, 06:35
Сообщение #19


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



Да, это одно и то-же. Об этом и речь.
Go to the top of the page
 
+Quote Post
skripach
сообщение Jul 29 2009, 07:41
Сообщение #20


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
Да, это одно и то-же. Об этом и речь.

Так в чем проблема, модуль MCI я выдрал из рабочего проекта где работает именно ФС по ссылке выше, всё должно работать.
По идее вам только файл переименовать с MCI2 на MCI.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
EXeGLuMATOR
сообщение Jul 29 2009, 08:32
Сообщение #21


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



Не совсем. sad.gif
эта файловая система работает по функциям определенным в diskio.h
А именно:
DSTATUS disk_initialize (BYTE);
DSTATUS disk_status (BYTE);
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);
DRESULT disk_ioctl (BYTE, BYTE, void*);

Вот тут-то и приходится извращаться. Поскольку то, что в примере с этой системой работать отказывается.
Go to the top of the page
 
+Quote Post
skripach
сообщение Jul 29 2009, 09:00
Сообщение #22


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Ладно, углубимся...
Смотрим для примера функцию disk_initialize:
Вот эта функция в dickio.c
Код
/*-----------------------------------------------------------------------*/
/* Initialize a Drive                                                    */

DSTATUS disk_initialize (BYTE drv)        /* Physical drive nmuber (0..) */
{
    if ( drv != 0 ) return STA_NOINIT;

    if ( MCI_disk_initialize() ) {
        // error occured
        Stat |= STA_NOINIT;
        power_off();
    }
    else {
        Stat &= ~STA_NOINIT;
        // cardtype mci.h to chan cardtype - (maybe redundant)
        switch ( MCI_CardType ) {
        case SDHC_CARD :
      TERMf((tbuf,TXT("\r\nCardType-SDHC")));
            CardType = 4;
            break;
        case MMC_CARD :
      TERMf((tbuf,TXT("\r\nCardType-MMC")));
            CardType = 1;
            break;
        case SD_CARD :
      TERMf((tbuf,TXT("\r\nCardType-SD")));
            CardType = 2;
            break;
        default :
      TERMf((tbuf,TXT("\r\nCardType-0")));
            CardType = 0;
        }
    }
    
    return Stat;
}

Видим что из функции disk_initialize вызывается только одна функция MCI_disk_initialize которая и находится в пристёгнутом архиве выше.
Цитата
Поскольку то, что в примере с этой системой работать отказывается.

Разумеется что-то может и не заработать из примера, но есть же отладчик и терминал.
Ещё раз повторяю модуль MCI выдрал из РАБОЧЕГО проекта.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
EXeGLuMATOR
сообщение Jul 29 2009, 10:05
Сообщение #23


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



Да, все верно. Но... Дело в том, что в том архиве нету такой функции. В пристегнутом файле mci2.c такой функции нету. unsure.gif
Оно все похоже лежит в другом файлике.
Go to the top of the page
 
+Quote Post
EXeGLuMATOR
сообщение Jul 29 2009, 11:08
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



В общем все заработало.
Всем спасибо за помощь. smile.gif
Просто в комплекте от мистера Чана идут не совсем корректные, IMHO, примеры под LPC.
Взял пример от Мартина Томаса
вот здесь
малость переработал и собсно все заработало. Довести до ума осталось, но в целом вроде все работает. Будем посмотреть.
Надеюсь кому-нибудь пригодится это все.
Go to the top of the page
 
+Quote Post
skripach
сообщение Jul 29 2009, 11:21
Сообщение #25


■ ■ ■ ■
*****

Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443



Цитата
Дело в том, что в том архиве нету такой функции.

Каюсь, не искал её там, думал коль её у вас нету то должна быть там. Рад что у вас всё заработало.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Jul 29 2009, 13:22
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата(EXeGLuMATOR @ Jul 29 2009, 16:08) *
В общем все заработало.
Всем спасибо за помощь. smile.gif
Просто в комплекте от мистера Чана идут не совсем корректные, IMHO, примеры под LPC.
Взял пример от Мартина Томаса
вот здесь
малость переработал и собсно все заработало. Довести до ума осталось, но в целом вроде все работает. Будем посмотреть.
Надеюсь кому-нибудь пригодится это все.


О! Спасибо за ссылку! Проект сделан под кейловский компилятор - но при компиляции выдает ошибку:

Код
drivers_mthomas\diskio.c(520): error:  #167: argument of type "volatile BYTE *" is incompatible with parameter of type "const void *restrict"


в функции DRESULT disk_read на строчку memcpy(buff, ReadBlock, 512);

как исправить?

Сообщение отредактировал Ivan Kuznetzov - Jul 29 2009, 13:23


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
EXeGLuMATOR
сообщение Jul 29 2009, 17:37
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



Цитата(Ivan Kuznetzov @ Jul 29 2009, 17:22) *
О! Спасибо за ссылку! Проект сделан под кейловский компилятор - но при компиляции выдает ошибку:

Код
drivers_mthomas\diskio.c(520): error:  #167: argument of type "volatile BYTE *" is incompatible with parameter of type "const void *restrict"


в функции DRESULT disk_read на строчку memcpy(buff, ReadBlock, 512);

как исправить?


memcpy(buff, (BYTE*)ReadBlock, 512);
Аналогично и во втором месте, где выдаст такую ошибку.
Go to the top of the page
 
+Quote Post
Ivan Kuznetzov
сообщение Jul 31 2009, 04:04
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 6-02-08
Из: Россия, Екатеринбург
Пользователь №: 34 798



Цитата
memcpy(buff, (BYTE*)ReadBlock, 512);
Аналогично и во втором месте, где выдаст такую ошибку.


Спасибо, подкорректировал, ошибка исчезла! Протестировал исходник на Olimex LPC2378 платке - с карточками до 1 Гб пашет отлично, инициализирует фс-ку и читает файлики с нее biggrin.gif

Но есть один непонятный момент - SDHC карточки инициализировать не хочет, хотя в diskio.c уже есть ветвление на SD/SDHC карты (сохраняет тип в переменную CardType)...

Включил дебаг в diskio.c - обнаружилось, что вываливается на MCI_Check_CID()
Код
MCI DMA enabled
Check_CID failed
Set_Address failed
Send_CSD failed
Select_Card failed
Set_BlockLen failed
Set_BlockLen o.k.
dump_status: Send_Status INVALID_RESPONSE

SELECT Select_Card failed - retry
SELECT timeout changeing to trans
dump_status: Send_Status INVALID_RESPONSE
wait_ready: Send_Status INVALID_RESPONSE
wait_ready: timeout stby or trans
DESELCT timeout waiting trans or stby


Сообщение отредактировал Ivan Kuznetzov - Jul 31 2009, 04:09


--------------------
Разработчик
Go to the top of the page
 
+Quote Post
prgjz
сообщение Jul 31 2009, 13:01
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 3-01-07
Из: Germany
Пользователь №: 24 071



Адаптировал пример к платине Keil MCB2387 - всё работало отлично. В функции MCI_Init() возможно нужно ещё PINSELx для LPC2388 правильно изменить.
Прикрепленные файлы
Прикрепленный файл  lpc2387_chan_mci.zip ( 503.26 килобайт ) Кол-во скачиваний: 101
 
Go to the top of the page
 
+Quote Post
EXeGLuMATOR
сообщение Aug 1 2009, 18:34
Сообщение #30


Частый гость
**

Группа: Свой
Сообщений: 182
Регистрация: 30-01-05
Из: Volgograd
Пользователь №: 2 305



Ну, кому-то наверняка пригодится. smile.gif
Все не самим разбираться. wink.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 18:52
Рейтинг@Mail.ru


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