USMI

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

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


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


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

Сообщений 281 страница 300 из 351

281

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

Я даже это проверял, на AC1082 и на AC6908. Оба так переходили в ISP, и на AC1082 я даже смог запустить свой код, та

Ууу. В оперативку я так полагаю, оно же там отп) .

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

а с ISP можно просто от ISP_CLK тактировать чип, да и общение грубо говоря происходит по SPI,

Ну оно и понятно было что там SPI . А чем ты общаешься по SPI?
Интересно покурить фьюзы, внешний /внутренний кварц, и тд)
Знать бы еще что там доступно.
По 1082, а как ты это все сделал? Да и на 6908 тоже, по усб или подключал по spi? И если по SPI, то как распиновку нашел?

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

By Admin

282

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

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

Отправки на усб пины? А чистый проц допустим тот же 1082 по идее можно даже прожечь так? (сам проц не интересен вообще, просто интересен протокол. ). Кстати для программирования 1082  нужно 6.5в . Там оно на прямую подается с контакта VPP на P46 вроде как.

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

By Admin

283

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

Интересно покурить фьюзы, внешний /внутренний кварц, и тд)

Я думаю что это всё софтом уже реализуется, обращение к фьюзам и т.п.

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

А чем ты общаешься по SPI?

Тогда я на W806 запрограммировал это всё, правда там я всё ногодрыгом делал, ибо не освоил местный SPI интерфейс (да и сейчас не особо то..)
Т.е. через обычный МК я это делаю, ничего особенного.

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

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

По 1082, а как ты это все сделал? Да и на 6908 тоже, по усб или подключал по spi? И если по SPI, то как распиновку нашел?

Туда просто подключил три проводка к ISP_CLK/DIN/DOUT, и отправлял ту процедуру инициализации от прогера.

Распиновка для AC109N это - P00 = ISP_CLK, P01 = ISP_DIN, P02 = ISP_DOUT.
Для AC690N мы уже разбирали - PA03 = ISP_CLK, USBDP = ISP_DIN, USBDM = ISP_DOUT.

На AC6908 я конечно же SPI использовал, я же с ISP разбираюсь, а не с USB, так то.

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

Отправки на усб пины?

Туда же где и ISP - ISP_CLK, ISP_DIN, все дела.

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

Кстати для программирования 1082  нужно 6.5в . Там оно на прямую подается с контакта VPP на P46 вроде как.

Я это уже знаю, тем более, это видно на той фотке с панелькой под AC1082, там ещё VDDIO и LDO5V накоротко соединены, и потом уходят в контакт с 3.3в.

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

А чистый проц допустим тот же 1082 по идее можно даже прожечь так?

Думаю да, подать Vpp, отправлять нужные комманды и так получится прошить.

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

水Mizu-DEC JLtech since 22.06.2019

284

Что сказать - круто.  Что касается LVD, он разное на разных чипах. Интересно зачем оно? Или тоже таким методом перед включением чекает , если да то в бут, если нет , то грузимся?
Ну теоретически LVD только так и использовать можно с бутлоадером. Остальное VPP/RESET/TX/RX понятно. До НГ пару недель будет свободного времени, и панельки с чистыми чипами должны подъехать на неделе.
Интересно только фьузы потыкать и схематические включения разных чипов для ISP что бы эти самые фьузы прошить). Там фьюзами целые модули можно вкл и откл. У меня есть пачка новых 6082 - тот же 695, но нету ног под кварц, и они не работают с донглом через тактирование от донгла, у них фьуз этот TRIMM от внешнего чего то там отключен, они сами пишут что сначала нужно через 1Т2 прогер прошить фузы, и потом с чипом можно будет работать через донгл.
6082 - ну тоже не сильно интересен, но это по лучше 1082, от с флеш нормальным, и по сути обрезок без радиочасти от 695.

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

By Admin

285

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

6082

Я к чему, чип за 20 центов, с нормальной такой периферией. Еще и ЦАП в придачу.  Хочу собрать СДК ,  и сделать вольтметр, начну с 6925 чипов, там есть все, и примеры работы с АЦП , измерением, драйвер дисплеев, так что думаю получится.
Просто отрезать все лишнее) . Но опять же время) Еще и плат куча нужно доделать, а они наплодили серий чипов ппц. У меня щас новый фаворит - 695  серия, в частности 6956с8 в qfn32  корпусе, все супер, цена, начинка, размеры, в нем даже фм трансмиттер не отрезали) . Ну и по начинку такое ощущение что это отполированные 692 и тд, там даже ацп не порезали как в 692, по мимо аналогового мультиплекса, еще 4 канала ацп для аудио. (не считая 10 ацп как у всех на кнопки по 10 бит). И даже работа с внешней флешкой под маин программу сделали нормально, припаял флешку, и все туда прошивается)

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

By Admin

286

Пилю донгл, вопрос - как лучше сделать?
Донгл к чипу всегда подключен, не нужно будет перетыкать и тд. Также и атмега 328 подключена всегда через CLK DAT, и просто после перевода в бут - подключает  ПК усб до JL чипа.
Так вопрос собственно в режимах,
1 - режим uboot - с этим всё ясно.
2 - режим тестирования запрограммированного чипа JL - просто ждем загрузки основной только что залитой программы в чип и конектимся к ней как усб звуковуха/хид/и тд.
3 - режим дебага уартом. Загружаем в ацшку софт где дебаг настроен на усб, и тут у меня возникает вопрос, что лучше и как можно?
     ----
     1 - Можно ли использовать всегда подключенные ноги  CLK DAT на атмеге как уарт? Мне кажется что лучше использовать мост JL uart - atmega - ch340.
     2 - Или можно просто параллельно подключиться к уарту между ch340 и atmega328? Который используется по дефолту для прошивки атмеги и управлением донглом через комп.  Не будет ли конфликта?
Главное иметь управление по уарт донглом, и не мешая при этом дебагу JL.

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

By Admin

287

#include <SoftwareSerial.h> походу единственный вариант.

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

By Admin

288

Ага, не все так просто. Софтовый уарт может на прием данных использовать только две определенные ноги (где есть прерывания).

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

By Admin

289

да и такое себе. останавливать всю программу , ибо от ацшки постоянно будут сыпаться данные.

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

By Admin

290

Может просто от ch340  использовать  TX to atmega & RX to JL. Интересно, можно ли так сделать? Тогда наверно будет работать и управление ардуинкой по уарту, и дебаг от чипа, но теряется обратная связь. Или Скорее всего вообще не будет работать ничего).
Или сделать переключение уарта хардварно? Например через те же аналоговые ключи, но тогда в одном из состояний когда он будет отключен от атмеги, не будет управления.   
Завтра попробую каждый метод. Нечего гадать) :D

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

By Admin

291

Подскажите, какой версии донгл собирать?
4?

292

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

Подскажите, какой версии донгл собирать?
4?

Последней на ардуине или на 6925. И там и там, нужны ключи по шине и питанию)

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

By Admin

293

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

Последней на ардуине или на 6925. И там и там, нужны ключи по шине и питанию)

Это обязательно всё будет)
Какой уровень идёт на ключ шины? Высокий или низкий, для его включения. Хочу другой поставить, под рукой есть CD4066.

294

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

Какой уровень идёт на ключ шины?

Там две стороны у ключа, если ты о ключе усб шины. Соответственно в какой разъем воткнешь такой и нужен будет. У меня по дефолту используется  нормально-отключенный порт(состояние управления 0), когда чип перевели в бут - нормально-отключенный порт(состояние управления 1). Нормально-подключенный порт я пока не использую. Будет под флешку или что то еще.

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

By Admin

295

Прошивки от донглов можно же через jl_uboot_tool записать?
Только интересно v4 весит 2 MB

296

Да можно. Только на 692 чипы. Но донгл 4 версии тот что заводской - он на чипе AC5213B4, а его просто так не купить, да и схему я с него еще не скопировал. И утилиты на питоне нет пока поддержки  DV15. Я просто разбирал донгл, выпаивал флешку и сливал дамп.
Для прошивки нужна утилита своя или через удаленное обновление прям с китайского сервера.
Софт для прошивки DV15 я тупо случайно обнаружил в виде ексешника, когда  колупал какой то сдк не относящейся к DV15.
JL SoC. (杰理芯片) Programmer (Dongle) (Download Tool) Программатор.

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

By Admin

297

то есть v4 это прошивка с AC5213B4
понял

Отредактировано priradio585 (2023-12-29 02:21:19)

298

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

Last Full Firmware For Updater - Dongle v4.
Для оффлайн прошивки.

CPU - AC5213B4
Firmware 2023-03-24.
Flash Tool For DV15 UBOOT - SM01-DFU.EXE

FIrmware+TOOL
Схема будет позже.

есть ли схема ?

299

Ради разнообразия, вот код для USB донгла на MicroPython.

Есть два варианта, первый универсальный, а второй для ногодрыга использует PIO из RP2040.

usbkey1
Код:
from machine import Pin
from time import sleep_us, sleep_ms, ticks_ms, ticks_diff

pwrctl  = Pin(15)   # Power control
pullctl = Pin(16)   # USB pullup control (for reliable ACK sampling)
jlclk   = Pin(20)   # Key clock signal (USBDP)
jldat   = Pin(21)   # Key data signal  (USBDM)

pwrctl.init(Pin.OUT, value=0) # power off
pullctl.init(Pin.IN) # do not pull anywhere yet

jldat.init(Pin.IN);jlclk.init(Pin.IN)

#----------------------------------------------------

powerstate = False

def power_off():
    global powerstate

    pwrctl(0)   # Power off
    powerstate = False

def power_on():
    global powerstate

    if powerstate:  # Do a power cycle
        power_off()
        sleep_ms(250)

    pwrctl(1)   # Power on
    powerstate = True

#----------------------------------------------------

def sendkey(key=0x16EF):
    """ Send a key and sample for acknowledge """
    jldat.init(Pin.OUT) ; jlclk.init(Pin.OUT)

    for i in range(16):
        jldat(key & (0x8000 >> i))
        jlclk.off() ; sleep_us(10)
        jlclk.on()  ; sleep_us(10)

    jldat.init(Pin.IN) ; jlclk.init(Pin.IN)
    return not jldat() and not jlclk()  # <- is both D- and D+ low?
    #return jlclk() # <- is D+ high?

def send_usbkey(timeout=1000):
    # Power on
    power_on()

    pullctl.init(Pin.OUT, value=1)  # drive external pullups

    # send the key
    keysent = False
    tstart = ticks_ms()
    while not keysent:
        elapsed = ticks_diff(ticks_ms(), tstart)
        if elapsed >= timeout: break

        keysent = sendkey()

    pullctl.init(Pin.IN)        # disable pullups

    # release the pins, and we're done
    jlclk.init(Pin.IN);jldat.init(Pin.IN)

    if not keysent:
        power_off()

    return keysent, elapsed
usbkey2
Код:
#########################################
# JieLi USB dongle - RP2040 PIO edition #
#########################################
from machine import Pin
from time import sleep_ms, ticks_ms, ticks_diff
import rp2

pwrctl  = Pin(15)   # Power control
pullctl = Pin(16)   # USB pullup control (for reliable ACK sampling)
jlclk   = Pin(20)   # Key clock signal (USBDP)
jldat   = Pin(21)   # Key data signal  (USBDM)

pwrctl.init(Pin.OUT, value=0) # power off
pullctl.init(Pin.IN) # do not pull anywhere yet

#----------------------------------------------------

powerstate = False

def power_off():
    global powerstate

    pwrctl(0)   # Power off
    powerstate = False

def power_on():
    global powerstate

    if powerstate:  # Do a power cycle
        power_off()
        sleep_ms(250)

    pwrctl(1)   # Power on
    powerstate = True

#----------------------------------------------------

@rp2.asm_pio(
    out_init     = rp2.PIO.IN_LOW,
    sideset_init = rp2.PIO.IN_LOW,
    set_init     = (rp2.PIO.IN_LOW, rp2.PIO.IN_LOW),
    out_shiftdir = rp2.PIO.SHIFT_LEFT
)
def usb_key_pio():
    # pull the key value - blocks until it appears
    pull()

    # send 16 bits
    set(pindirs, 3)     # drive pins
    set(x, 15)          # 16 bits
    label("bitloop")    # <-- 10 PIO ticks per output clock
    out(pins, 1)          .side(0) [5-1]   # CLK=0, output to DAT
    jmp(x_dec, "bitloop") .side(1) [5-1]   # CLK=1

    # sample lines
    set(pindirs, 0)     # pins to input
    set(x, 15)          # sample 16 times (for full 32 bits)
    label("samploop")   # <-- 2 PIO ticks per sample  = 32 ticks or 3.2 bits
    in_(pins, 2)        # sample
    jmp(x_dec, "samploop")
    push()              # store the sampling result

usbkeysm = rp2.StateMachine(0, usb_key_pio,
    freq=25000*10,          # 25 kHz clock
    sideset_base=jlclk,     # sideset affects clock
    out_base=jldat,         # 'out' affects data
    set_base=jlclk,         # 'set' affects both clock and data
    in_base=jlclk           # 'in' reads clock and data
)

def send_usbkey(timeout=1000):
    power_on()

    usbkeysm.active(1)
    pullctl.init(Pin.OUT, value=1)  # drive external pullups

    # send the key
    keysent = False
    tstart = ticks_ms()
    while not keysent:
        elapsed = ticks_diff(ticks_ms(), tstart)
        if elapsed >= timeout: break

        usbkeysm.put(0x16EF, 16)
        ret = usbkeysm.get()

        keysent = ret == 0  # <- [D-] and [D+] were low the whole time
        #keysent = (~ret & 0x55555555) == 0  # <- [D+] was high the whole time

    pullctl.init(Pin.IN)        # disable pullups
    usbkeysm.active(0)

    if not keysent:
        power_off()

    return keysent, elapsed

И ещё такой себе код для управления всего этого с одной кнопки (короткое нажатие - вкл/выкл, долгое - перевод в бут)

main
Код:
from machine import Pin
from time import ticks_ms, ticks_diff, sleep_ms
import usbkey2 as juk

key = Pin(24, mode=Pin.IN, pull=Pin.PULL_UP)
led = Pin(25, mode=Pin.OUT, value=0)


presstime = 0
btnlast = False
pressed = False
state = None

def blink(times, delay=100):
    for i in range(times):
        led.toggle()
        sleep_ms(delay)


while True:
    btnstate = not key()
    command = None

    if not pressed:
        if btnstate and btnlast != btnstate:
            presstime = ticks_ms()
            pressed = True
    else:
        if not btnstate and btnlast != btnstate:
            if ticks_diff(ticks_ms(), presstime) >= 50:
                command = 'power_toggle'
            pressed = False
        elif btnstate and ticks_diff(ticks_ms(), presstime) >= 250:
            command = 'usb_key'
            pressed = False

    btnlast = btnstate

    if command == 'power_toggle':
        if state == 'on':
            command = 'power_off'
        else:
            command = 'power_on'

    if command == 'power_off':
        state = 'off'
        juk.power_off()
        led(0)

    elif command == 'power_on':
        state = 'on'
        juk.power_on()
        led(1)
        blink(2)

    elif command == 'usb_key':
        led(0)
        res, elapsed = juk.send_usbkey()

        if not res:
            state = 'off'
            blink(6)
        else:
            state = 'usb-download'
            blink(3)
Подпись автора

水Mizu-DEC JLtech since 22.06.2019

300

А что за платформа на первые два?

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

By Admin


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