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

Загрузить .sof в MAX10 с МК

1 час назад, zombi сказал:

Но в документе по Вашей ссылке на чип 10M02SCE144 я не нахожу инструкцию 002.

Ожидаю увидеть что-то типа строки "блаблабла (0000000010), "&

а нет ёё :wacko2:

В BSDL нет инструкций для программирования. Это внутренняя кухня, не соответствующая ни одному стандарту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, dvladim said:

Это внутренняя кухня, не соответствующая ни одному стандарту.

Это что-же получается, кроме как просматривая файлы для программирования больше нигде не получить эту информацию?

Или Altera/Intel даёт какие документы на этот счёт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нужно искать не на конкретный чип в корпусе, а на семейство. Вот тут есть всё, что необходимо на МАХ10.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, HardWareMan said:

Вот тут есть всё, что необходимо на МАХ10.

Всё равно не вижу, где бы там говорили что для загрузки CRAM напрямую по JTAG нужно:

записать в IR 002

выждать паузу 2500000 тактов

и затем в DR передать поток битов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 hours ago, zombi said:

Чем обусловлено именно 8000 пустых тактов?

Необходимостью формирования задержки в 320 мкс (вероятно это время необходимое для записи) или нужно именно 8000 тактов?

Если мой ногодрыгательный JTAG будет работать максимум на частоте 2 MHz, могу ли я сделать лишь 640 пустых тактов?

 

А на этот мой вопрос может кто подсказать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, zombi said:

именно 8000 пустых тактов

Помнится, когда-то грузили в FPGA, но по другому интерфейсу. Там тоже указывалось определенное кол-во тактов. Насколько понял - внутри автомат должен столько тактов скушать, чтобы прийти к определенному состоянию.

Изменено пользователем Yuri124

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, zombi сказал:

Всё равно не вижу, где бы там говорили что для загрузки CRAM напрямую по JTAG нужно:

Создайте JAM файл. Там будет реализация алгоритма.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Объясните плиз вот такую команду :

SDR 492 TDI (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) 
        TDO (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000)
       MASK (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000);

Обязательно ли дёргать TCK все 492 такта, если интересующий бит 14-й?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Обязательно.

Это сдвиговый регистр в который вводятся новые значения состояний выходов (на самом деле сложнее) и выводятся текущие защелкнутые состояния входов.

Если вы не полностью выведите введете состояние и защелкните их, то может пойти дым...

 

Upd

Выложил цикл статей Ами Городецкого по JTAG: /upload/DOC/JTAG/Статьи/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ясно.

А подскажите правильно ли я понимаю что, если такая последовательность команд :

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>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На предыдущий вопрос, раз возражений нет, понимаю что всё правильно.

Но тогда следующий вопрос: в начале SVF файла вижу

ENDDR IDLE;
ENDIR IRPAUSE;

Как понял, что после загрузки DR регистра TAP контроллер нужно перевести в состояние IDLE.

А после загрузки IR регистра в IRPAUSE.

Для чего это сделано? Почему бы после IR тоже в IDLE не переводить? Чем может быть вызвана катая необходимость?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, zombi сказал:

Почему бы после IR тоже в IDLE не переводить? Чем может быть вызвана катая необходимость?

Логика подсказывает, что алгоритмом программирования целевой схемы.

А вот такой вопрос: вы хотите сами написать плеер? Может проще готовый взять и портировать под ваш контроллер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, dvladim said:

Логика подсказывает, что алгоритмом программирования целевой схемы.

Странный какой-то алгоритм...

После загрузки IR оставить TAP в состоянии <PAUSE_IR> , т.е. не выполнить <UPDATE_IR>

При том что после SIR всегда следующей командой идёт RUNTEST которая и переведёт TAP в IDLE.

Не понимаю в чём смысл.

14 minutes ago, dvladim said:

Может проще готовый взять и портировать под ваш контроллер?

Во первых - мне самому интересно разобраться.

Во вторых - мне на ассемблере AVR надо сделать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Реализовал на 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?

И зачем это всё разрешать, стирать, запрещать и тд. если и без этого всё работает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

zombi - очень интересную тему подняли! Я сейчас так же изучаю возможность удаленно обновлять конфигурацию маленькой fpga (MAX10 10M08).
Я пошел таким путем, подключил логический анализатор к jtag порту и во время прошивки sof файлом декодировал все команды.
Планирую так же собрать простой плеер для прямой конфигурации через порт jtag (изобретение велосипеда...).
Но, возможно я невнимательно читал, вы пишите: "Вот так выглядит сформированный квартусом файл" - а что это за файл? Это же файл с прямыми инструкциями как я вижу... :smile:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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