dvladim 0 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 1 час назад, zombi сказал: Но в документе по Вашей ссылке на чип 10M02SCE144 я не нахожу инструкцию 002. Ожидаю увидеть что-то типа строки "блаблабла (0000000010), "& а нет ёё В BSDL нет инструкций для программирования. Это внутренняя кухня, не соответствующая ни одному стандарту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 11 февраля, 2020 Опубликовано 11 февраля, 2020 · Жалоба 1 hour ago, dvladim said: Это внутренняя кухня, не соответствующая ни одному стандарту. Это что-же получается, кроме как просматривая файлы для программирования больше нигде не получить эту информацию? Или Altera/Intel даёт какие документы на этот счёт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardWareMan 1 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба Нужно искать не на конкретный чип в корпусе, а на семейство. Вот тут есть всё, что необходимо на МАХ10. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 2 hours ago, HardWareMan said: Вот тут есть всё, что необходимо на МАХ10. Всё равно не вижу, где бы там говорили что для загрузки CRAM напрямую по JTAG нужно: записать в IR 002 выждать паузу 2500000 тактов и затем в DR передать поток битов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 17 hours ago, zombi said: Чем обусловлено именно 8000 пустых тактов? Необходимостью формирования задержки в 320 мкс (вероятно это время необходимое для записи) или нужно именно 8000 тактов? Если мой ногодрыгательный JTAG будет работать максимум на частоте 2 MHz, могу ли я сделать лишь 640 пустых тактов? А на этот мой вопрос может кто подсказать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 12 февраля, 2020 Опубликовано 12 февраля, 2020 (изменено) · Жалоба 5 minutes ago, zombi said: именно 8000 пустых тактов Помнится, когда-то грузили в FPGA, но по другому интерфейсу. Там тоже указывалось определенное кол-во тактов. Насколько понял - внутри автомат должен столько тактов скушать, чтобы прийти к определенному состоянию. Изменено 12 февраля, 2020 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 12 февраля, 2020 Опубликовано 12 февраля, 2020 · Жалоба 3 часа назад, zombi сказал: Всё равно не вижу, где бы там говорили что для загрузки CRAM напрямую по JTAG нужно: Создайте JAM файл. Там будет реализация алгоритма. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 15 февраля, 2020 Опубликовано 15 февраля, 2020 · Жалоба Объясните плиз вот такую команду : SDR 492 TDI (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) TDO (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000); Обязательно ли дёргать TCK все 492 такта, если интересующий бит 14-й? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zig 28 15 февраля, 2020 Опубликовано 15 февраля, 2020 · Жалоба Обязательно. Это сдвиговый регистр в который вводятся новые значения состояний выходов (на самом деле сложнее) и выводятся текущие защелкнутые состояния входов. Если вы не полностью выведите введете состояние и защелкните их, то может пойти дым... Upd Выложил цикл статей Ами Городецкого по JTAG: /upload/DOC/JTAG/Статьи/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 15 февраля, 2020 Опубликовано 15 февраля, 2020 · Жалоба Ясно. А подскажите правильно ли я понимаю что, если такая последовательность команд : ENDDR IDLE; STATE IDLE; SDR 23 TDI (380000); то нужно TAP целевого устройства выполнить следующую цепочку состояний? <RUN_TEST/IDLE>,<SELECT_DR_SCAN>,<CAPTURE_DR>,<SHIFT_DR(задвинуть 23 бита)>,<EXIT1_DR>,<UPDATE_DR>,<RUN_TEST/IDLE> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 16 февраля, 2020 Опубликовано 16 февраля, 2020 · Жалоба На предыдущий вопрос, раз возражений нет, понимаю что всё правильно. Но тогда следующий вопрос: в начале SVF файла вижу ENDDR IDLE; ENDIR IRPAUSE; Как понял, что после загрузки DR регистра TAP контроллер нужно перевести в состояние IDLE. А после загрузки IR регистра в IRPAUSE. Для чего это сделано? Почему бы после IR тоже в IDLE не переводить? Чем может быть вызвана катая необходимость? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 16 февраля, 2020 Опубликовано 16 февраля, 2020 · Жалоба 10 минут назад, zombi сказал: Почему бы после IR тоже в IDLE не переводить? Чем может быть вызвана катая необходимость? Логика подсказывает, что алгоритмом программирования целевой схемы. А вот такой вопрос: вы хотите сами написать плеер? Может проще готовый взять и портировать под ваш контроллер? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 16 февраля, 2020 Опубликовано 16 февраля, 2020 · Жалоба 11 minutes ago, dvladim said: Логика подсказывает, что алгоритмом программирования целевой схемы. Странный какой-то алгоритм... После загрузки IR оставить TAP в состоянии <PAUSE_IR> , т.е. не выполнить <UPDATE_IR> При том что после SIR всегда следующей командой идёт RUNTEST которая и переведёт TAP в IDLE. Не понимаю в чём смысл. 14 minutes ago, dvladim said: Может проще готовый взять и портировать под ваш контроллер? Во первых - мне самому интересно разобраться. Во вторых - мне на ассемблере AVR надо сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 18 февраля, 2020 Опубликовано 18 февраля, 2020 · Жалоба Реализовал на AVR кое-какой узко-специализированный плеер CVF. Вот так выглядит сформированный квартусом файл: Spoiler ! FREQUENCY 2.50E+07 HZ; ! ! ! TRST ABSENT; ENDDR IDLE; ENDIR IRPAUSE; STATE IDLE; ! !Max 10 Enable ISP ! SIR 10 TDI (2CC); RUNTEST IDLE 8750003 TCK ENDSTATE IDLE; SIR 10 TDI (203); RUNTEST 128 TCK; SDR 23 TDI (500008); SIR 10 TDI (205); RUNTEST 128 TCK; SDR 32 TDI (00000000) TDO (1E000000) MASK (9F800000); ! !Max 10 DSM Clear ! SIR 10 TDI (203); RUNTEST 128 TCK; SDR 23 TDI (000000); SIR 10 TDI (3F2); RUNTEST 8750003 TCK; ! !Max 10 DSM Verify ! SIR 10 TDI (307); RUNTEST 128 TCK; SDR 1 TDI (0) TDO (1) MASK (1); ! !Max 10 Program ICB ! SIR 10 TDI (203); RUNTEST 128 TCK; SDR 23 TDI (300000); SIR 10 TDI (3F4); RUNTEST 128 TCK; SDR 32 TDI (6C48A50F); RUNTEST 8000 TCK; ! !Max 10 DSM Verify ! SIR 10 TDI (307); RUNTEST 128 TCK; SDR 1 TDI (0) TDO (1) MASK (1); ! !Max 10 Program ICB ! SIR 10 TDI (203); RUNTEST 128 TCK; SDR 23 TDI (380000); SIR 10 TDI (3F4); RUNTEST 128 TCK; SDR 32 TDI (FFF7FFFF); RUNTEST 8000 TCK; ! !Max 10 DSM Verify ! SIR 10 TDI (307); RUNTEST 128 TCK; SDR 1 TDI (0) TDO (1) MASK (1); ! !Max 10 Program ICB ! SIR 10 TDI (203); RUNTEST 128 TCK; SDR 23 TDI (480000); SIR 10 TDI (3F4); RUNTEST 128 TCK; SDR 32 TDI (6C48A50F); RUNTEST 8000 TCK; ! !Max 10 DSM Verify ! SIR 10 TDI (307); RUNTEST 128 TCK; SDR 1 TDI (0) TDO (1) MASK (1); ! !Max 10 Program ICB ! SIR 10 TDI (203); RUNTEST 128 TCK; SDR 23 TDI (680000); SIR 10 TDI (3F4); RUNTEST 128 TCK; SDR 32 TDI (6C48A50F); RUNTEST 8000 TCK; ! !Max 10 DSM Verify ! SIR 10 TDI (307); RUNTEST 128 TCK; SDR 1 TDI (0) TDO (1) MASK (1); ! !Max 10 Disable ISP ! SIR 10 TDI (201); RUNTEST 8750003 TCK; SIR 10 TDI (002); RUNTEST 2500000 TCK; SDR 486352 TDI (......) <- Собственно прошивка SIR 10 TDI (004); RUNTEST 125 TCK; SDR 492 TDI (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) TDO (00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000002000) MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000); SIR 10 TDI (003); RUNTEST 102400 TCK; RUNTEST 512 TCK; SIR 10 TDI (3FF); RUNTEST 25000 TCK; STATE IDLE; Гружу его - все работает! В начале много каких-то действий с ISP,DCM,ICB Затем выкинул все непонятные мне действия и оставил только : Spoiler ! FREQUENCY 2.50E+07 HZ; ! TRST ABSENT; ENDDR IDLE; ENDIR IRPAUSE; STATE IDLE; ! SIR 10 TDI (002); RUNTEST 2500000 TCK; SDR 486352 TDI (......) <- Собственно прошивка SIR 10 TDI (003); RUNTEST 102400 TCK; RUNTEST 512 TCK; SIR 10 TDI (3FF); RUNTEST 25000 TCK; STATE IDLE; Тоже всё грузится и работает. Может кто объяснить что такое ISP,DCM,ICB? И зачем это всё разрешать, стирать, запрещать и тд. если и без этого всё работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AMX 0 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба zombi - очень интересную тему подняли! Я сейчас так же изучаю возможность удаленно обновлять конфигурацию маленькой fpga (MAX10 10M08). Я пошел таким путем, подключил логический анализатор к jtag порту и во время прошивки sof файлом декодировал все команды. Планирую так же собрать простой плеер для прямой конфигурации через порт jtag (изобретение велосипеда...). Но, возможно я невнимательно читал, вы пишите: "Вот так выглядит сформированный квартусом файл" - а что это за файл? Это же файл с прямыми инструкциями как я вижу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться