Krys 2 28 октября, 2014 Опубликовано 28 октября, 2014 · Жалоба Здравствуйте. Посоветуйте плиз по работе с файлами на CompactFlash на SP605 борде. Есть готовые функции по чтению/записи файлов на флешке? У себя локально по этим путям: c:\Xilinx\14.7\ISE_DS\EDK\sw\XilinxProcessorIPLib\drivers\sysace_v2_00_a\ я нашёл только, что тут функции умеют лишь доступ к блокам (ну или секторам?). Поднимать ФАТ16 вручную не хочется. Может уже всё готовое есть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 28 октября, 2014 Опубликовано 28 октября, 2014 · Жалоба Нарыл тут http://www.xilinx.com/support/documentatio..._3/oslib_rm.pdf (стр. 156), что мне нужна библиотека LibXil FFS. Как такое подключается? Попробовал прописать в исходник хедеры, указанные в табличке, - не видит таких. Вот даже примерчик нарыл по использованию int main() { xil_printf("\n\r Hello \n\r"); const char *file="test.txt"; const char*mode="w"; SYSACE_FILE *ps; ps=sysace_fopen (file, mode); if(ps==NULL) xil_printf(" FILE OPEN FAILED !!! \n\r"); else { xil_printf(" FILE OPEN SUCCESSFULL !!! \n\r"); sysace_fclose (ps); } return 0; } Но у меня эти функции не видятся, ошибку даёт, что не знает таких. Как сделать, чтобы он их увидел? Вот даже советуют You can refer to ML40x, ML50x board BSB example design; there is a testfats software application available which demos the basic usage of the Xilfatfs library.Но как этот пример выколупать я так и не понял. Может кто знает решение. Поскольку я во встраиваемых процессорных системах новичок, то мои вопросы могут иметь элементарное решение )) Но я увы его не знаю. Всё, по крайней мере с последним вопросом разобрался. Чтобы это всё увиделось нужно: 1. В EDK в Project Explorer нажать правой кнопкой на [имя вашего проекта]_BSP, выбрать Board Support Package Settings и поставить галочки напротив xilfatfs и xilflash, а в исходнике прописать #include "sysace_stdio.h" Вот тут ещё крупица информации, где эти библиотеки находятся локально: http://www.xilinx.com/support/answers/45479.html Там я нашёл и доку на использование функций. Теперь думаю дело попрёт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 8 декабря, 2014 Опубликовано 8 декабря, 2014 · Жалоба Внезапно появились проблемы с чтением флешки по указанным выше функциям. Даю команду bytes_read_x = sysace_fread(x_buf, 1, sizeof(x_buf), ps); Она может выполняться до бесконечности. Нажимаю на паузу, смотрю, где застряла - почти всегда застревает на функции XSysAce_WaitForLock(BaseAddress): int XSysAce_ReadSector(u32 BaseAddress, u32 SectorId, u8 *BufferPtr) { int NumRead; // Request and wait for the lock XSysAce_WaitForLock(BaseAddress); ... Буквально на прошлой неделе всё работало, тут ни с того ни с сего перестало. Из изменений в прошивке - добавил только новые сигналы к Chipscope Analyzer и пересобрал. Больше ничего... Получается, что не может получить монопольный доступ к флешке... Кто-нибудь сталкивался с таким? Как лечить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 8 декабря, 2014 Опубликовано 8 декабря, 2014 · Жалоба немного локализовал проблему: причина в длине файлов (несколько МБ), точнее в длине считывания. Если поставить 256 байтов на считывание - то не подвисает. Но и прошивка как-то влияет: на прошлой прошивке любая длина считывания не подвисает. Текущую прошивку на всякий случай пересобрал 2й раз - не помогло. Тайминги все выполняются, это тестовая борда SP-605 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 10 декабря, 2014 Опубликовано 10 декабря, 2014 · Жалоба Короче за этим доступом к файлам флешки нужен глаз да глаз. То не виснет, но считывает, а внутри где-то ошибки. Намучился. Пришлось городить контрольную сумму. И, если не сошлось, считывать заново... Пока такой workarround. Как просто вылечить -не нашёл, просто обошёл. Этим удовлетворился, больше копать не буду, пока такого решения достаточно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться