Перейти к содержанию
    

Allwinner T113-s3 уделал HiFi4 DSP. Смеяться или плакать?

19 часов назад, _Евген_ сказал:

Знатоки,

кто подскажет почему при попытке прочитать состояние из регистра 0x01C0E000 (VE_BASE+VE_CTRL) в F1C100s, да собственно и любого регистра группы VE_BASE - программа зависает?С доступом к регистрам других блоков (TVE,TVD...) проблем нет! Отладчика нет - что-то считать после этого не знаю как (загружаю через sunxi-fel exec).

Начальная настройка следующая(запуск все в том же проекте F1C100s_projects/projects/tv_in_test/main.c😞

ve_init(){ 
 clk_pll_init(PLL_VE, 99, 8); // 24*99/8 = 297MHz <- copy-past от TVD
 clk_pll_enable(PLL_VE);

 clk_enable(CCU_BUS_CLK_GATE1, 0); // VE bus clock
 clk_enable(CCU_DRAM_CLK_GATE, 0); // DRAM access clock

 intc_disable_irq(IRQ_VE);
 clk_reset_clear(CCU_BUS_SOFT_RST1, 0);

 u32 ctrl=readl(VE_BASE + VE_CTRL); <- тут виснет

Помог код(рабочий) из проекта jpgdec (автор ozelot):

 /* Hardware JPEG Decoding */
    CCU->PLL_VE_CTRL = (1u << 31) | (1 << 24) | (12 << 8); // 312MHz
    while(!(CCU->PLL_VE_CTRL & (1 << 28)));
    CCU->VE_CLK |= (1u << 31);
    CCU->BUS_CLK_GATING1 |= 1;
    CCU->BUS_SOFT_RST1 &= ~1;
    CCU->BUS_SOFT_RST1 |= 1;
    CCU->DRAM_GATING |= 1;
    SYS->CTRL[0] &= 0x80000000;
    SYS->CTRL[0] |= 0x7fffffff;
    SYS->CTRL[1] &= 0xefffffff;
    printf("VE Version 0x%X 0x%X\r\n", VE->VERSION >> 16, VE->CTRL);

По итогу для считывания версии:

// Configure video engine clocks
    clk_pll_init(PLL_VE, 99, 8); // 24*99/8 = 297MHz <- работает и с 312МГц от ozelot
    clk_pll_enable(PLL_VE);

    CCU->VE_CLK |= (1u << 31); // вставлено из jpgdec!TODO: -> clk_ve_config in f1c100s_clock!

    clk_enable(CCU_BUS_CLK_GATE1, 0); // VE bus clock
    clk_enable(CCU_DRAM_CLK_GATE, 0); // DRAM access clock

    clk_reset_set(CCU_BUS_SOFT_RST1, 0);
    clk_reset_clear(CCU_BUS_SOFT_RST1, 0);


    u32 version=readl(VE_BASE + VE_VERSION) >> 16;

 

Изменено пользователем _Евген_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 17.07.2024 в 21:16, Ozelot сказал:

В F1C есть только jpeg-кодер. Разобраться с ним у меня ушло пару дней. Свои исходники по этой теме выкладывать не буду

Если не исходным кодом, то советом можете подсказать, какие регистры (https://linux-sunxi.org/VE_Register_guide: 0x0xx, 0x1xx, 0xaxx) отвечают за

  • задание параметров входного(yuv\nv) кадра: размер, адрес буфера;
  • задание параметров сжатия (выходного кадра): адрес буфера
  • запуск сжатия JPEG: выбор режима VE на сжатие и запуск(аналог DEC_TRIG в Вашем проекте)

Заранее благодарен за помощь!

Смотрел исходники cedar/cedrus: декодеры на любой цвет и вкус, а кодеры только для h26x ... =(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/20/2024 at 11:16 AM, _Евген_ said:

Смотрел исходники cedar/cedrus: декодеры на любой цвет и вкус, а кодеры только для h26x

я это использовал

https://github.com/milosladni/jepoc

в аттаче мои изменения для майнстримного драйвера Linux относительно этого форка

https://github.com/smaeul/linux/tree/d1/all

он не требует libjpeg но мне кажется вас только запутает - POC легко читается и лёгкий для понимания, но вопросы и подводные камни были

 

linux-d1-all-jpeg-enc.patch

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 минут назад, sasamy сказал:

я это использовал

https://github.com/milosladni/jepoc

 

Здравствуйте, sasamy!

Теперь все встает на свои места 😃 Меня смущало в коде(повторюсь, что у меня чип F1C без H264):

main.c:

char *outjpeg = "/tmp/poc.jpeg";
...
veavc_launch_encoding(); -> veavc.c:  S(trigger, VE_AVC_TRIGGER); -> ve.h : #define VE_AVC_TRIGGER			0xb18

что данный регистр относится к группе кодека h264(oxbxx)! А раз кодека нет, то и блока регистров такого нет ... думал я =( 

Но судя по комментарию "JPEG/H264 Different Settings" - в F1C без H264 этот блок есть, но работает только в режиме JPEG.

Жаль , что понял я это поздно! Сейчас уже уезжаю на дачу. Пока решил ограничить частоту кадров(надеюсь 64Gb хватит отловить момент, кто у Тещи цветы выкапывает 😃 . Вернусь, набросаю код(без платы) и уже через неделю проверю "теорию".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

41 minutes ago, sasamy said:

он не требует libjpeg но мне кажется вас только запутает - POC легко читается и лёгкий для понимания, но вопросы и подводные камни были

Собирать нужно с libjpeg8, а не libjpeg.  Тогда всё собирается очень легко. Оно нужно только для создания/распарсивания хедера + создание таблиц квантования. 

Можно заранее просчитать все нужные хедеры, иначе возможна утечка памяти при циклическом вызове функций.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/20/2024 at 12:40 PM, repstosw said:

Собирать нужно с libjpeg8, а не libjpeg.  Тогда всё собирается очень легко. Оно нужно только для создания/распарсивания хедера + создание таблиц квантования.

я в курсе, для драйвера в ядре всё должно быть своё и естественно вопросы были не о том с какой из библиотек libjpeg собирать POС

On 7/20/2024 at 12:30 PM, _Евген_ said:

повторюсь, что у меня чип F1C без H264

в t113 его тоже нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, _Евген_ сказал:

надеюсь 64Gb хватит отловить момент

Нужно делать детектор изменения в кадре, тогда точно хватит

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 20.07.2024 в 16:01, mantech сказал:

Нужно делать детектор изменения в кадре, тогда точно хватит

 

О, машинное обучение 😉 я не силен в данной теме, но мне кажется одного ядра f1c будет маловато для таких целей.  

Камера у меня 576p. Сохраняю я только яркостный канал(ч.б. фото). Т.к. драйвер sd в данном примере не шибко расторопный,  то и 25 к/с он не успевал сохранять- кадры прореживаются =( 

В итоге, одно событие занимает ~50Мбайт( экспериментальные данные). У нас все же не проходной двор - 1000 срабатываний на неделю должно хватить.

Упустил момент с "размытиями" движений. Здесь о них писали. Я их фиксировал в начале экспериментов. Но так и не понял их причину. А после добавления  всех костылей(прореживания, сохранения ч.б. и т.п.) не проверил, т.к. была статика =( 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

38 минут назад, _Евген_ сказал:

О, машинное обучение

Детектор изменения содержания кадра был придуман давным давно, когда еще никаких нейросетей никто не использовал))

Не путайте с распознаванием образов...

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

38 минут назад, _Евген_ сказал:

то и 25 к/с он не успевал сохранять

При вашей задаче зачем вам такой битрейт? Тут 10к\с вполне хватит, при 576р картинке жпег может и программно жаться наверно, хотя у вас же не кортекс А и НЕОНа нет, так что может и не успеть...

Изменено пользователем mantech

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 20.07.2024 в 13:15, sasamy сказал:

я в курсе, для драйвера в ядре всё должно быть своё и естественно вопросы были не о том с какой из библиотек libjpeg собирать POС

Соглашусь! Весь вечер просидел, а так и не смог собрать рабочую библиотеку https://github.com/ystk/debian-libjpeg8 под arm-none-eabi(baremetal). Возможно у кого-то есть упрощенная версия для формирования заголовочника(не важно какое разрешение), на примере того как это сделано для декодера в jpgdec? Буду рад помощи.

Из того что успел, пока делал заглушки для jpeg (по итогу закоментировал все библиотечные вызовы в vejpeg_header_create), так это сформировал тестовую картинку(Y , C) с квадратиками, запустил кодек(настроил такты, считал версию... дошел до veavc_launch_encoding, поставил ожидание на 2 сек), но по veavc_check_status получил "none" =( Расстроился...

Обратил внимание, что Jsize = 0x800000; приводит к переполнению heap(в консоль выводится сообщение из system.c). Убрал один нолик в размере(т.к. тестовая картинка из примера у меня имеет размер 112x112 и такой выходной буфер ни к чему, наверное). Ошибка по heap ушла, но veavc_check_status по прежнему выдает 0 (уж лучше бы выдал ошибку).

Адреса буферов(выделяю через malloc) идут в 0x8xxxxx00 с выравниванием по 1024.

Утро вечера мудренее...

 

 

11 минут назад, _Евген_ сказал:

поставил ожидание на 2 сек

 Возможно, я что-то не учел при замене ve_wait на паузу(mdelay) - надо глянуть в ioctl драйвера.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Продолжаю "грызть кактус":

В качестве libjpeg взял исходники с https://electronix.ru/forum/topic/105138-keil-mdk-arm-biblioteka-libjpeg/(си-шники dst и src брал без суффиксов). Автор зачем-то за#if-ел в структурах поля FILE, но банальным поиском и заменой #if 0 на #if 1 это решается 😃.

Проверил, что ve_wait на паузу(mdelay) - не страшно. Встречал в данной теме, что для t113 в VE MODE ставят 6 и 7 бит, попробовал - не ставится -> для F1c не актуально! Поставил DDR1-32бита(1<<16) вместо DDR3(3<<16)

Ошибка с heap решилась увеличением значения в ld-файле(было 0x00800000, сделал 0x01000000)

Но статус по прежнему нулевой. Добавил вывод регистров:

[SUNXI] VE version 0x1663 opened.
ve_open:[SUNXI] VE MODE:00010000
[SUNXI] VE ISP[01c0ea00]:
0a00:00000000 00000000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 00000000 00000000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 00000000 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00000000 00000000 00000000 00000000
0b10:00000000 00000000 00000000 00000000
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:00000000 00000000 00000000 00000000
0b90:00000000 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
[VE TEST] picture 256x256 at 100 quality
[VE TEST] picture generated.
[VE TEST] malloc big.
veavc_select_subengine:[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00000000 00000000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 00000000 00000000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00000000 00000000 00000000 00000000
0b10:00000000 00000000 00000000 00000260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:00000000 ffffffff 00000000 0fff0000
0b90:00000000 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
[SUNXI] VE buff ptr 0x80016c00.
[SUNXI] VE buff ptr 0x80027000.
veisp_set_buffers:[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00000000 00000000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 80016c00 80027000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00000000 00000000 00000000 00000000
0b10:00000000 00000000 00000000 00000260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:00000000 ffffffff 00000000 0fff0000
0b90:00000000 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
veisp_init_picture:[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00100010 00100000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 80016c00 80027000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00100010 00000000 00000000 00000000
0b10:00000000 00000000 00000000 00000260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:00000000 ffffffff 00000000 0fff0000
0b90:00000000 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
[SUNXI] VE buff ptr 0x80037400.
[VEAVC] outbuf of size 8388608, write only max 8388608 bytes
veavc_init_ctrl:[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00100010 00100000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 80016c00 80027000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00100010 00000000 00000000 00000000
0b10:00000000 00000007 00010000 00000260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:80037400 808373ff 00000000 04000000
0b90:00000000 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
veavc_jpeg_parameters:[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00100010 00100000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 80016c00 80027000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00100010 80000000 00000000 00000000
0b10:00000000 00000007 00010000 00000260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:80037400 808373ff 00000000 04000000
0b90:00000000 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
[VEAVC] put nbits 16, data 0xffc0 status 0 (none)
[VEAVC] put nbits 16, data 0x11 status 0 (none)
[VEAVC] put nbits 8, data 0x8 status 0 (none)
[VEAVC] put nbits 16, data 0x100 status 0 (none)
[VEAVC] put nbits 16, data 0x100 status 0 (none)
[VEAVC] put nbits 8, data 0x3 status 0 (none)
[VEAVC] put nbits 8, data 0x1 status 0 (none)
[VEAVC] put nbits 4, data 0x2 status 0 (none)
[VEAVC] put nbits 4, data 0x2 status 0 (none)
[VEAVC] put nbits 8, data 0x0 status 0 (none)
[VEAVC] put nbits 8, data 0x2 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 8, data 0x1 status 0 (none)
[VEAVC] put nbits 8, data 0x3 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 8, data 0x1 status 0 (none)
[VEAVC] put nbits 16, data 0xffda status 0 (none)
[VEAVC] put nbits 16, data 0xc status 0 (none)
[VEAVC] put nbits 8, data 0x3 status 0 (none)
[VEAVC] put nbits 8, data 0x1 status 0 (none)
[VEAVC] put nbits 4, data 0x0 status 0 (none)
[VEAVC] put nbits 4, data 0x0 status 0 (none)
[VEAVC] put nbits 8, data 0x2 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 8, data 0x3 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 4, data 0x1 status 0 (none)
[VEAVC] put nbits 8, data 0x0 status 0 (none)
[VEAVC] put nbits 8, data 0x3f status 0 (none)
[VEAVC] put nbits 4, data 0x0 status 0 (none)
[VEAVC] put nbits 4, data 0x0 status 0 (none)
[JEPOC] launch encoding.
vejpeg_write_quantization:[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00100010 00100000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 80016c00 80027000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00100010 c4000400 00000000 00000000
0b10:00000000 00000007 00010400 00000260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:80037400 808373ff 00000000 04000000
0b90:00000108 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
veavc_launch_encoding:[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00100010 00100000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 80016c00 80027000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00100010 c4000400 00000000 00000000
0b10:00000000 00000007 00010000 80800260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:80037400 808373ff 00000000 04000000
0b90:00000108 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
[VEAVC] finish status 0 (none)
Save jpeg: outlen 574, length 33
Open: 0
outbuf: 0
buffer: 0
write EOI: 0
[JEPOC] written 33 bytes to image.jpg
[VE TEST] free.
[SUNXI] VE MODE:0001000b
[SUNXI] VE ISP[01c0ea00]:
0a00:00100010 00100000 00000000 00000000
0a10:00000000 00000000 00000000 00000000
0a20:00000000 00000000 00000000 00000000
0a30:00000000 00000000 00000000 00000000
0a40:00000000 00000000 00000000 00000000
0a50:00000000 00000000 00000000 00000000
0a60:00000000 00000000 00000000 00000000
0a70:00000000 00000000 80016c00 80027000
0a80:00000000 00000000 00000000 00000000
0a90:00000000 00000000 00000000 00000000
0aa0:00000000 00000000 00000000 00000000
0ab0:00000000 00000000 00000000 00000000
0ac0:00000000 00000000 00000000 00000000
0ad0:00000000 00000000 00000000 00000000
0ae0:00000000 03d40165 00000000 00000000
0af0:00000000 00000000 00000000 00000000
[SUNXI] VE AVC[01c0eb00]:
0b00:00100010 c4000400 00000000 00000000
0b10:00000000 00000007 00010000 80800260
0b20:00000000 00000000 00000000 00000000
0b30:00000000 00000000 00000000 00000000
0b40:00000000 00000000 00000000 00000000
0b50:00000000 00000000 00000000 00000000
0b60:00000000 00000000 00000000 00000000
0b70:00000000 00000000 00000000 00000000
0b80:80037400 808373ff 00000000 04000000
0b90:00000108 00000000 00000000 00000000
0ba0:00000000 00000000 00000000 00000000
0bb0:00000000 00000000 00000000 00000000
0bc0:00000000 00000000 00000000 00000000
0bd0:00000000 00000000 00000000 00000000
0be0:00000000 00000000 00000000 00000000
0bf0:00000000 00000000 00000000 00000000
[VE TEST] exit.

Может у кого есть описание регистра AVC STATUS (0xb1c)битов 31 и 23? Они выставляются после запуска кодирования (80800260).

Так же не понятно  по командам записи put_bits - является ли статус 0(none) для данной операции нормой или там так же должна быть 1(done)?

Попробовал открыть записанный файл на ПК - ошибка данных....

Изменено пользователем _Евген_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 часов назад, _Евген_ сказал:

Добавил вывод регистров:

Скрывайте потом такие портянки под спойлер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, mantech сказал:

Скрывайте потом такие портянки под спойлер.

Виноват! Прошу не банить, учту на будущее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 06.08.2024 в 22:17, _Евген_ сказал:

Продолжаю "грызть кактус":

В качестве libjpeg взял исходники с https://electronix.ru/forum/topic/105138-keil-mdk-arm-biblioteka-libjpeg/(си-шники dst и src брал без суффиксов). Автор зачем-то за#if-ел в структурах поля FILE, но банальным поиском и заменой #if 0 на #if 1 это решается 😃.

Проверил, что ve_wait на паузу(mdelay) - не страшно. Встречал в данной теме, что для t113 в VE MODE ставят 6 и 7 бит, попробовал - не ставится -> для F1c не актуально! Поставил DDR1-32бита(1<<16) вместо DDR3(3<<16)

Ошибка с heap решилась увеличением значения в ld-файле(было 0x00800000, сделал 0x01000000)

Но статус по прежнему нулевой. Добавил вывод регистров:

Причина оказалась в том, что я не настроил контроллер SRAM, хотя были подсказки как в  jpgdec, так и в архиве ve.zip:

  //VE_SRAM mapping to AC320
  val = readl(cedar_devp -> sram_bass_vir); /*#define SRAMC_BASE (0x01C00000) or SYS->CTRL[0]*/
  val &= 0x80000000;
  writel(val, cedar_devp -> sram_bass_vir);

  //remapping SRAM to MACC for codec test  (MACC = Media Acclerator)
  val = readl(cedar_devp -> sram_bass_vir);
  val |= 0x7fffffff;
  writel(val, cedar_devp -> sram_bass_vir);

Так что, если Вы делаете все правильно, а флаг done в status после trigger не поднимается, то нужно правильно настроить SRAM контроллер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.07.2022 в 17:29, repstosw сказал:

Сейчас кодированием JPEG занимаюсь:  биру с камеры фреймы и жму их в JPEG.  Кадры записываю в файл - получается MJPEG, который можно проглядеть на ПК с помощью MPC-HC.

Но FatFS + SD карта убивают производительность... 

 

Удалось ускорить работу с fatfs+SD ?
 
Думал у меня косяк при сжатии, а оказалось: без сохранения сжатого кадра (33кб) на SD-карту с fatfs скорость обработки с камеры - 25fps(ожидаемо), а с сохранением - 1 fps =( .
 
Карточка Samsung 64Gb с заявленной скоростью ~90Мб/c(брал на маркетпласе  О..н, на подделку не похожа).
 
Может есть набор "оптимальных" параметров  в fconf.h.? По коду драйвер diskio использует mmc_write_blocks по 512 байт. Не копить же по 25 кадров перед записью?!

Изменено пользователем _Евген_

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...