Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: посоветуйте плиз по работе с файлами на CompactFlash на SP605 борде
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Krys
Здравствуйте. Посоветуйте плиз по работе с файлами на CompactFlash на SP605 борде. Есть готовые функции по чтению/записи файлов на флешке? У себя локально по этим путям:
c:\Xilinx\14.7\ISE_DS\EDK\sw\XilinxProcessorIPLib\drivers\sysace_v2_00_a\
я нашёл только, что тут функции умеют лишь доступ к блокам (ну или секторам?). Поднимать ФАТ16 вручную не хочется. Может уже всё готовое есть?
Krys
Нарыл тут 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
Внезапно появились проблемы с чтением флешки по указанным выше функциям.
Даю команду
Код
    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
немного локализовал проблему: причина в длине файлов (несколько МБ), точнее в длине считывания. Если поставить 256 байтов на считывание - то не подвисает. Но и прошивка как-то влияет: на прошлой прошивке любая длина считывания не подвисает. Текущую прошивку на всякий случай пересобрал 2й раз - не помогло. Тайминги все выполняются, это тестовая борда SP-605
Krys
Короче за этим доступом к файлам флешки нужен глаз да глаз. То не виснет, но считывает, а внутри где-то ошибки. Намучился. Пришлось городить контрольную сумму. И, если не сошлось, считывать заново...
Пока такой workarround. Как просто вылечить -не нашёл, просто обошёл. Этим удовлетворился, больше копать не буду, пока такого решения достаточно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.