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

 
 
> stm32f373 + flash(at25df081) + fatFs
vasilijvs
сообщение Feb 17 2016, 14:15
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 17-02-16
Пользователь №: 90 493



Добрый день, прошу помочь всех знатоков.
Хочу смонтировать раздел с помощью fatfs, возвращает FR_NO_FILESYSTEM, получается флеш не отформатирована под Fat.
Расскажите, каким образом её отформатировать или как добиться успешного выполнения f_mount()?
Вот здесь fResult получает это значение.
Код
FATFS fatFs;
FRESULT fResult;
      
fResult = f_mount(&fatFs, "0", 1);


Сообщение отредактировал vasilijvs - Feb 17 2016, 14:15
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
skripach
сообщение Mar 1 2016, 18:19
Сообщение #2


■ ■ ■ ■
*****

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



Отложите fatfs, напишите простенький тест для нижнего уровня (чтение\запись по 512) и найдите там все косяки, их там есть.


--------------------
Делай что должен и будь что будет.
Go to the top of the page
 
+Quote Post
vasilijvs
сообщение Mar 3 2016, 09:42
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 17-02-16
Пользователь №: 90 493



Цитата(skripach @ Mar 1 2016, 21:19) *
Отложите fatfs, напишите простенький тест для нижнего уровня (чтение\запись по 512) и найдите там все косяки, их там есть.

Написал, попробывал, читаю/пишу, всё корректно, но та же проблема.

Привожу полный код diskio.cpp
CODE
#include "diskio.h"
#include "ff_gen_drv.h"
#include "flash.h"
#include "spi.h"

extern Disk_drvTypeDef disk;
extern Spi spi(GPIO_PIN_10, GPIO_PIN_11, GPIO_PIN_12, GPIO_PIN_2);
extern Flash flash(spi);

/**
* @brief Initializes a Drive
* @param pdrv: Physical drive number (0..)
* @retval DSTATUS: Operation status
*/
DSTATUS disk_initialize(BYTE pdrv)
{
DSTATUS stat = RES_OK;

if(disk.is_initialized[pdrv] == 0)
{
disk.is_initialized[pdrv] = 1;
stat = disk.drv[pdrv]->disk_initialize();
}
return stat;
}

/**
* @brief Gets Disk Status
* @param pdrv: Physical drive number (0..)
* @retval DSTATUS: Operation status
*/
DSTATUS disk_status(BYTE pdrv)
{
DSTATUS stat;

stat = disk.drv[pdrv]->disk_status();
return stat;
}

/**
* @brief Reads Sector(s)
* @param pdrv: Physical drive number (0..)
* @param *buff: Data buffer to store read data
* @param sector: Sector address (LBA)
* @param count: Number of sectors to read (1..128)
* @retval DRESULT: Operation result
*/
DRESULT disk_read(BYTE pdrv, BYTE *buff, DWORD sector, BYTE count)
{
DWORD realSector = sector * 512;

flash.readArray(realSector, count * 512, buff);

return RES_OK;
}

/**
* @brief Writes Sector(s)
* @param pdrv: Physical drive number (0..)
* @param *buff: Data to be written
* @param sector: Sector address (LBA)
* @param count: Number of sectors to write (1..128)
* @retval DRESULT: Operation result
*/
#if _USE_WRITE == 1
DRESULT disk_write(BYTE pdrv, const BYTE *buff, DWORD sector, BYTE count)
{
DWORD realSector = sector * 512;

for (int i = 0; i < count; ++i)
{
flash.eraseBlock512(realSector + i * 512);
}

for(int i = 0; i < (count * 2); ++i)
{
uint8_t temp[256];
for(int j = 0; j < sizeof(temp); ++j)
{
temp[j] = buff[i * 256 + j];
}
flash.writeData(realSector + i * 256, sizeof(temp), temp);
}

return RES_OK;
}
#endif /* _USE_WRITE == 1 */

/**
* @brief I/O control operation
* @param pdrv: Physical drive number (0..)
* @param cmd: Control code
* @param *buff: Buffer to send/receive control data
* @retval DRESULT: Operation result
*/
#if _USE_IOCTL == 1
DRESULT disk_ioctl(BYTE pdrv, BYTE cmd, void *buff)
{
DRESULT res = RES_ERROR;

switch (cmd)
{
case CTRL_SYNC:
res = RES_OK;
break;

case GET_SECTOR_COUNT:
*(DWORD*)buff = 2048;
res = RES_OK;
break;

case GET_SECTOR_SIZE:
*(DWORD*)buff = 512;
res = RES_OK;
break;

case GET_BLOCK_SIZE:
*(DWORD*)buff = 512;
res = RES_OK;
break;
}

return res;
}
#endif /* _USE_IOCTL == 1 */

/**
* @brief Gets Time from RTC
* @param None
* @retval Time in DWORD
*/
DWORD get_fattime (void)
{
return 0;
}


Сообщение отредактировал IgorKossak - Mar 4 2016, 13:24
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- vasilijvs   stm32f373 + flash(at25df081) + fatFs   Feb 17 2016, 14:15
- - skripach   Цитата(vasilijvs @ Feb 17 2016, 17:15) по...   Feb 18 2016, 03:56
|- - vasilijvs   Цитата(skripach @ Feb 18 2016, 06:56) А д...   Feb 18 2016, 09:45
- - vasilijvs   Появился следующий вопрос. У меня флешка на 1 Мбай...   Feb 19 2016, 09:52
|- - Сергей Борщ   Цитата(vasilijvs @ Feb 19 2016, 11:52) Ка...   Feb 19 2016, 09:58
|- - vasilijvs   Цитата(Сергей Борщ @ Feb 19 2016, 12:58) ...   Feb 19 2016, 10:48
- - hd44780   Проверьте FаtFs на предмет размера сектора. Может ...   Feb 19 2016, 18:05
|- - vasilijvs   Спасибо,за мнения. Увеличил _MAX_SS, в HardFault ...   Feb 25 2016, 13:50
- - KRS   ЕМНИП в fatfs размер сектора может быть только 512...   Feb 19 2016, 19:42
|- - esaulenka   Цитата(KRS @ Feb 19 2016, 22:42) ЕМНИП в ...   Feb 20 2016, 09:41
- - skripach   Я бы прослоечку сделал для записи/чтения по 512 ба...   Feb 19 2016, 21:04
- - hd44780   if (LD_WORD(&fs->win.d8[BS_55AA]) != 0x...   Feb 25 2016, 16:17
- - vasilijvs   Всем спасибо за советы, сделал по 512 сектор. И де...   Mar 1 2016, 12:34
- - hd44780   Ну надо смотреть, что именно не нравится create_ch...   Mar 3 2016, 13:39
|- - vasilijvs   Цитата(hd44780 @ Mar 3 2016, 16:39) Ну на...   Mar 3 2016, 16:40
- - hd44780   Поглядел Ваш код diskio.c (работа отпустила ) ...   Mar 3 2016, 17:24
|- - vasilijvs   Цитата(hd44780 @ Mar 3 2016, 20:24) Погля...   Mar 3 2016, 17:46
- - romas2010   Цитата(vasilijvs @ Feb 17 2016, 17:15) До...   Mar 3 2016, 18:23
|- - vasilijvs   Цитата(romas2010 @ Mar 3 2016, 21:23) ну ...   Mar 3 2016, 20:41
|- - skripach   Цитата(vasilijvs @ Mar 3 2016, 23:41) ,а ...   Mar 3 2016, 23:04
|- - vasilijvs   Цитата(skripach @ Mar 4 2016, 02:04) Ванг...   Mar 4 2016, 08:11
|- - aaarrr   Цитата(vasilijvs @ Mar 4 2016, 11:11) Чте...   Mar 4 2016, 12:21
|- - vasilijvs   Цитата(aaarrr @ Mar 4 2016, 15:21) А поче...   Mar 4 2016, 12:32
- - aaarrr   Нельзя просто взять и назначить начало блока 4k с ...   Mar 4 2016, 12:44
|- - vasilijvs   Цитата(aaarrr @ Mar 4 2016, 15:44) Нельзя...   Mar 10 2016, 14:15
- - esaulenka   Влезу с рекламой-не-в-тему. Есть такая замечательн...   Mar 9 2016, 11:05


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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 03:21
Рейтинг@Mail.ru


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