[cvetblue]Новость от 08/05/2015 Прошивка V3Великого Девайса (для Меги 8, 88, 168, 328). Поддержка Микрочипа, i2c-scan, уточнение для IR-box, скорость soft для ATMEL понижена в 6 раз для прошивки целевого Атмела с кварцем 32768. Скачать PostalAVR_v3b_lice[/cvetblue] [cvetblue] Прошивка V4 микроконтроллера ATmega168 программатора Postal3 - https://remont-aud.net/_fr/362/PostalAVR168.rar[/cvetblue]
Не знаю, чего там Сергиус в Спартан накорябал, но для EPM240 код на vhdl, расширяющий fx2lp для isp emmc, приложен в файле (могут быть мелкие недочёты).
Предварительная расстановка пинов EPM240 в файле. Данные у fx2lp естественно идут через PB0..7.
Добавлено (05.12.2025, 07:54:27) --------------------------------------------- Я напоминаю, что из самой программы прошить EPM240 довольно долго будет нельзя. На сегодняшний день могут возникнуть сложности с приобретением usb-blaster, поскольку его подделывают на чипе CH552G. Можно использовать LPT. Проверьте соединение с EPM240, чтобы иметь возможность залить прошивку. Можно использовать FT232H совместно с этим решением: https://marsohod.org/index.php/ourblog/11-blog/170-mbfdti
Да, мне прислали в комплекте с платой FPGA именно такой, на PIC18F14K50, и я им прошил. Самое интересное - внешне коробочка с CH552G ничем не отличается. На самом деле CH552 хороший контроллер, но у него usb-пример с ошибками, который туповатые разработчики подключают без изменений. Как только доделаю и протестирую остальное - сразу выложу. Выложенный vhdl-файл изменялся мало, поэтому вполне годится для анализа и восхищения простотой. Спартан-6 применительно к задаче это слишком большой замах ногой после горохового супа.
Добавлено (08.12.2025, 08:17:57) --------------------------------------------- Рабочая прошивка для FX2LP готова. Пока без учёта тактовых частот и возможности программного отключения isp. Подключение основных сигналов между FX2LP и EPM240: PB0..7 = fx2_data CTL0 = fx2_clk PD6 = fx2_read_write_switch PA3 = fx2_cmd_dat_switch PA4 = fx2_low_speed_switch RDY0 = fx2_ready_from_epm
Я принял решение, что управление отключением ISP из программы излишне, на "шляпе" надо будет предусмотреть лёгкий выключатель, управляющий входом "общий OE" EPM240, который задействован в любом случае, т.к. предотвращает подачу на выход случайных импульсов в момент стабилизации внутренних счётчиков EPM240 при подаче питания.
Добавлено (09.12.2025, 14:07:15) --------------------------------------------- Всё готово, но пока ничего не работает. Пин 62 перебросил на 61, т.к. на платке пин 62 не выведен. Подтяжка у EPM240 где-то 15к, вполне сойдёт.
Добавлено (10.12.2025, 14:50:26) --------------------------------------------- Почти работает, eMMC отвечает, но опережающее чтение работает неточно. На платке fx2lp сигналы RDY0 и RDY1 перепутаны местами.
Добавлено (11.12.2025, 18:02:10) --------------------------------------------- CID сохраняется, дальше не идёт. Пока непонятно. Предположительно, EPM240 очень чувствительна к помехам.
Добавлено (12.12.2025, 11:56:54) --------------------------------------------- Работает, но пока нестабильно. Тут подход будет тройной. Сначала обход нестабильности за счёт программы, потом откат назад. Потом обход нестабильности за счёт прошивки FX2LP, снова откат. Затем максимальная стабилизация EPM240 подбором slewrate и дополнительным контролем исключений. В финале будут применены все 3 варианта с результатом в виде непревзойдённой надёжности - как обычно.
Оно, конечно, работает в таком виде как на фото. Но нужно делать "шляпу". EPM240 создаёт жутчайшие помехи, а демонстрационная платка годится только для светодиодной мигалки. Прошивки FX2LP и EPM240 работают оптимально, осталось Программу доработать, и выложу всё.
Подключение основных сигналов между FX2LP и EPM240: PB0..7 = fx2_data CTL0 = fx2_clk PD6 = fx2_read_write_switch PA3 = fx2_cmd_dat_switch PA4 = fx2_low_speed_switch RDY0 = fx2_ready_from_epm
Владимир, непонятно как то. Со стороны fx вроде всë понятно, а к каким пинам EPM подцеплять его? И шина ISP откуда выведена? Буду делать шляпу на макетке с использованием Красной платы EPM, синюю пока не удаëтся купить.
Распиновка со стороны EPM240 в файле csv выше, её можно подстроить поточнее при проектировании "шляпы". Шляпу нужно спроектировать на 2-сторонней печатной плате и заказать изготовление на Алиэкспресс по чертежу, я так уже делал. После этого под готовую "стационарную" шляпу нужно будет скорректировать прошивку EPM240 в плане задержек сигналов. Работать с CPLD через группу проводочков - это специальный отладочный вариант. Поясню. Вот выше выложен макет прошивки для EPM240 на VHDL. Проверка на тупость для разработчиков. Казалось бы, очевидно, что сдвиг данных на фронте нужно перенести на спад. Однако в этом случае импульс помехи от EPM240 выходит за пределы возможного и сбивает подсистему usb fx2lp. Устранение этого при помощи задержек вызовет гораздо больше проблем, чем просто написать заведомо правильный код для CPLD. К тому же, EPM240 работает асинхронно в отладочном исполнении, её помеха двигается относительно тактовой fx2lp. Синхронную работу EPM240 на отладочной плате проверить невозможно, хотя я пробовал. Сигнал на выходе CLK платки fx2lp маловат, а сигнала IFCLK немножко не хватает при передаче через проводочек (EPM240 зависает от собственных помех). Конечно, при синхронной работе гораздо меньше проблем, это ясно. На "шляпе" всё будет прекрасно работать синхронно.
Цитата
RDY0 = fx2_ready_from_epm
На платке fx2lp подписан как RDY1.
Вообще, И90, на создание "шляпы" мотивация пошла от тебя, особенно от фото преобразователя уровней для fx2lp. Тебя, в свою очередь, мотивировал Сергиус. Так что в будущем (ближайшем), когда Сергиусу будут тыкать в нос Великим Девайсом, он должен будет сказать спасибо самому себе.
Дорабатываю программу сейчас, пока не готово.
Добавлено (16.12.2025, 17:58:09) --------------------------------------------- Приехал usb-blaster на CH552G, купленный по этой ссылке: https://aliexpress.com/item/1005008626317711.html Если с бластером, который на pic, полоска выполнения идёт толчками, то с этим ровно и быстрее. Так что можно использовать. Видимо, исправили прошивку CH552G. Программу доработал, но пока что помеха, создаваемая EPM240, не позволяет культурно пользоваться.
Вообще, И90, на создание "шляпы" мотивация пошла от тебя, особенно от фото преобразователя уровней для fx2lp. Тебя, в свою очередь, мотивировал Сергиус.
нет, это был не он, просто как на ардуины вешают всякие шилды, то почему бы не повторить? Если бы не работало, то не хвастал бы. Кстати такой же шилд( согласователь уровней) и на FT232-ю плату есть. С пинами был не внимателен, но первый движ будет с целевой ерм через макетку. А там видно будет, плату спроектировать не проблема, только кому это нужно?
Без нормальной "шляпы" вряд ли на 48-50 МГц заработает (настраивается с делителем на 2, и то тяжело). А нужно или не нужно - это вопрос другой сферы. Скажем так, опытный торговец всегда сможет разрекламировать и впарить то что не нужно.
Добавлено (20.12.2025, 09:11:47) --------------------------------------------- Подключил питание EPM240 проводком от 5 вольт, припаяв один конец на платку FX2LP. При этом используется стабилизатор на платке EPM240. Стало значительно лучше, но всё равно чтение данных падает с ошибкой CRC16. Помехи от EPM240 просто гигантские, это очень большая проблема при соединении проводками.
Добавлено (20.12.2025, 20:03:07) --------------------------------------------- Результаты предварительных испытаний не показали чудес. При частоте 12 МГц CLK в режиме single sector скорость оказалась 32 мегабайта за 57 секунд. В режиме single sector большие накладные расходы, каждые 512 байт принимаются отдельной командой, для multi sector будет в случае 24 МГц 100-120 мегабайт в минуту, это можно получить легко. А вот 48-50 МГц и ~220 мегабайт в минуту получить по ISP будет сложно, это нужно хорошо сделать "шляпу" и вручную распределять элементы в прошивке EPM240. Пока что доработаю программу для режима multi sector, посмотрим, какая будет скорость. Предполагается 55 мегабайт в минуту на тактовой 12 МГц.
Тестовая версия, можно проверить вашу сборку. Неиспользуемые выводы на земле, так что удобно ставить джамперы. Если включить с подключенной eMMC, то в неё нальётся грязи на старте, и она не выйдет из busy. Вывод OE задействован, если не хочется с ним возиться - можно подключить eMMC через секунду после подачи питания, когда счётчики перейдут в стабильное состояние. Выход CLK в этой версии фиксирован на 12 МГц (не переключается), галку multisector в настройках нужно снять (пока не сделал).
Добавлено (22.12.2025, 20:06:28) --------------------------------------------- Поверх "шляпы" для eMMC ISP нужно предусмотреть надевание ещё одной - для быстрого SPI. Основной частотой CLK для eMMC ISP предполагается 24 МГц, 12 МГц для failsafe и 48(50) МГц - на случай, если сильно повезёт. Со стороны пинов EPM240 48 МГц будет работать оптимально, но отладка подключения ISP для одиночного случая может быть сложной.
Добавлено (25.12.2025, 15:01:27) --------------------------------------------- Работа на частоте ISP 48 МГц из планов для EPM240 исключена (не имеет смысла). Вход тактовой частоты оставлен один (PIN 12). Пока не удаётся получить работу в режиме multi sector, eMMC просто зависает (отключается) от помех со стороны EPM240, причём не по питанию. Тестами выяснено, что в паузах между чтением кусочков eMMC отключается, от неё приходят все FF, и она перестаёт отвечать на команды. CMD,DAT0 гарантированно должны быть в режиме входа (вводилась тестовая пауза), а CLK имеет гейт, управляемый на его же спаде и теоретически не может укоротиться. При этом первые 64 килобайт кусочками читаются, сбой в начале второго куска 64кБ. Предположительно, сбой в eMMC накапливается в предыдущем обмене. Режим single sector сбоя не даёт, так как всё чтение заказанных 512-и байт делается одним хапком. Скорее всего, такой сбой можно устранить какой-нибудь фильтрацией или сменой питания EPM240 на 2.5 вольта, чтобы уменьшить выбросы при переключении. Но было принято решение изменить протокол FX2LP (чуть-чуть) с целью хапнуть всё одной транзакцией. Будет работать очень быстро.(!) Если выложенный выше тест у вас заработает "на проводках", то ничего переделывать не придётся. 24 МГц работает так же надёжно, как и 12. Но 48 МГц CLK, при тактировании EPM240 той же частотой, получить невозможно. Можно, конечно, попробовать с кварцем 100 МГц исполнить на EPM240 работающий дизайн, это интересно. Но уже с кварцем 50 всё выглядит так, как будто EPM240 на пределе своих возможностей. Например, инструкции if(clk="00") и if(clk="000") дают большую разницу по задержке (которая быстро меняется от температуры).
Добавлено (25.12.2025, 15:24:14) --------------------------------------------- Также новый протокол можно будет включать для FX2LP без "шляпы" - обмен будет значительно быстрее.
Добавлено (26.12.2025, 03:32:11) --------------------------------------------- Я потом уберу тестовую версию, т.к. протокол новый уже готов, а тестовая версия вызовет несовместимость, с возможным синим экраном. Новым протоколом можно 1 мегабайт непрерывно получать в одну транзакцию. Вместо одного байта в начале передачи передаётся 3, из них 2 байта плюс 4 бита это счётчик, который FX2LP будет передавать обратно непрерывно (что он уже и делает). При этом прошивка FX2LP совместима со старыми версиями. Даже без "шляпы" скорость должна получиться неплохая (для ISP).
Добавлено (27.12.2025, 04:21:25) --------------------------------------------- Пока что какие-то неполадки. Такое впечатление, что Windows при большой скорости не успевает выделять динамически память. Скомпилировал в режиме debug, с одним файлом работает надёжно, смог проверить скорость. При тактовой 12 МГц скорость верификации 4-х мегабайт (boot) ровно 3 секунды. Это 80 мегабайт в минуту. Значит, при тактовой 24 МГц будет около 160 мегабайт в минуту. Это на EPM240. Без неё наверно на голом FX2LP будет чуть помедленнее. То есть, 8 гигабайт eMMC прочитается за 50 минут по ISP.
На платке FX2LP штырьки подписаны, путаница только со штырьком Ready. На платке нужный сигнал подписан RDY1. Для разводки платы лучше подождать конечный вариант прошивки. Как выяснилось, при автоматической компиляции для EPM240 сдвиг отдельной ножки влияет лучше, чем включение всех галочек на скоростной режим. Конечный вариант будет тестироваться с управляемым генератором на максимальной частоте, ножки при этом могут быть подвинуты. В текущем виде 24 МГц стабильно. Переключение входов тактовой компилятор понимает, но результат хреновый, поэтому убрано. А вот переключатель скорости вообще нужно по разным углам перебрасывать. Но это ладно. Больше всего удивил разнобой в задержках 8-битных данных. Если вы думаете, что это из-за размещения на разных сторонах, то нет. 7 линий в норме, а одна, то ли D0, то ли D7, задержана чуть ли не в 10 раз по отношению к остальным. Это тоже сначала нужно подвигать. В выложенной тестовой версии переключатель скорости отключен именно из-за проблем с задержками. Поэтому пока разводить плату не нужно, лучше пробовать на отладочной. В данный момент проблемы с самой программой, чего-то я перебрал с выделением ресурсов.
Добавлено (28.12.2025, 13:59:02) --------------------------------------------- С программой разобрался. Это не она. Если касаюсь пальцем штырька GND на платке с eMMC (на фото слева), то читает 2 файла boot, вылетает на user, если отпускаю палец - вылетает на втором boot. Программа просто закрывается и исчезает. Никакие программные ухищрения не помогают. Вешать антизвонные резисторы на каждый провод, ведущий к EPM240 - очень лень на отладочной плате. Попробую для начала запитать её от 2.5 вольт, чтобы импульсы поменьше были, стабилизатор надо только найти. А так скорость меня устраивает. Там даже без EPM240, на голом FX2LP, будет весьма неплохо. Исходник прошивки FX2LP, которая это обеспечивает, выкладывал, там добавлена пара запятых. Но никому не нужно.
Если кто-то захочет ускорить своё поделие на fx2lp для чтения eMMC, но не может (в силу разных причин) сообразить как, то выкладываю текст функции, выполняющей быстрое чтение.
Добавлено (28.12.2025, 15:55:32) --------------------------------------------- При использовании заземляющего пальца удалось померить скорость чуть подольше и поточнее. При 12 МГц тактовой скорость чтения 64-х мегабайт составила 49 секунд.
ZimA, можно разводить "шляпу". Всё равно неизвестно, когда руки дойдут до каких-то продвинутых тестов. Для любителей Quartus обещанный исходник ниже (прошивки и ножки там же плюс ножки FX2LP в архиве с тестовой программой). Можно менять ножки, включать ножки параллельно для увеличения тока - в общем, пакостить любым доступным способом. Проверять прошивку EPM240 можно пока что версией из предыдущего архива с программой. В случае "шляпы" тактовая снимается IFCLK, только неясно, нужно ли её перевернуть. Из FX2LP можно выводить IFCLK в инверсном виде, какой-то вариант должен быть надёжнее. На отладочную плату через проводок всё-равно не проходит, поэтому не могу проверить. Версия для Quartus, если не будет улучшений, скорее всего финальная. Вылавливать миллиметры надёжности с EPM240 затея так себе. В основном проблема в очень больших помехах, запитывать одним питанием с FX2LP можно попробовать, скорее всего не получится, для EPM240 нужен отдельный стабилизатор от 5-и вольт usb. Можно попробовать собрать дизайн под другой чип, если кому-то интересно. Простор для творчества.
Да, чуть не забыл. На всех линиях EPM240 антизвонные резисторы 22 ома обязательны (при разводке "шляпы").
Добавлено (31.12.2025, 17:19:00) --------------------------------------------- Причина падения программы в скоростных режимах оказалась в сбое драйвера fx2lp, которого никогда раньше не было. EPM240, даже питаясь отдельным питанием, ухитряется создать помехи, вводящие в ступор подсистему usb fx2lp. И хотя для тестов используется драйвер от Windows 98 с гнездом usb 3.0, данную ситуацию необходимо максимально обработать, а уже потом заниматься подавлением помех.