Перейти к содержанию
    

mantech

Участник
  • Постов

    6 976
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные mantech


  1. вот пример совмещеной работы на два физических носителя.

    DRESULT disk_read (
        BYTE drv,
        BYTE* buff,
        DWORD lba,
        BYTE count
    )
    {
        switch (drv) {
        case DN_NAND:
            return NAND_read(buff, lba, count);
        case DN_MCI:
            return MCI_read(buff, lba, count);
        }
        return RES_PARERR;
    }

     

    Более полную информацию можте подчерпнуть из примеров чана ffsample для lpc23xx

     

     

    Это все у меня работает, я написал, что нижний уровень читает и записывает.

    Мне интересна настройка самой фатфс, для одновременной работы с несколькими дисками...

    Нужно-ли использовать для этого настройки partition или еще что...

     

    "в ffconf.h указать не забыли?" нет, нге забыл :rolleyes:

  2. Да все так и есть за искл того, что у меня там цифра 3 стоит.

     

    Коды возврата правильные, но работает так:

     

    Делаю f_mount (0,fatSD);

    f_mount (1,fatUSB);

     

    Далее циклю все это -

    {

    открываю файл на SD -

    res= f_open(&fileSD,"0:fileSD.txt",FA_READ);

    ...

    res=f_read(&fileSD,&buff,512,&cnt);

    затем вывожу в уарт то, что прочитал

    f_close(&fileSD);

     

    открываю файл на USB -

    res= f_open(&fileSD,"1:fileUSB.txt",FA_READ);

    ...

    res=f_read(&fileUSB,&buff,512,&cnt);

    затем вывожу в уарт то, что прочитал

    f_close(&fileUSB);

     

    еще раз открываю тот-же файл на USB -

    res= f_open(&fileSD,"1:fileUSB.txt",FA_READ);

    ...

    res=f_read(&fileUSB,&buff,512,&cnt);

    затем вывожу в уарт то, что прочитал

    f_close(&fileUSB);

    }

     

    А работает все это так - читается файл на SD правильно, затем не читает с USB, но читает второй раз, потом снова читает с SD и т.д...

     

    Если убираю чтение с SD, то с усб читает оба раза правильно! В чем тут может быть дело? Да, когда идет первое "чтение" с усб, активности в процедурах USB_DiskRead нет!

     

     

    Вот еще один вопрос - что означает запись: *rfs=fs=FatFs[vol];

    Т.е. создается массив структур FatFs, равный кол-ву дисков? Тогда зачем вот это - FATFS usb_fs, sdc_fs;???

    Или это мутная часть чена, который решил втюхать работу с лог. и физ. дисками одновременно?

  3. Не знаю, в тему или нет - насколько помню, возможность работы с несколькими дисками включалась через #define. Он у вас определен правильно?

     

    Вот я про это и спрашиваю, как "настроить" дефайны в частности. Там много понаписано про логические диски, плюс как-то непонятно сделана передача номера физ. устройства в процедуры diskread и write...

     

    Есть переменная default_vol, которая оределяется процедурой f_mount и переменная fs->drv, значение которой передается в disk_read, в структуре раздела, причем они берут данные из разных мест...

  4. Написал данную тему в разделе армов, но ее почему-то перенесли в операционные системы??

    Видимо фатфс уже стала не просто файловой, а у же осью :rolleyes:

     

    Собственно вопрос к светилам в особенности по fatfs, есть 3 физ. диска - sd-карта, усб флешка и флеш контроллера, который используется как диск на 512Кбайт.

     

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

    но вместе (например копирование с диска на диск) не работает, причем отследил, что фатфс просто не обращается к процедурам чтения-записи соотв диска. Предполагаю, что фатфс не запоминает, к какому из дисков нужно обратиться, хотя в f_mount четко определяю номер 0,1 или 2 и открываю файл, где перед именем тоже указываю соотв диск - "1:filename.ext"

     

    Смотрел доки, там что-то мутное по поводу одновременной работы дисков, макросы типа LD2PD и тп. Я не использую логические диски в пределах одного физического. Как настроить фатфс для такого режима работы?

  5. Собственно вопрос к светилам в особенности по fatfs, есть 3 физ. диска - sd-карта, усб флешка и флеш контроллера, который используется как диск на 512Кбайт.

     

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

    но вместе (например копирование с диска на диск) не работает, причем отследил, что фатфс просто не обращается к процедурам чтения-записи соотв диска. Предполагаю, что фатфс не запоминает, к какому из дисков нужно обратиться, хотя в f_mount четко определяю номер 0,1 или 2 и открываю файл, где перед именем тоже указываю соотв диск - "1:filename.ext"

     

    Смотрел доки, там что-то мутное по поводу одновременной работы дисков, макросы типа LD2PD и тп. Я не использую логические диски в пределах одного физического. Как настроить фатфс для такого режима работы?

  6. что и RM0008 не гуглится?

    http://www.st.com/web/en/resource/technica.../CD00171190.pdf

     

    Это для 107 мануал. Для 407 - RM0090 который я после 2х часов танцев с бубном и обращением к всевышнему, нашел у них на сайте :wacko:

     

    Сразу и ошибку с NAKом нашел, но еще "не вечер"...

     

    Да, с СТ чтото странное: недавно познакомился с их чипом STM32F051. Микроконтроллер мощный в плане периферии, её возможностях - тут ничего не попишешь. Но дока - отвратительная! В смысле - как буд-то бы слегка кастрированная. В общем порой мучался на ровных местах...

     

     

    Да там нормальная дока (я про усб в смысле), просто сам контроллер навороченый очень, поэтому сложновато...

  7. я практически купил кучку STM32F429 (в дороге), на которых даже нет документации на сайте)) Говорят, появится в октябре. Ну вот как-то так...

     

     

    Прикольно, коты в мешке :blink:

    Это случаем не те, что с ЖК контроллером и сдрамкой на борту?? Интересно бы посмотреть как они в работе...

  8. Предлагается желающим добывать изюм из булочек, выискивая в этой навозной куче связанные с USB жемчужные зерна. Простите, оно мне надо ? И сил у меня на это нет. Ковыряние в мегабайтах исходников Линукса с целью выковыривания оттуда какой-то козявки - не мой конек.

     

    Да уж, этот линукс... Меня тоже уже пытались "накормить" им, но не люблю копаться в чужих осях, особенно в тех, где нужно копать миллион файлов, с командной строкой в большинстве случаев и ждать несколько минут пересборку оси чтоб проверить тот-ли регистр был нужен...

     

    Вобщем проблему с зависанием я решил, нашел глюк в либе, дело было в обработчике прерывания состояния канала, не всегда сбрасывался флаг NAK, отсюда постоянное прерывание до бесконечности...

     

    Но моя радость еще не полная, есть еще одно НО, не всегда определяется картридер с карточкой... Чувствую придется еще "зарыться" в эти либы, мать их! :(

     

  9. Документация на USB-движок, встроенный в эти МК была довольно неудачная и попросту неполная (т.е., даже имея ее, написать свою реализацию того же хоста было невозможно).

     

     

    Нее, я только одного не понимаю, они что, не хотят, чтобы их микросхемы покупали?? Я уже целый час сижу на их сайте и ничего кроме даташита о том, что есть в этом камне, больше ничего нет!!! В чем смысл скрывать данные о девайсах в контроллере, снабдить все это чудо полукривыми либами, к которым тоже нет доков, кроме убогого описания усб либы и то, на 60% посвященной девайсу, а не хосту?? Или просто я дурак, что связался с стшным контроллером??? Хотя время еще есть можно послать его к "ядреной бабушке", и раскурить что-нить более путевое, типа nxp или atmel... На вашем месте, что лучше сделать??

  10. при горячем выключении USB - клавиатуры (именно клавиатуры, и ничего другого, производитель клавиатуры при этом не важен) система мертво зависает в среднем раз из десяти, а то и из пяти.

     

     

    Дак это понятное дело... В данном случае не думаю, что виновата "железка", а про СТ-шные библиотеки вообще разговор особый!! Мне просто интересно, что лучше сделать при таком поведении хоста - как-то сбрасывать прерывание или ресетить сам хост, правда пока не знаю как...

  11. Довелось мне поюзать платку дискавери в режиме усб-хоста. Так вроде все работает :rolleyes:

    За одним нюансом - когда вставляешь-вынимаешь флеху "на горячюю" она как правило потом снова нормально подключается, но раз на 10й, а может и на 20й :wacko: ... Просто виснет и все тут!!

     

    "методом тыка" определил, что происходит постоянный вызов обработчика прерываний - OTG_FS_IRQHandler в котором вызывается процедура обработчика - USBH_OTG_ISR_Handler (...)

    Причем, при "нормальной" работе хоста, прерывания вызываются только при подключенной флехе, а когда ее нет то нет и прерывания, а тут такое... :05:

     

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

     

  12. Да это, как ZigBee с усилителем, ну ладно, чуть сложнее.

     

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

    Интересно, сколько инженеров будут работать над проектом? Просто к тому, что сам делал контроллер, без радиомодулей и протоколов, а только ОС с многозадачным интерпретатором, да поддержка периферии, mass storage, и всяческих менюшек и дисплеев... Дак у меня это месяца на 4 вышло, а тут объем в несколько раз больше. Да еще и тестирование. Задача не простая, уж поверьте...

    Даже интересно, что тут получится...

  13. Если и отключит, то не факт, что её тут же не включат обратно, прецеденты уже описывались.

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

     

    Ну а если такой вариант - берем все то, что "выплюнул" модем и отправляем его в виде смски клиенту... Он уж разберется, ч то к чему...

  14. Вот это - явная деза. Дело в том, что PDU как раз и используется как протокол передачи SMS. Если модуль поддерживает текстовый режим, то значит конвертер PDU у него внутри программно реализован. Причем иногда он кривовато реализован (ну или, скажем так, с особенностями) - в итоге результат, описанный в начале топика.

     

    Приводили результат сравнения SIM300D при переводе с сотика сименс С35. На 35м передавало, на симе нет. Было что-то с длиной пакета, уже непомню - давно было дело...

    PDU не использую из за процедуры "кудрявого" перекодирования в 7и битную кодировку.

     

    "Причем иногда он кривовато реализован (ну или, скажем так, с особенностями) - в итоге результат, описанный в начале топика." - тоже не исключено, что так и есть.

     

    Я думаю здесь нужно скорфигурировать кодировку, кажется командой AT+CSMP

    Но вообще говоря, чтобы не было недоразумений рекомендую использовать PDU режим (AT+CMGF=0)

     

    kan35 - БОЛЬШОЙ РЕСПЕКТ!!! Так и есть, дело было тута :biggrin:

     

    Может еще кому интересно будет.

     

    Читаю из 700го там +CSMP: 17,255,0,241

     

    А в 900м и висмо - +CSMP: 17,167,0,8

     

    Если честно, незнаю, что это за циферки))), но когда задал в 900й параметры 700го - все заработало!!!

  15. Не буду продолжать бессмысленный спор ибо нового в работе gsm стека еще не придумали и уже не придумают, а сам синтерион не даст 100 гарантии на отключение на лету. Только на корректное выключение.

     

    Ну в принципе - да, чего тут продолжать... Мы тут просто распинаемся, а производители все-равно будут делать так, как им проще и выгоднее!

     

    Вот есть один вопросик, тут проскакивало, что у симов часть команд сохраняется даже без &W. Так ли это на самом деле, и если я при каждом включении передаю блок команд инициализации, не опасно ли это для его флешки?

  16. когда тачка угнана и стоит в металлическом отстойнике, спутники не помогут.

     

    А разве трекер не может передавать предидущие координаты, если замер идет раз в сек. перед потерей спутника, координаты сильно не изменятся ведь..

  17. Я думаю здесь нужно скорфигурировать кодировку, кажется командой AT+CSMP

    Но вообще говоря, чтобы не было недоразумений рекомендую использовать PDU режим (AT+CMGF=0)

     

    Хорошо, проверим, сравню, что в 700 и 900м попробовать данным параметром "обменяться"...

     

    PDU не хотелось бы - МК слабоват и памяти мало, под поле для передачи...

    Да и жаловались, что не во всех модемах работает, хотя сам не проверял.

  18. з.ы. все это дело можно было бы запитать и от USB, только ограничить чем-нибудь ток заряда большого конденсатора lowESR, дабы не спалить порт...

     

    Телеофисы так делали на 700х симах - USB+LDO+емкости+sim700 и работало. интерфейс через ft232rl...

  19. Режем дорожку и ставим в разрыв ключик отключающий питание.

     

    Кстати, может люди, "приближенные" к производителям модемов, подкинут идею, чтоб какой-нить watchdog с ключиками ставили прямо в модем??

  20. Поэтому у любого модуля и имеется этот пишущий в память кусок и выбросить его согласно лицензии нельзя.

    Почему так сделали америкосы изначально писавшие GSM часть - вопрос к ним, а не к производителю модуля.

     

    Иными словами - такого модуля нет, который не занимается самопроизвольной записью во флеш?

×
×
  • Создать...