Jump to content

    

Recommended Posts

Привет всем!

Возникла проблема с sd картой. Решил в качестве тестов использовать пример от xilinx (прикрепил файл).

Плата zc702. Беру в sdk пребилд hw_platform для zc702, в bsp ставлю галку на использование библиотеки xilffs, в качестве исходников софта использую этот файл.

По идее, я полагал, что при настолько дефолтных условиях пример должен работать из коробки.
В итоге фэйлится на f_write - возвращает FR_DISK_ERR. После ряда тестирований начало фэйлиться на f_mkfs - возвращает FR_NOT_READY.

Я грешу на то, что SD карта не поддерживается, но линукс с нее стартовал когда-то на этой же плате.

Подскажите пожалуйста, что может быть причиной такого поведения?

P/S Ключ защиты записи на самой карте не стоит, переключатели бута ставил и в положение загрузки с флешки и в положение загрузки по джтаг - это не изменило картины.

xilffs_polled_example.c

Share this post


Link to post
Share on other sites
10 часов назад, Lutovid сказал:

Подскажите пожалуйста, что может быть причиной такого поведения?

а не смущает, что в вашем сишнике в двух местах написано, как должно выглядеть имя файла, типа

* To test logical drive 0, FileName should be "0:/<File name>" or

а у вас

static char FileName[32] = "Test.bin";

и еще - "which is previously formatted with FATFS" - попробуйте в FAT16 раздел отформатировать..

Share this post


Link to post
Share on other sites
10 hours ago, Jury093 said:

а не смущает, что в вашем сишнике в двух местах написано, как должно выглядеть имя файла, типа

* To test logical drive 0, FileName should be "0:/<File name>" or

а у вас

static char FileName[32] = "Test.bin";

и еще - "which is previously formatted with FATFS" - попробуйте в FAT16 раздел отформатировать..

там написано

* To test with different logical drives, drive number should be mentioned in

* both FileName and Path variables. By default, it will take drive 0 if drive
* number is not mentioned in the FileName variable.
Раз я тестирую SD0, то по идее не нужно задавать имя "0:/Test.bin"

А Path указан корректно

    TCHAR *Path = "0:/";

Я отформатировал с компа sd под fat32. Надо попробовать fat16, но мне как-то это не пришло в голову, раз не написано какой fat

Share this post


Link to post
Share on other sites
42 минуты назад, Lutovid сказал:

там написано

* To test with different logical drives, drive number should be mentioned in

* both FileName and Path variables. By default, it will take drive 0 if drive
* number is not mentioned in the FileName variable.
Раз я тестирую SD0, то по идее не нужно задавать имя "0:/Test.bin"

А Path указан корректно

    TCHAR *Path = "0:/";

Я отформатировал с компа sd под fat32. Надо попробовать fat16, но мне как-то это не пришло в голову, раз не написано какой fat

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

ок, вот там https://stackoverrun.com/ru/q/11764100 подобную проблему решали шаманскими способами

уменьшением емкости uSD и введением задержки

полагаю, что вышеприведенная функция main() вызывается после инита контроллера MMC/SD в zynq и сделаны начальные обращения к uSD, и кстати, если попробовать чтение сектора или файла, то работает?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this