USMI

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

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


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


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

Сообщений 341 страница 360 из 382

341

Да, там сначала подгружается br21sync.bin в чип, и потом уже по UART идёт прошивка, прожиг и вот это вот всё.

https://forumupload.ru/uploads/001b/ca/8a/3/t726964.png

https://forumupload.ru/uploads/001b/ca/8a/3/t427222.png

https://forumupload.ru/uploads/001b/ca/8a/3/t802016.png

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

水Mizu-DEC JLtech since 22.06.2019

342

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

То есть перевод в бутлоадер путем загрузки в чип бинарника где прописан перевод в бутлоадер и работа от внутреннего генератора...
Скопировать будет сложно?

Ну, если будет хватать места под сами бинарники под каждый чип, то думаю реализовать будет несложно.
Впринципе их размер можно уменьшить, например если их из ISP комманд раскодировать в исходные данные. Или например убрать оттуда лишнее, например у них обычно ещё есть код для приёма лоадера по UART (вместо того чтобы использовать код из ROM-а, как это делается для USB бута)

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

水Mizu-DEC JLtech since 22.06.2019

343

С местом проблем не должно быть, на крайняк можно организовать внешнюю spi под файлы. А прожиг получается AT командами?

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

By Admin

344

Ну там конечно не AT комманды, но вообще в этом случае UART используется только лишь для передачи самой прошивки, сначала прогер отправляет информацию о данных для прошивки (размер, CRC), потом чип отвечает ID флеши, и данными со фьюзов.

https://forumupload.ru/uploads/001b/ca/8a/3/t181387.png

Потом прогер отправляет байт 0x0F до тех пор пока чип не ответит тем же в ответ. Потом уже UART настраивается на скорость 3000000 бод (вроде как) и происходит передача прошивки.

Тут ещё есть нюанс, что параметры прошивки (режим, и вот это всё) отсылаются на стадии загрузки самого лоадера (после его данных), собственно это оно и есть:
https://forumupload.ru/uploads/001b/ca/8a/3/t812665.png

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

水Mizu-DEC JLtech since 22.06.2019

345

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

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

А куда в конечном итоге efuse пишет?  У самого проца есть память по мимо spi? Интересто считывать фьюзы и писать) 
Есть в прогере empty burn + фьюзы. Сделаю щас дамп)

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

By Admin

346

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

А куда в конечном итоге efuse пишет?  У самого проца есть память по мимо spi?

Конечно же. В случае с чипами вроде BR17-BR21, там есть 32 фьюз-бита, которые организованы как 2 страницы по 16 бит каждая. В первой хранятся калибровочные/конфигурационные данные, а во второй - chipkey.
Доступ к ним (чтение и прожиг) - через регистр EFUSE_CON.
https://forumupload.ru/uploads/001b/ca/8a/3/t87862.jpg

В чипах вроде BR25 там их уже 64 бита (32 бита на страницу), и они там вообще вроде как часть PMU (они читаются через обращение к регистрам PMU P33).

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

水Mizu-DEC JLtech since 22.06.2019

347

Интересно конечно, и запарились они знатно с этими лоадерами... 
Ну так и есть, уарт чисто для прошивки...)
https://forumupload.ru/uploads/001b/ca/8a/2/t181205.png
6928_only fuse.logicdata

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

By Admin

348

С платформой - лучше нам взять что то уже с внешней флешкой, что бы влезло все. RP2040 к примеру, или esp 32, я имею в виду цена+доступность на рынке.
Какие мысли?

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

By Admin

349

https://forumupload.ru/uploads/001b/ca/8a/167/t874031.jpg
Собрал прогер наконец то на базе ардуинки, буду отлаживать

350

Что за релюха , Опто?

Код:
#define JL_CLK          A5    ///USBDP
#define JL_DAT          A4    ///USBDM
#define BUS_CTRL        A3    ///USB_BUS_CTRL   
#define POW_CTRL        A2    ///USB_POWER_CTRL
#define POW_RESET       2    ///USB_POWER_CTRL
#define LED             13    ///LED
boolean answer=0;               //статус ответа
boolean done=0;                 //0-время не вышло, 1 - время вышло (подача сигналов)
boolean setupdone=0;            //0-переинициализации не было, 1- была
unsigned long ann=0;            //засечка времени
unsigned long timecount=0;      //то же самое)
int cnt;                        //счетчик сигналов
bool send_usbkey(void) {
  pinMode(JL_DAT, OUTPUT);
  pinMode(JL_CLK, OUTPUT);

  for (uint16_t mask = 0x8000; mask; mask >>= 1) {
    digitalWrite(JL_DAT, (mask & 0x16EF) ? HIGH : LOW);
    digitalWrite(JL_CLK, LOW);
    delayMicroseconds(10);
    digitalWrite(JL_CLK, HIGH);
  }

  pinMode(JL_DAT, INPUT_PULLUP);
  pinMode(JL_CLK, INPUT_PULLUP);

return (digitalRead(JL_DAT) == LOW) && (digitalRead(JL_CLK) == LOW);
}

void setup() 
{
  pinMode(POW_RESET, INPUT_PULLUP);
  if(done==0)
  {
    pinMode(POW_CTRL, OUTPUT);
    pinMode(LED, OUTPUT);
    digitalWrite(LED,1);
    digitalWrite(LED,0); 
  }
  else
  {
    pinMode(LED, OUTPUT);
    digitalWrite(LED,0);
  }
}

void loop() 
{
  if(digitalRead(POW_RESET) == LOW)
  {
    digitalWrite(POW_CTRL,1); 
    delay(100);
    digitalWrite(POW_CTRL,0); 
  }
 if(answer==0)
 {              //если нет ответа
   if(cnt==1)
   {               //количество сообщений
     done=1;                   //сигналы посланы
     if(setupdone==0)
     {         //если переинициализации не было
       setup();                  //переинициализация
       setupdone=1;              //переинициализация выполнена
       timecount= micros();      //старт отсчета 50 микросек
     }
     
     if(digitalRead(JL_DAT)==1)
     {    //если на ноге +
      answer=1;                                       //статус ответа
     }
     else if(micros()>timecount)
     {                      //если в течение 50 мкс нет ответа
       done=0;                                         //сбрасываем все переменные
       setupdone=0;
       ann=millis();
       timecount=0;
       answer=0;
       cnt=0;
       setup();                                        //переинициализация
     }
   }
   else
   {      
     pinMode(BUS_CTRL,OUTPUT);
     digitalWrite(BUS_CTRL,0);
     digitalWrite(POW_CTRL,0);     
     delayMicroseconds(1000);
     pinMode(POW_CTRL,OUTPUT);
     //digitalWrite(POW_CTRL,1); 
     while (!send_usbkey());
     delayMicroseconds(5000);  
     cnt++;
   }
 }
 else
 {
 digitalWrite(BUS_CTRL,answer);      
 digitalWrite(POW_CTRL,0);            // состояние ключа шины после принятия ответа
 digitalWrite(LED, answer); //LED  
 }
}

Точно работает на 690/691/692/695/696/697/698/701

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

By Admin

351

Не релюха, HC4016 аналоговый свитч
Вместо р-канального мосфета pnp, норм же?

Код видел, спасибо

Отредактировано Nikita_yfh (2024-09-06 22:52:59)

352

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

Накидал тут схемку с платкой на обеде, глядишь кому-нибудь пригодится.
Google Диск

обязательно использовать такого типа реле или можно другим заменить?

Можно ли реле заменить к примеру оптопарой? если да помогите со схемкой пожалуйста

353

еще вопрос по маркировке: у меня на микросхеме последние три цифры - 584, не где не нашел как расшифровать маркировку, но из интернета узнал, что это AC6905, также на обратной стороне платы оказывается написано AC6905B_V3.6, можно ли верить надписи на плате или производитель мог поставить AC6905А например?

Как это можно уточнить? Ведь объем памяти у них разный

Отредактировано GeParDos (2024-11-24 17:24:25)

354

Я правильно понял что USB *1B - для подключения ПК, а USB *1A - для подключения чипа?

https://forumupload.ru/uploads/001b/ca/8a/189/t819262.png

их можно одновременно подключить?

355

Собрал адаптер по вышеуказанной схеме, но подключить AC6905 так и не получилось, использовал четырёх контактное реле и мосфеты помощнее (AO4411 и AO4422), может они всему виной?

356

Или может стоит контроллер отпать от платы, может ему что-то не дает перейти в бут режим?

357

Фотку в студию. и какой код использовал?

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

By Admin

358

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

Фотку в студию. и какой код использовал?

Скейч брал из поста JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.

Фотку адаптера или платы?
В любом случае сейчас на работе, завтра утром выложу

359

Изначально пробовал скейч тот что самый простой с гетхаба, мучался, мучился в итоге психанул решил пойти спать, отключил сначала Ардуино и оп чисто случайно определился br17... тут я понял что нужно при коннекте отключить ардуинку, но сколько бы я не пробовал так и не получилось поймать этот момент

360

Ура у меня получилось, как сразу не сообразил в хаб переключиться, ведь ранее об этом писалось! Получилось даже без адаптера, но с тем же кодом от BIOS

https://forumupload.ru/uploads/001b/ca/8a/189/t845677.png


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