USMI

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.


JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.

Сообщений 261 страница 280 из 351

261

Подтяжка вообще вроде нам не нужна на вход.
Интересный код ,
Обязательно присобачу и допилю уарт управление, уж очень перспективно и круто, даже кнопочки не нужно будет клацать на донгле)

kagaimiq написал(а):

Также я опробовал вариант с проверкой подтяжки на D+, но там вроде есть проблема, что если вместе с атмегой к чипу я подвожу USB от компа, то всё работает, но если к атмеге подключен только чип, то ничего не работает.. Но в твоём коде вроде именно это и проверяется.

У меня оба варианта работают, наверно тупо от платформы зависит. Атмега деревянная просто). Но работает вроде идельно) Вот токо конченные дюпонты и провода бесят.  Приходится просто спаивать норм проводами.
https://forumupload.ru/uploads/001b/ca/8a/2/t717191.jpg

Подпись автора

By Admin

262

kagaimiq написал(а):

к чипу я подвожу USB от компа, то всё работает, но если к атмеге подключен только чип, то ничего не работает..

Если чип перевести в бут, но не подключить к дифф паре, и не дождаться пакетов (а это доли секунд для дифф пары усб) - то чип тупо вываливается куда то из бута.
Он не будет висеть в буте без пк на другой стороне.  Наверно в бутлоадере это сделано как условие для проверки почему чип в бут пошел - нету компа - - значить бутлоадер по ошибке запустился.

Подпись автора

By Admin

263

BIOS написал(а):

Подтяжка вообще вроде нам не нужна на вход.

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

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

264

kagaimiq написал(а):

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

А вот хз. А как же то что чип после успешного приема ключа тянет обе линии на землю? Это же вроде видно на логик дампе. Да и по одному из них тоже можно. У меня работает определение того что чип дергает ногами "вверх" что ещё странее.
Но оно работало идеально год назад, и щас, без каких либо подтяжек. Разумеется тестил только на атмеге 328.
Нужно потестить по подтяжке ног к земле)

Подпись автора

By Admin

265

BIOS написал(а):

то чип тупо вываливается куда то из бута.

Я всё хотел рассказать как работает определение частоты кварца при переходе в бут, и как это связанно с проблемами с опрделением чипа когда рядом подключена CH340 и подобное..

Здесь (на фотке AC695N, поэтому говорю за неё) это происходит потому что здесь в этом моменте стоит таймаут, поэтому через три попытки (до одной секунды) он продолжает номальную загрузку, или что-то вроде того. В AC690N/AC692N и старее, это вроде бесконечно делается.

Собственно эти попытки можно наблюдать как кратковременные импульсы на D+, пока не выйдет в лимит попыток.

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

266

BIOS написал(а):

У меня работает определение того что чип дергает ногами "вверх" что ещё странее.

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

BIOS написал(а):

А как же то что чип после успешного приема ключа тянет обе линии на землю?

Ну вот же, например кусок кода из maskrom от AC692N:

Код:
uint16_t rx = 0xFFFF;
bool usbkey_received = false;

while (!usbkey_received) {
  /* did we time out? */
  if (JL_TIMER2->CON & (1<<15))
    break;

  /* did the clock pulse? */
  if (JL_TIMER3->CON & (1<<15)) {
    JL_TIMER3->CON |= (1<<14);	/* clr int */

    /* pick the bit */
    rx = (rx << 1) | ((JL_USB->IO_CON1 >> 16) & 1);

     /* did the key match? */
    usbkey_received = rx == 0x16EF;
  }
}

if (usbkey_received) {
  /* pull (short) both lines to ground */
  JL_USB->IO_CON0 &= ~(1<<0);	/* D+ low */
  JL_USB->IO_CON0 &= ~(1<<1);	/* D- low */
  JL_USB->IO_CON0 &= ~(1<<2);	/* D+ output */
  JL_USB->IO_CON0 &= ~(1<<3);	/* D- output */

  /* wait for a while */
  JL_TIMER2->CON = 0;
  JL_TIMER2->CNT = 0;
  JL_TIMER2->PRD = 14400;
  JL_TIMER2->CON = (1<<14) | 1;    /* clr int, start! */
  while (!(JL_TIMER2->CON & (1<<15)));
}

JL_TIMER3->CON = 0;	/* stop */
JL_TIMER2->CON = 0;	/* stop */

JL_TIMER3->CON |= (1<<14);	/* clr int */
JL_TIMER2->CON |= (1<<14);	/* clr int */

/* release both lines */
JL_USB->IO_CON0 |= (1<<2);	/* D+ input */
JL_USB->IO_CON0 |= (1<<3);	/* D- input */
JL_USB->IO_CON0 &= ~(1<<4);	/* D+ no pulldown */
JL_USB->IO_CON0 &= ~(1<<5);	/* D- no pulldown */
JL_USB->IO_CON0 &= ~(1<<6);	/* D+ no pullup */
JL_USB->IO_CON0 &= ~(1<<7);	/* D- no pullup */

В цикле ожидает когда на D+ появится фронт (захват через timer3) и потом он сохраняет уровень на D- в переменную, и если там появилось 0x16EF, то он выходит из цикла и потом ноги D-/D+ настраиваются на выход, и выводится низкий уровень. Через некоторое время эти ноги отпускаются и уже идёт к остальному коду.

В AC695/696 это по сути тоже самое, но приём и проверка происходит уже в прерывании таймера, так как там параллельно ещё и ключ для UART бута принимается.

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

267

По-моему я сам что-то тут не так понял и всё запутал..

BIOS написал(а):

А как же то что чип после успешного приема ключа тянет обе линии на землю?

Тут я как-то криво прочитал вопрос, и подумал что тут спрашивется "А как же то что чип после успешного приёма ..." и тут же начал объяснять про эту штуку..

Всё вроде началось с ответа на это:

BIOS написал(а):

Подтяжка вообще вроде нам не нужна на вход.

Если это про то что я там делаю "pinMode(PULL_CTRL, INPUT);", то это делается чтобы эту подтяжку отключить, так как нам она уже не нужна, от чипа уже пришёл ответ или произошёл таймаут.

Это под вариант где USB с компа (или выходы атмеги) напрямую к чипу подключены, без USB переключателя (как в моём случае), чтобы эта подтяжка не мешала своим присутствием.

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

268

kagaimiq написал(а):

Тут я как-то криво прочитал вопрос, и подумал что тут спрашивется "А как же то что чип после успешного приёма ..." и тут же начал объяснять про эту штуку..

Ну я и криво написал.  Вот да, совсем забыл что многие просто подключают все параллельно, без ключей. Я так не пробовал ни разу. ХЗ как оно отобразиться на хабе в чипсете)

Подпись автора

By Admin

269

kagaimiq написал(а):

ещё и ключ для UART бута принимается.

Тоесть в них по дефолту есть уарт загрузчик ?

Подпись автора

By Admin

270

BIOS написал(а):

Тоесть в них по дефолту есть уарт загрузчик ?

Ну да, он там есть всегда

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

271

Как он запускается? Нужно послать UART_KEY? И потом работать через уарт лоадер? Ты не пробовал, какие у него возможности?

Подпись автора

By Admin

272

BIOS написал(а):

Как он запускается? Нужно послать UART_KEY?

Да, на PB5 надо отправить UART_KEY, потом на этой ноге уже будет UART. По дефолту он на 9600 бод настроен, но его скорость увеличивается при передаче самого лоадера.

BIOS написал(а):

Ты не пробовал, какие у него возможности?

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

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

273

kagaimiq написал(а):

Да, на PB5 надо отправить UART_KEY, потом на этой ноге уже будет UART. По дефолту он на 9600 бод настроен, но его скорость увеличивается при передаче самого лоадера.

Думаю что UART_KEY отсылается по USB точнее то, что на ногах усб в момент опроса бутлоадера при включении чипа, думаю там i2c.  PB5 наверно просто порт уарта. Кстати, не понятно, оно там двустороннее или одностороннее (название протоколов UART не помню)
Написано только TX но и кое что про RX (оно закомментировано)
Вот с .ini

Код:
UTTX=PB04;//uboot串口tx
UTBD=1000000;//uboot串口波特率
#UTRX=PB01;串口升级[PB00 PB05 PA05]

Еще про ресет пин

Код:
RESET=PB01_00_0;	//port口_长按时间_有效电平(长按时间有00、01、02、04、08五个值可选,单位为秒,当长按时间为00时,则关闭长按复位功能。)

А это лов вольтайдж детектор,

Код:
VLVD=4;//VDDIO_LVD挡位,0: 1.9V   1: 2.0V   2: 2.1V   3: 2.2V   4: 2.3V   5: 2.4V   6: 2.5V   7: 2.6V

Как и чем оно измеряется, и главное зачем. Скоро должна прийти панелька для прогера ISP под 6928 чипы, там с сзади на плате будут детальки и можно будет срисовать схему и снять логи.
Еще про уарт - на донгле 4 версии можно включить по мимо джитага и обычных усб триггеров - уарт. На компе делается виртуальный ком-порт, туда привязывается донгл, и уже от туда оно работает. Я пробовал но тогда мы даже ключи еще не генерировали. Нужно будет тоже раскурить. Правда там скорости уарта очень большие, и оно даже свой драйвер ставит.

Подпись автора

By Admin

274

kagaimiq написал(а):

надо ещё разобраться как в него правильно отправить UART_KEY, но в принципе в какую сторону идти я уже понял.

Получилось таки это сделать, форма сигнала получается такая вот:
https://forumupload.ru/uploads/001b/ca/8a/3/268990.png

Здесь каждый пакет ключа начинается со стартого бита, который несёт функцию "референсного импульса", т.е. для того, чтобы всё принялось, сами биты ключа должны иметь примерно один и тот же период, вроде от отклонения в 10% приём сбрасывается, но я пока это точно не понял. Какая там длительность высокого уровня особой роли не играет.

Далее идут 16 бит самого ключа, где биты ключа (0x68AF - 0110 1000 1010 1111) кодируются длительностью высокого уровня, где бит '0' кодируется длительностью в 1/5 периода, а '1' - 4/5 периода.
Потом идёт финальный импульс, для того чтобы закончить последний бит (обработка идёт на фронтах сигнала, на спадах просто фиксируется время высокого уровня), и потом если чип успешно принял этот ключ, то он тянет эту ногу к питанию на ~2мс и затем переходит к коду для приёма лоадера по UART, на этой ноге уже активна подтяжка.

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

275

BIOS написал(а):

Как и чем оно измеряется, и главное зачем.

BIOS написал(а):

VDDIO_LVD挡位

Как я понял это на ноге VDDIO - эксперименты с 690 это подтвердили, если во время запуска чипа на ноге VDDIO - 5в, то чип не грузится ни в бутлоадер, ни в основную программу. По ходу в ISP,  вот по этому на панельке которую мы срисовывали с 6904 чипа - там зачем то через транзистор на ногу VDDIO  подается 5в с 1117 стаба.

Подпись автора

By Admin

276

kagaimiq написал(а):

тклонения в 10% приём сбрасывается, но я пока это точно не понял. Какая там длительность высокого уровня особой роли не играет.

На донгле нога TX  на пол секунды меняет свое состояние.

Подпись автора

By Admin

277

BIOS написал(а):

вот по этому на панельке которую мы срисовывали с 6904 чипа - там зачем то через транзистор на ногу VDDIO  подается 5в с 1117 стаба.

Оно от туда на VBAT идёт, а не на VDDIO, по крайней мере так на схеме которую я от туда срисовал.

Отредактировано kagaimiq (2023-12-12 19:38:14)

Подпись автора

水Mizu-DEC JLtech since 22.06.2019

278

kagaimiq написал(а):

Далее идут 16 бит самого ключа, где биты ключа (0x68AF - 0110 1000 1010 1111) кодируются длительностью высокого уровня, где бит '0' кодируется длительностью в 1/5 периода, а '1' - 4/5 периода.
Потом идёт финальный импульс, для того чтобы закончить последний бит (обработка идёт на фронтах сигнала, на спадах просто фиксируется время высокого уровня), и потом если чип успешно принял этот ключ, то он тянет эту ногу к питанию на ~2мс и затем переходит к коду для приёма лоадера по UART, на этой ноге уже активна подтяжка.

Ага, круто. Наверно я спутал это с ресетом.
Дело в том, что в кое каких документах они по мимо уарта еще и усб подключают.
https://forumupload.ru/uploads/001b/ca/8a/2/t250158.png
https://forumupload.ru/uploads/001b/ca/8a/2/t604039.png
https://forumupload.ru/uploads/001b/ca/8a/2/t412182.png
https://forumupload.ru/uploads/001b/ca/8a/2/t299566.png
https://forumupload.ru/uploads/001b/ca/8a/2/t902521.jpg
https://forumupload.ru/uploads/001b/ca/8a/2/t448055.png

Подпись автора

By Admin

279

kagaimiq написал(а):

Оно от туда на VBAT идёт, а не на VDDIO,

Ага, нашел. Ну не важно, скоро придет панелька, и точно скажу. Там же еще VPP еще есть какое то.  Они по крайней мере пишут что без него не будет прожигаться ключ. В описании к ошибкам программатора там написано, "не удается прожечь чип ключ -  проверьте напряжение программирования VPP "
Тот транзистор все таки - NPN (так говорит тт тестер. ) (выпаял с здорового ISP  прогерра на альтере, там точно та же схема подключения и распиновка.)
У меня есть такая штука, не рабочая, куплена за копейки, в основном из-за панелек 48 пин. Брал все за 15 баксов вроде, в розницу одна панелька стоит 12 баксов.
https://forumupload.ru/uploads/001b/ca/8a/2/t979907.png

Подпись автора

By Admin

280

BIOS написал(а):

По ходу в ISP,

Не думаю, это скорее что-то связанное с перенапряжением. Если там реально так чип в ISP переходит, то он, по идее, должен на ISP команды реагировать.

Прогер ISP 1T2 переводит чип в ISP путём отправки "FF 6A58" (для AC109N, AC690N..), "FF 81F9A8" для AC691N или "FF 01F9A8" для AC692N (впрочем это присутствует и в более старших сериях - например ISP_KEY из донгла V4 как раз начинается с этого - поэтому AC692N и реагировала на ISP_KEY от донгла)

Я даже это проверял, на AC1082 и на AC6908. Оба так переходили в ISP, и на AC1082 я даже смог запустить свой код, там что-то подампить через UART, и помигать светодиодом.. На AC6908 я тоже так делал, но в принципе так можно было и через USB делать, отличие только в том, что там для USB нужен кварц, и USB стек на хосте, а с ISP можно просто от ISP_CLK тактировать чип, да и общение грубо говоря происходит по SPI, через простые команды. ISP прогер для самой прошивки либо напрямую через ISP общается (на сериях вроде AC109N/209N/309N), либо через UART, с загрузчиком который он перед этим через ISP загрузил.

Отредактировано kagaimiq (2023-12-12 20:25:19)

Подпись автора

水Mizu-DEC JLtech since 22.06.2019


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.