На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
    > Симулятор SPI Flash , Хочу собрать :)
      Всем привет!

      Есть у меня железки с софтом для которых приходится часто экспериментировать. Они грузятся с SPI Flash.
      Разумеется в случае неправильного загрузчика нужно выпаивать и перешивать :'(
      Чтобы этого не делать, я припаиваю ZIF сокет и кидаю уже сами микросхемы между программатором и железкой.

      Но этот вариант неудобен и долгий. Хочется чтобы была железка, воткнутая в USB. Запускаешь софт на компьютере, подсовываешь образ флешки и грузишь железку.
      Такие промышенные варианты существуют, но ценник в 800+ баксов для хобби как-то не очень радует.

      Итого есть идея реализовать самостоятельно.

      Идея вот в чем: берем STM32, настраиваем на нем SPI Slave, настраиваем USB, пишем логику обработки и софт для PC.
      В качестве контроллера хочу использовать STM32F103C8T6 т.к. он есть под рукой в варианте отладочной платы.

      Пролема в том, что не очень хорошо знаю эти контроллеры.

      Есть желание найти спецов по STM, которые могли бы написать прошивку. Я бы спроектировал саму архитектуру и написал кросплатформенный софт для PC.
      Вместе выпустили бы свободный проект. Ну или не свободный, какие будут предпочтения =)
        Поговорить могу, писать вряд ли буду

        Такой вопрос. Какого размера бинарный образ флешки? то есть куда его сохранять?
        Другой вопрос. Разные SPI Flash прям очень разные по организации и по командам. То есть эмулировать SPI Flash придется либо какую-то конкретную, либо как-то переключать.

        Ну а так, реализацию я вижу таким образом. В STM32F103C8T6 заплить USB Mass Storage Device, готовый пример есть в демках на библиотеку USB от производителя микроконтроллера (если нужно, найду ссылку на библиотеку и демки). К микроконтроллеру прикрутить память достаточного размера и на эту память повешать простенькую файловую систему, опять же есть готовые для STM32 (линки накидаю, при желании). При таком подходе получается: втыкаешь этот эмулятор в компьютер, на компе появляется диск типа флешки, на него кидаешь файл образа с определенным названием, а микроконтроллер этот файл отдает по SPI. Только нужно блокировать доступ к файлу (хотя бы переключателем): либо SPI, либо USB потому как бибилотеки скорее всего не реентрантные.
          Цитата MeG @
          Такой вопрос. Какого размера бинарный образ флешки? то есть куда его сохранять?

          4 - 16 мегабайт.

          Цитата MeG @
          Другой вопрос. Разные SPI Flash прям очень разные по организации и по командам. То есть эмулировать SPI Flash придется либо какую-то конкретную, либо как-то переключать.

          На компьютере реализация команд каждой флешки должна быть в виде плагина - "DLL'ки" если образно.
          Какой моделью прикидываться - указывает пользователь при запуске.
          Например:
          ExpandedWrap disabled
            spisim -d mx25l3208e -f ./flash.img


          Цитата MeG @
          Ну а так, реализацию я вижу таким образом. В STM32F103C8T6 заплить USB Mass Storage Device, готовый пример есть в демках на библиотеку USB от производителя микроконтроллера (если нужно, найду ссылку на библиотеку и демки). К микроконтроллеру прикрутить память достаточного размера и на эту память повешать простенькую файловую систему, опять же есть готовые для STM32 (линки накидаю, при желании). При таком подходе получается: втыкаешь этот эмулятор в компьютер, на компе появляется диск типа флешки, на него кидаешь файл образа с определенным названием, а микроконтроллер этот файл отдает по SPI. Только нужно блокировать доступ к файлу (хотя бы переключателем): либо SPI, либо USB потому как бибилотеки скорее всего не реентрантные.

          Возможно ли использовать контроллер исключительно в виде SPI Slave - USB прокси?
          Мне кажется это было бы самым простым решением. Из USB прилетают байты, в USB пишешь байты.
          Правда не уверен насчет таймингов SPI, возможна ли такая схема.
            Кстати, флешка, для которой мне нужен симулятор, очень проста в использовании - MX25L3208E. Там буквально пару команд и ни каких настроек.
            С той же ардуины читается / пишется элементарно.
              Цитата HardRock @
              Возможно ли использовать контроллер исключительно в виде SPI Slave - USB прокси?
              Мне кажется это было бы самым простым решением.

              Можно. Но придется писать свой драйвер.

              А какой контроллер на вашем целевом устройстве, которое грузится с SPI-флешки? Возможно он имеет JTAG или SWD и можно прошивать вашу SPI-флешку через него при помощи OpenOCD и простейший адаптер на базе FT2232 или какой-нибудь распространенный отладчик типа ST-Link или J-Link?
                Цитата Dushevny @
                Можно. Но придется писать свой драйвер.

                Это не пугает. Во всяком случае под Linux.

                Интересно вот что - как поведет себя мастер SPI если слэйв не будет отдавать данные "мгновенно" по частоте тактирования.


                Цитата Dushevny @
                А какой контроллер на вашем целевом устройстве, которое грузится с SPI-флешки? Возможно он имеет JTAG или SWD и можно прошивать вашу SPI-флешку через него при помощи OpenOCD и простейший адаптер на базе FT2232 или какой-нибудь распространенный отладчик типа ST-Link или J-Link?


                На целевом устройстве стоит RT5350F. Ни USAR ни темболее JTAG не разведены, это не отладочная плата >:(
                Мне нужно "вслепую" обновить встроеный Linux )))
                Сообщение отредактировано: HardRock -
                  Цитата HardRock @
                  Интересно вот что - как поведет себя мастер SPI если слэйв не будет отдавать данные "мгновенно" по частоте тактирования.

                  А куда же слейв денется? На то он и слейв. Не, ну если превысить его максимально допустимую частоту - будет мусор, но тут уже никто ничего не обещал.

                  Под вашу задачу с минимальными затратами ложится FT2232 и подобные с режимом MSSP. Вот уж точно - пишите что угодно и как угодно под управлением своей писишной программы и не нужен внешний процик и не нужно ломать голову про легальность VID/PID и драйвер готовый от производителя.

                  Добавлено
                  Прошу прощения, не MSSP а MPSSE (Multi-Protocol Synchronous Serial Engine).
                    Да, интересная микруха. ARM мне как-то более привлекательным кажется. Хотя FT2232 судя по документации проще программировать, да и документация с примерами хорошими.

                    Выходит что если эмулятор не будет успевать в реал-тайме отвечать на SPI, то передача отвалится. Это нужно учесть.
                      Я неправильно понял вашу задачу. Я думал, что вы хотите прошивать эту память прямо в схеме, а вы хотите ее эмулировать... А может прошивать? Лучше всего эмулировать память будет сама память :)
                        Именно эмулировать. Идея в том чтбы "впаять" эмулятор вместо флеша. Образ должен читаться с компьютера. Смысл в том, что тестировать изменения будет намного прозще и быстрее чем перекидывать флешку между железкой и программатором.
                          А зачем ее перекидывать? Флешка штатно впаяна в схему. К ее ногам подпаивается FT2232 - это три ноги SPI, CS и земля, итого 5 проводков. Еще одна из ног FT2232 подключается на вход сброса основного процессора - шестой проводок. Запускается ваша программа, она заставляет FT2232 придавить вход сброса основного процессора. В состоянии сброса процессор переводит свои ноги в третье состояние и не мешает вашей программе через FT2232 залить образ в флешку. После заливки и сравнения ваша программа переводит ноги FT2232 в третье состояние. Это отпускает сброс основного процессора и теперь уже FT2232 не мешает вышедшему из комы процессору штатно загрузиться с родной флешки. Как-то так. Должно работать. И мне кажется это гораздо проще, чем эмулятор.
                            Нельзя просто взять и припаяться к сбросу процессора 8-)


                            Существуют ли SPI RAM на скажем 16 мегабайт?
                              Цитата HardRock @
                              Нельзя просто взять и припаяться к сбросу процессора 8-)

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

                              ОЗУ подобного размера не встречал. Мегабит бывает - серия 23K, 23LCV от Микрочипа, OnSemi тоже мегабитные выпускает.
                                Цитата HardRock @
                                Существуют ли SPI RAM на скажем 16 мегабайт?

                                Вряд ли. RAM-е нужно быть бы быстрой, потому она на параллельной шине или на двух.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0350 ]   [ 16 queries used ]   [ Generated: 26.04.24, 19:50 GMT ]