JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.
Сообщений 341 страница 351 из 351
Поделиться3422024-08-11 20:00:48
То есть перевод в бутлоадер путем загрузки в чип бинарника где прописан перевод в бутлоадер и работа от внутреннего генератора...
Скопировать будет сложно?
Ну, если будет хватать места под сами бинарники под каждый чип, то думаю реализовать будет несложно.
Впринципе их размер можно уменьшить, например если их из ISP комманд раскодировать в исходные данные. Или например убрать оттуда лишнее, например у них обычно ещё есть код для приёма лоадера по UART (вместо того чтобы использовать код из ROM-а, как это делается для USB бута)
- Подпись автора
水Mizu-DEC JLtech since 22.06.2019
Поделиться3432024-08-11 20:17:43
С местом проблем не должно быть, на крайняк можно организовать внешнюю spi под файлы. А прожиг получается AT командами?
- Подпись автора
By Admin
Поделиться3442024-08-11 21:17:50
Ну там конечно не AT комманды, но вообще в этом случае UART используется только лишь для передачи самой прошивки, сначала прогер отправляет информацию о данных для прошивки (размер, CRC), потом чип отвечает ID флеши, и данными со фьюзов.
Потом прогер отправляет байт 0x0F до тех пор пока чип не ответит тем же в ответ. Потом уже UART настраивается на скорость 3000000 бод (вроде как) и происходит передача прошивки.
Тут ещё есть нюанс, что параметры прошивки (режим, и вот это всё) отсылаются на стадии загрузки самого лоадера (после его данных), собственно это оно и есть:
- Подпись автора
水Mizu-DEC JLtech since 22.06.2019
Поделиться3452024-08-11 21:46:01
Тут ещё есть нюанс, что параметры прошивки (режим, и вот это всё) отсылаются на стадии загрузки самого лоадера (после его данных), собственно это оно и есть:
А куда в конечном итоге efuse пишет? У самого проца есть память по мимо spi? Интересто считывать фьюзы и писать)
Есть в прогере empty burn + фьюзы. Сделаю щас дамп)
- Подпись автора
By Admin
Поделиться3462024-08-11 22:51:35
А куда в конечном итоге efuse пишет? У самого проца есть память по мимо spi?
Конечно же. В случае с чипами вроде BR17-BR21, там есть 32 фьюз-бита, которые организованы как 2 страницы по 16 бит каждая. В первой хранятся калибровочные/конфигурационные данные, а во второй - chipkey.
Доступ к ним (чтение и прожиг) - через регистр EFUSE_CON.
В чипах вроде BR25 там их уже 64 бита (32 бита на страницу), и они там вообще вроде как часть PMU (они читаются через обращение к регистрам PMU P33).
- Подпись автора
水Mizu-DEC JLtech since 22.06.2019
Поделиться3472024-08-11 23:15:50
Интересно конечно, и запарились они знатно с этими лоадерами...
Ну так и есть, уарт чисто для прошивки...)
6928_only fuse.logicdata
- Подпись автора
By Admin
Поделиться3482024-08-11 23:20:34
С платформой - лучше нам взять что то уже с внешней флешкой, что бы влезло все. RP2040 к примеру, или esp 32, я имею в виду цена+доступность на рынке.
Какие мысли?
- Подпись автора
By Admin
Поделиться3502024-09-06 19:03:13
Что за релюха , Опто?
#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
Поделиться3512024-09-06 22:50:09
Не релюха, HC4016 аналоговый свитч
Вместо р-канального мосфета pnp, норм же?
Код видел, спасибо
Отредактировано Nikita_yfh (2024-09-06 22:52:59)