USMI

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

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


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JL SoC. 杰理芯片


JL SoC. 杰理芯片

Сообщений 861 страница 880 из 1317

861

А как же обработка звука? громкость. эквалайзер. Оно же там софтовое.

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

By Admin

862

Или AMUX - ADC-DAC? (ну судя по всему да, не может же оно аналоговый сигнал прям взять и подать на выхлоп)

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

через который можно прямо на выход микшировать сигнал со входов AMUX

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

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

By Admin

863

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

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

Вопрос, если сделать так, то будет ли работать эквалайзер на line-in?
Или если либо в ladc_isr_callback не делать ladc_to_dac или в dac_isr_cb не делать audio_read, то будет ли всё ещё звук с line in?

Громкость там тоже аналогово регулируется, та цифровая регулировка должна работать если SYS_VOL_EXT (из include/cpu/audio/digital_vol.h) установлен не на SYS_VOL_EXT_NULL, иначе она просто не будет иметь никакого эффекта, так как всегда будет на максимум установлена.

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

水Mizu-DEC JLtech since 22.06.2019

864

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

иначе она просто не будет иметь никакого эффекта, так как всегда будет на максимум установлена.

ВОт это как раз косяк, из за этого цифровая громкость в PCM не регулируется со стороны проца, в 690 эти громкости связаны, работают обе как нужно. Тут нужно доделывать. Кстати как то можно их связать?, а то лень лопатить код)

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

Вопрос, если сделать так, то будет ли работать эквалайзер на line-in?

Да, работает. Я там пару месяцев назад делал прошивку свою для соундбара BS-28 на заказ, тестил всё, именно этот кусок кода работает как стерео и + эквалайзер.

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

Или если либо в ladc_isr_callback не делать ladc_to_dac или в dac_isr_cb не делать audio_read, то будет ли всё ещё звук с line in?

Этого не тестировал, но скорее да, будет, ибо если делать в .с драйвере рид буфер, то будет дважды читаться буфер, эта же хрень в AudioLink так же работает, там действительно
Вообще они явно положили болт на допил аудио контроля в 692.  :D Ну и аукс тоже сильно пришлось перепахать

Код:
#include "task_linein.h"
#include "task_linein_key.h"
#include "msg.h"
#include "task_manager.h"
#include "task_common.h"
#include "audio/dac_api.h"
#include "audio/audio.h"
#include "dac.h"
#include "power_manage_api.h"
#include "dev_manage.h"
#include "common/common.h"
#include "warning_tone.h"
#include "audio/linein_api.h"
#include "audio/ladc.h"
#include "linein_ui.h"
#include "music_player.h"
#include "led.h"
#include "task_echo_key.h"
#include "rec_api.h"
#include "fat_io.h"
#include "sdk_cfg.h"
#include "echo_api.h"

#ifdef SUPPORT_MS_EXTENSIONS
#pragma bss_seg(	".system_bss")
#pragma data_seg(	".system_data")
#pragma const_seg(	".system_const")
#pragma code_seg(	".system_code")
#endif

#define TASK_LINEIN_DEBUG_ENABLE

#ifdef TASK_LINEIN_DEBUG_ENABLE
#define task_linein_printf log_printf
#else
#define task_linein_printf(...)
#endif// TASK_LINEIN_DEBUG_ENABLE

AUX_VAR g_aux_var = {0}; ///<line in检测变量
RECORD_OP_API *linein_rec_api = NULL;

/*----------------------------------------------------------------------------*/
/**@brief  供AD_KEY 复用AUX检测时设置当前aux状态和获取aux状态*/
/*----------------------------------------------------------------------------*/
u8   get_aux_sta(void)
{
    return g_aux_var.bDevOnline;
}

void set_aux_sta(u8 sta)
{
    g_aux_var.cur_status = sta;
}

/*----------------------------------------------------------------------------*/
/**@brief  LINE IN 在线检测实体函数
   @param  cnt:检测滤波次数
   @return 在线情况
   @note   AUX_STATUS linein_check(u8 cnt)
*/
/*----------------------------------------------------------------------------*/
AUX_STATUS linein_check(u8 cnt)
{
#if AUX_DET_MULTI_AD_KEY
    g_aux_var.cur_status = g_aux_var.cur_status;
#else
    g_aux_var.cur_status = AUX_IN_CHECK; //获取当前AUX状态
#endif
    if (g_aux_var.cur_status != g_aux_var.pre_status) {
        g_aux_var.pre_status = g_aux_var.cur_status;
        g_aux_var.status_cnt = 0;
    } else {
        g_aux_var.status_cnt++;
    }

    if (g_aux_var.status_cnt < cnt) { //消抖
        return NULL_AUX;
    }
    g_aux_var.status_cnt = 0;

    ///检测到AUX插入
    if ((AUX_OFF == g_aux_var.bDevOnline) && (!g_aux_var.pre_status)) {
        g_aux_var.bDevOnline = AUX_ON;
        return AUX_ON;
    } else if ((AUX_ON == g_aux_var.bDevOnline) && g_aux_var.pre_status) {
        g_aux_var.bDevOnline = AUX_OFF;
        return AUX_OFF;
    }

    return NULL_AUX;
}


/*----------------------------------------------------------------------------*/
/**@brief  LINE IN 在线检测调度函数
   @param  无
   @return 在线情况
   @note   s32 aux_detect(void)
*/
/*----------------------------------------------------------------------------*/
void aux_detect(void)
{
    AUX_STATUS res;
#if (AUX_DET_MULTI_AD_KEY==0)
    AUX_DIR_SET;
    AUX_PU_SET;
#endif
    res = linein_check(20); //aux在线检测,去抖计数为50
    if (AUX_ON == res) {
        task_post_msg(NULL, 1, MSG_AUX_ONLINE);
    } else if (AUX_OFF == res) {
        task_post_msg(NULL, 1, MSG_AUX_OFFLINE);
    }
}

#if AUX_DETECT_EN
LOOP_DETECT_REGISTER(aux_detect_loop) = {
    .time = 5,
    .fun  = aux_detect,
};
#endif
void aux_detect_init(void)
{
	g_aux_var.cur_status = AUX_ON;

}


static tbool task_linein_skip_check(void **priv)
{
    task_linein_printf("task_linein_skip_check !!\n");
#if AUX_DETECT_EN
    return    g_aux_var.bDevOnline;
#else
    return    true;
#endif
}

static void *task_linein_init(void *priv)
{
    task_linein_printf("TASK AUX INIT OK !!\n");
    tone_play(TONE_LINEIN_MODE, 0);
    led_fre_set(C_BLED_SLOW_MODE);
    return NULL;
}

static void *task_linein1_init(void *priv)
{
    task_linein_printf("TASK RCA INIT OK !!\n");
    tone_play(TONE_RCA_MODE, 0);
    led_fre_set(C_BLED_SLOW_MODE);
    return NULL;
}

static void linein_channel_init(void)
{
     if (LINEIN_CHANNEL == DAC_AMUX0)
        {
        JL_PORTB->DIR |= BIT(4) | BIT(5);
        }
    else if (LINEIN_CHANNEL == DAC_AMUX1)
        {
        JL_PORTA->DIR |= BIT(3) | BIT(4);
        }
    else if (LINEIN_CHANNEL == DAC_AMUX2)
        {
        JL_PORTB->DIR |= BIT(6) | BIT(3);
        }
#if AUX_AD_ENABLE
    dac_channel_off(RCA_CHANNEL, FADE_ON);
    dac_channel_off(MUSIC_CHANNEL, FADE_ON);
    dac_channel_on(LINEIN_CHANNEL, FADE_ON);
    dac_set_samplerate(SR48000, 1);
    task_linein_printf("AUX CHANNEL SELECTED!!\n");
#else
    dac_channel_off(RCA_CHANNEL, FADE_ON);
    dac_channel_off(MUSIC_CHANNEL, FADE_ON);
    dac_channel_on(LINEIN_CHANNEL, FADE_ON);
#endif
    set_sys_vol(sound.vol.sys_vol_l, sound.vol.sys_vol_r, FADE_ON);

}

static void linein1_channel_init(void)
{
     if (RCA_CHANNEL == DAC_AMUX0)
        {
        JL_PORTB->DIR |= BIT(4) | BIT(5);
        }
     else if (RCA_CHANNEL == DAC_AMUX1)
        {
        JL_PORTA->DIR |= BIT(3) | BIT(4);
        }
    else if (RCA_CHANNEL == DAC_AMUX2)
        {
        JL_PORTB->DIR |= BIT(6) | BIT(3);
        }

#if RCA_AD_ENABLE
    dac_channel_off(LINEIN_CHANNEL, FADE_ON);
    dac_channel_off(MUSIC_CHANNEL, FADE_ON);
    dac_channel_on(RCA_CHANNEL, FADE_ON);
    dac_set_samplerate(SR48000, 1);
#else
    dac_channel_off(LINEIN_CHANNEL, FADE_ON);
    dac_channel_off(MUSIC_CHANNEL, FADE_ON);
    dac_channel_on(RCA_CHANNEL, FADE_ON);
#endif
    set_sys_vol(sound.vol.sys_vol_l, sound.vol.sys_vol_r, FADE_ON);
}


static void task_linein_exit(void **hdl)
{
    task_clear_all_message();
    mutex_resource_release("linein");
    task_common_msg_deal(NULL, NO_MSG);
    dac_channel_off(LINEIN_CHANNEL, FADE_ON);
    dac_channel_on(MUSIC_CHANNEL, FADE_ON);
    ui_close_aux();
    task_linein_printf("TASK AUX EXIT!!\n");
}


static void task_linein1_exit(void **hdl)
{
    task_clear_all_message();
    mutex_resource_release("RCA");
    task_common_msg_deal(NULL, NO_MSG);
    dac_channel_off(RCA_CHANNEL, FADE_ON);
    dac_channel_on(MUSIC_CHANNEL, FADE_ON);
    ui_close_aux();
    task_linein_printf("TASK RCA EXIT!!\n");
}


void linein_mutex_init(void *priv)
{
	dac_channel_off(RCA_CHANNEL, FADE_ON);
    linein_channel_close(RCA_CHANNEL, 0);
	linein_channel_init();
}

void linein_mutex_stop(void *priv)
{
    linein_channel_close(RCA_CHANNEL, 0);
    linein_channel_close(LINEIN_CHANNEL, 0);
    dac_channel_off(LINEIN_CHANNEL, FADE_OFF);
    dac_channel_off(RCA_CHANNEL, FADE_OFF);
#if AUX_AD_ENABLE
    dac_channel_off(RCA_CHANNEL, FADE_OFF);
    dac_channel_off(LINEIN_CHANNEL, FADE_OFF);
    task_linein_printf("AUX MUTEX STOP!!\n");
#endif
}

void rca_mutex_init(void *priv)
{
    linein_channel_close(LINEIN_CHANNEL, 0);
    task_linein_printf("RCA MUTEX INIT!!\n");
    dac_channel_off(LINEIN_CHANNEL, FADE_ON);
	linein1_channel_init();
}

void rca_mutex_stop(void *priv)
{
    linein_channel_close(RCA_CHANNEL, 0);
    linein_channel_close(LINEIN_CHANNEL, 0);
    dac_channel_off(LINEIN_CHANNEL, FADE_OFF);
    dac_channel_off(RCA_CHANNEL, FADE_OFF);
#if RCA_AD_ENABLE
    dac_channel_off(RCA_CHANNEL, FADE_OFF);
    task_linein_printf("RCA MUTEX STOP!!\n");
#endif
}

static void task_linein_deal(void *hdl)
{
    int error = MSG_NO_ERROR;
    int msg = NO_MSG;
    u8 linein_start = 0;
    task_linein_printf("TASK AUX DEAL!!\n");
    while (1) {
        error = task_get_msg(0, 1, &msg);
        if (task_common_msg_deal(hdl, msg) == false) {
            music_tone_stop();
            task_common_msg_deal(NULL, NO_MSG);
            return ;
        }
        if (NO_MSG == msg) {
            continue;
        }
        switch (msg) {
        case MSG_HALF_SECOND:

        if ((sound.vol.sys_vol_r == 0)||(is_dac_mute())||(is_auto_mute()))
        {
                     pa_mute_pin_ctrl();

                     task_linein_printf("RCA MUTE IF SOUND ==0!!\n");
        }
                else if ((sound.vol.sys_vol_r >> 0))
        {
                     pa_unmute_pin_ctrl();
        }

            UI_REFRESH(MENU_REFRESH);
            break;
        case SYS_EVENT_PLAY_SEL_END:
            if (linein_start == 0) {
                linein_start = 1;
                mutex_resource_apply("linein", 3, linein_mutex_init, linein_mutex_stop, 0);
            }
            task_linein_printf("Linein SYS_EVENT_DEC_END\n");
            break;
        case MSG_MUTE:
        break;
        case MSG_INPUT_NUMBER_END:
        case MSG_INPUT_TIMEOUT:
            get_input_number(NULL);
            break;
        default:
            break;
        }
    }
}


static void task_linein1_deal(void *hdl)
{
    int error = MSG_NO_ERROR;
    int msg = NO_MSG;
    u8 linein1_start = 0;
    task_linein_printf("TASK RCA DEAL!!\n");
    while (1) {
        error = task_get_msg(0, 1, &msg);
        if (task_common_msg_deal(hdl, msg) == false) {
            music_tone_stop();
            task_common_msg_deal(NULL, NO_MSG);
            return ;
        }
        if (NO_MSG == msg) {
            continue;
        }
        switch (msg) {
        case MSG_HALF_SECOND:

        if ((sound.vol.sys_vol_r == 0)||(is_dac_mute())||(is_auto_mute()))
        {
                     pa_mute_pin_ctrl();
                task_linein_printf("RCA MUTE IF SOUND ==0!!\n");

        }
               else if ((sound.vol.sys_vol_r >> 0))
        {
                     pa_unmute_pin_ctrl();
        }
            UI_REFRESH(MENU_REFRESH);
            break;
        case SYS_EVENT_PLAY_SEL_END:
            if (linein1_start == 0) {
                linein1_start = 1;
                mutex_resource_apply("RCA", 3, rca_mutex_init, rca_mutex_stop, 0);
            }
            task_linein_printf("RCA SYS_EVENT_DEC_END\n");
            break;
        case MSG_MUTE:

        break;

        case MSG_INPUT_NUMBER_END:
        case MSG_INPUT_TIMEOUT:
            get_input_number(NULL);
            break;
        default:
            break;
        }
    }
}

const TASK_APP task_linein_info = {
    .skip_check = task_linein_skip_check,
    .init     = task_linein_init,
    .exit     = task_linein_exit,
    .task     = task_linein_deal,
    .key     = &task_linein_key,
};

const TASK_APP task_linein1_info = {
    .init     = task_linein1_init,
    .exit     = task_linein1_exit,
    .task     = task_linein1_deal,
    .key     = &task_linein_key,
};

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

By Admin

865

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

Кстати как то можно их связать?, а то лень лопатить код)

Еще это наверно сделано для SPDIF...  Но это не точно, никогда с ним вообще не возился.  :D

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

By Admin

866

Ещё один вопрос возник, пытаюсь запустить AAC на чипе 6955F, но что-то ничего не выходит.
Ведроид видит что есть кодек, даже включается, но при попытке воспроизвести звук, через 10 секунд блютуз переподключается.
Такое же поведения при использовании SBC, но не активированном #define TCFG_DEC_SBC_ENABLE.
При этом пытался активировать M4A, находил упоминания что в него засунули декодер AAC, но изменений нет. Перебирал все декодеры, результатов нет.
Видел на форуме этим уже занимался ender, но как такого решения не нашёл. Не уверен что этот кодек мне вообще нужен, просто хочу послушать как работает на дроидах и айфонах.

Отредактировано Givanich (2023-11-06 15:37:53)

867

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

Ещё один вопрос возник, пытаюсь запустить AAC на чипе 6955F, но что-то ничего не выходит.

Я к сожалению не возился с 695/696 , только с энкодерами и фм передатчиками... Это максимум.

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

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

У меня на старом 11 андроиде  на квалкоме,  AAC кодек работал через сраку, сугубо зависит от телефона и прошивки, щас 13 андроид, работает  отлично, (редми ноте 11 с прошивкой Pixel Expiriance)  Работает отлично , есть всякие кодеки LDAC/AAC/SBC/APTx оно не только от железки (проца), а еще и от софта.

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

При этом пытался активировать M4A, находил упоминания что в него засунули декодер AAC, но изменений нет. Перебирал все декодеры, результатов нет.

Это может быть декодер плеера, с блютуза вроде только два кодека.

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

Видел на форуме этим уже занимался ender, но как такого решения не нашёл. Не уверен что этот кодек мне вообще нужен, просто хочу послушать как работает на дроидах и айфонах.

Он вроде только в 690/692 колупал AAC.
У меня кстати только ранние сдк 696 серии, и они сырые и кривые , ни кто не собирал проэкты 696 сдк с шапки? И нет ли у кого по новее сдк 696 ?
Еще видно что с 695/696 есть остатки от 693 сдк, видно что от туда ноги растут. Ну и стараются придерживаться одного стиля сдк, но мне не нравится что они теперь тяжёлые и компилируется долго, да и много лижнего там, куча конфигов под разные чипы, такое себе... Вот 690/692 оч быстро, не большие, и понятные сдк. Ну как то так.
Ну и добро пожаловать на форум.

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

By Admin

868

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

Я к сожалению не возился с 695/696 , только с энкодерами и фм передатчиками... Это максимум.

У меня на старом 11 андроиде  на квалкоме,  AAC кодек работал через сраку, сугубо зависит от телефона и прошивки, щас 13 андроид, работает  отлично, (редми ноте 11 с прошивкой Pixel Expiriance)  Работает отлично , есть всякие кодеки LDAC/AAC/SBC/APTx оно не только от железки (проца), а еще и от софта.

Есть у меня CSR8645 и CSR8675, надо записать как они работают. Когда-то на них все кодеки активировал, но особо дальше не ковырялся. На lineage 19 все кодеки тоже есть, вроде как-то работают, но особо не вслушивался. Есть под рукой пиксель на 14 дроиде, ну и пару яблофонов, для сравнения могу записать АЧХ и выложить их сюды.

У меня кстати только ранние сдк 696 серии, и они сырые и кривые , ни кто не собирал проэкты 696 сдк с шапки? И нет ли у кого по новее сдк 696 ?

Сдк из шапки под 696 не собирается, не хватает каких-то файлов. На гитхабе нашёл сдк под 696, называется JBD, там собираются всего 3 платы у которых есть user config. Но они все работают и играют, правда там косяков много, не везде ifdef стоят, из-за этого при отключении каких-то модулей, все идёт по одному месту, soundcard так вообще не захотел работать.

Еще видно что с 695/696 есть остатки от 693 сдк, видно что от туда ноги растут. Ну и стараются придерживаться одного стиля сдк, но мне не нравится что они теперь тяжёлые и компилируется долго, да и много лижнего там, куча конфигов под разные чипы, такое себе... Вот 690/692 оч быстро, не большие, и понятные сдк. Ну как то так.

Компилятся они прявда, по 3-4 минуты приходится ждать каждый раз, а ещё иногда приходится чистую сборку проводить, так как остаются висяки, которые компилятор почему-то учитывает.

869

А ещё кто-нибудь работал/прошивал/дампил чипы A3? Есть несколько модулей на этих чипах, одни нормально звучат и работают, у других косяки по типу моно с аукса, в общем тоже не без ньюансов. На донгл не ревгируют. Отличительная черта именно A3 модулей, кварц на 26 МГц.
К сожалению, здесь китайцы вообще все закрыли, нет никакой документации, хотя, может я плохо искал.

870

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

могу записать АЧХ и выложить их сюды.

Если нормальный звуковой тракт до 20 КГЦ с THD0.1000% то да, не мешало бы сделать тесты RMAA. Тут как раз есть тема на сайте, в топике про акустику.

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

Компилятся они прявда, по 3-4 минуты приходится ждать каждый раз, а ещё иногда приходится чистую сборку проводить, так как остаются висяки, которые компилятор почему-то учитывает.

Обновить нужно компилятор, ну и там вроде что то в мануале писали вроде как , ни как руки не доходят....

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

А ещё кто-нибудь работал/прошивал/дампил чипы A3? Есть несколько модулей на этих чипах, одни нормально звучат и работают, у других косяки по типу моно с аукса, в общем тоже не без ньюансов. На донгл не ревгируют. Отличительная черта именно A3 модулей, кварц на 26 МГц.

Так это вообще другие чипы и контора Bluetrum. Тема тоже тут есть, я даже вытащил сдк и компилятор под какие то там чипы от них.
И то не А3 а АВ)))
А вообще если там JL то я такое видел только на фотках) Может что старое) Можно там посмотреть по датакоду если это JL.

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

Компилятся они прявда, по 3-4 минуты приходится ждать каждый раз,

У меня на ноуте так же, на компе около минуты. Но не устраивает вообще, там правда в шапке есть под 696 чисто сдк под наушники - вот он как 690/692 компилируется быстро, буквально секунд 10-20.
Тот же 696 сдк, но кастрированный)

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

By Admin

871

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

Если нормальный звуковой тракт до 20 КГЦ с THD0.1000% то да, не мешало бы сделать тесты RMAA. Тут как раз есть тема на сайте, в топике про акустику.

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

Обновить нужно компилятор, ну и там вроде что то в мануале писали вроде как , ни как руки не доходят....

И это тоже верно, стоит предпоследняя версия, иногда предлагает обновится, но никак руки не доходят...

Так это вообще другие чипы и контора Bluetrum. Тема тоже тут есть, я даже вытащил сдк и компилятор под какие то там чипы от них.
И то не А3 а АВ)))
А вообще если там JL то я такое видел только на фотках) Может что старое) Можно там посмотреть по датакоду если это JL.

Тоже надо будет поизучать, хотя инфы пока хрен да маленько, мб чего нибудь получится.

У меня на ноуте так же, на компе около минуты. Но не устраивает вообще, там правда в шапке есть под 696 чисто сдк под наушники - вот он как 690/692 компилируется быстро, буквально секунд 10-20.
Тот же 696 сдк, но кастрированный)

Вот ещё что интересного заметил, когда пытался скомпилить плату 6955f_HEADPHONES_MONO, на чипе 6955f звука не было, но когда скомпилил 6952e_lighter, звук появился и всё заработала.
Дичь не логичная...

872

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

Вот ещё что интересного заметил, когда пытался скомпилить плату 6955f_HEADPHONES_MONO, на чипе 6955f звука не было, но когда скомпилил 6952e_lighter, звук появился и всё заработала.
Дичь не логичная...

В конфиге выбранном есть настройки DAC-a.

Код:
#define TCFG_AUDIO_DAC_CONNECT_MODE    DAC_OUTPUT_LR

/*
解码后音频的输出方式:
    AUDIO_OUTPUT_ORIG_CH            按原始声道输出
    AUDIO_OUTPUT_STEREO             按立体声
    AUDIO_OUTPUT_L_CH               只输出原始声道的左声道
    AUDIO_OUTPUT_R_CH               只输出原始声道的右声道
    AUDIO_OUTPUT_MONO_LR_CH         输出左右合成的单声道
 */

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

By Admin

873

Всем привет!

Друзья, простите, что я так бесцеремонно врываюсь, но такое счастье что хоть кого-то нашел, кто разбирается с чипами JL =)
Я ищу информацию о том, как работать с чипом CK6142A0 (у него нет врутренней памяти).
Предыстория. Купил ребёнку игрушку из китая, говорящий кактус. В общем, там он адаптирован, видимо, китайцами под наш рынок, и они не очень понимают что можно слушать детям а что лучше не надо)
В общем был поставлен перед фактом, что игрушку либо выкидывают, либо я записываю туда нормальную детскую музыку)
Начал искать информацию по этой игрушке и нашел на форуме дамп прошивки (SPI FLASH). Но это просто дамп, а как заменить музыку, не понятно. Никак распознать ресурсы внутри прошивки не удалось. Начал гуглить и нагуглил статью человека, который пытался провернуть то же самое.
Решил попробовать найти информацию о том как вообще разрабатывается ПО под этот чип, и ничего не нашел, кроме "схемы подключения":
https://forumupload.ru/uploads/001b/ca/8a/71/t356398.png

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

Заранее спасибо!

Отредактировано RoninDev (2023-11-08 15:27:29)

874

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

В конфиге выбранном есть настройки DAC-a.

Да, но дело было не в этом.
А дело было в том самом AAC, который телефон по умолчанию включал. Только сейчас заметил, что это единственный конфиг в котором AAC включен по дефолту.
И ещё зачем-то поставил VOL_TYPE_DIGITAL из-за этого тоже звука не было, в общем сам накосячил)

Отредактировано Givanich (2023-11-08 16:29:55)

875

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

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

Заранее спасибо!

Разберемся. Сигнатур файлов там не будет, оно скорее всего шифровано, и чип это AD142A0 Память у него внешняя только, потому что A0. Версии не с нулем в конце означают количество встроенной памяти в мегабитах, делить на 8 для мегабайт.
Это подсерия AD14N&AD15N.
Слить дамп, и разобраться, шивруется оно там через чипкей как во всех JL или нет, ну и формат там аудио скорее *.f1a、*.f1b、*f1c、*.ump3 - Это их отсебятина. Прога для конвертации есть, кто то спрашивал много лет назад прогу для *.f1a - но тогда не было, я нашел только пол года недавно.
SDK под AD14N есть в шапке. Дергнуть его триггером в бутлоадер DFU и можно пытаться прошить. Токо дамп сначала сохраните.
Тут BOOTLoader будет SH54/SH55. Его пока нету в дампере от kagaimiq. Но вроде хватит и слитого дампа, да и при желании можно пересобрать и и сконфигурировать/написать прошивку самому, SDK то есть, и там же мануалы. Вся инфа по триггеру тут на форуме, он же прогер.
Вот так как то за пару минут разобрались и с форматами и прочим)))  :D

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

Друзья, простите, что я так бесцеремонно врываюсь, но такое счастье что хоть кого-то нашел, кто разбирается с чипами JL =)

Добро пожаловать на форум, для это я его и создал. И чипы JL меня еще в 2016 году заинтересовали, и сейчас они сильно держат рынок, теперь это оч большая контора, с сотнями видов чипов, видео/аудио/беспроводные сети.... Очень дешевые и хорошие и живучие чипы, с добротной периферией, с частотами по 192/240/480МГЦ рвущие большинство аналогов и тех же STM начального и среднего уровня, ESP32/16, AVR в клочья. Вот только не опен сурс. Задача сего форума - популяризация этих чипов.  :D

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

By Admin

876

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

AD14N&AD15N.

Кстати, они еще есть в COB исполнении ("капля" микросхема)

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

By Admin

877

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

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

Ник у него рембо ламборгини вроде, на CSDN. Могу качать с CSDN  и BAIDU все что угодно)
Я так же там есть)))

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

By Admin

878

Добрый день!

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

чип это AD142A0

Вот тут совсем стало непонятно, на самом чипе маркировка ab22bp00513-42a0, в интернете чудом нашел на их аналоге quora что это CK6142A0, а в итоге это AD142A0. Для чего они это делают и как разбираться в этом?)

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

Дергнуть его триггером в бутлоадер DFU и можно пытаться прошить

Тут пока совсем не понял. Бутлоадер DFU это какой-то режим этих чипов? И как он прошивается вообще, если у него нет своей памяти? Достаточно ли просто прошить модуль памяти? Или как-то надо подключаться к чипу, одновременно подключенному к FLASH?

Я пока не осознал весь массив информации, представленной тут, так что прошу прощения за глупые вопросы.

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

Вся инфа по триггеру тут на форуме, он же прогер

Речь идёт о программаторе?

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

Ник у него рембо ламборгини вроде, на CSDN

Нет, некий Брат Акиу. Я даже зарегистрировался и верифицировался на их сайте, чтобы смочь написать личное сообщение ему. Теперь не уверен что нужно)

879

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

И как он прошивается вообще, если у него нет своей памяти?

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

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

Достаточно ли просто прошить модуль памяти? Или как-то надо подключаться к чипу, одновременно подключенному к FLASH?

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

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

水Mizu-DEC JLtech since 22.06.2019

880

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

Вот тут совсем стало непонятно, на самом чипе маркировка ab22bp00513-42a0, в интернете чудом нашел на их аналоге quora что это CK6142A0, а в итоге это AD142A0. Для чего они это делают и как разбираться в этом?)

Не важно кто что там пишет, нету аналогов, если лого JL,  то там смысл маркировки в том что имеет смысл последние 4-5 знаков, та белиберда в начале - это датакод, номер партии...
По последним цифрам и буквам - 42а0 , это собственно подходит только под одну серию чипов, AD14N  и только под один чип - AD142A0.
https://forumupload.ru/uploads/001b/ca/8a/2/t906225.png

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

аналоге quora что это CK6142A0

Это скорее всего так прошивку обозвали производители. Они так любят делать. Имеет смысл только маркировка на чипе и все.

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

Тут пока совсем не понял. Бутлоадер DFU это какой-то режим этих чипов? И как он прошивается вообще, если у него нет своей памяти? Достаточно ли просто прошить модуль памяти? Или как-то надо подключаться к чипу, одновременно подключенному к FLASH?

Все верно, это режим прошивки . Ну и прошивается внешняя флешка. Правда DFU может быть как по USB так и по UART. Но думаю будет усб.
Подпаиваться не нужно ни куда, только к усб подключить и все.

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

Речь идёт о программаторе?

Так точно.

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

Нет, некий Брат Акиу. Я даже зарегистрировался и верифицировался на их сайте, чтобы смочь написать личное сообщение ему. Теперь не уверен что нужно)

Первый раз вижу его  :D

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

By Admin


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » JL SoC. 杰理芯片