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

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

2 hours ago, repstosw said:

Новая проблема: не могу заставить происходить прерывание от CSI - оно не работает. Все смежные вектора перебрал - жизни нет.  Прерывания от других источников работают. Что-то опять китайцы намудрили :biggrin: Пока делаю программный опрос регистра статуса и очищаю его.

Прерывание от CSI заработало.

Причина была в неправильном порядке включения этих прерываний.

Вот так прерывание будет работать:

void CSI_Init(void)
{
 //инит CSI....

 //...

 bsp_csi_int_clear_status(0,0,CSI_INT_ALL); //очистка флагов прерывания

 bsp_csi_int_enable(0,0,CSI_INT_FRAME_DONE); //разрешение прерывания, по завершению фрейма

 CLI();                                                           //запрет прерываний на уровне ядра
 eGon2_Int_Init();                                                //инит GIC
 eGon2_InsINT_Func(CSI1_INT_NUM,(int*)CSI1_Handler,(void*)0);     //установка обработчика прерывания на указанный номер
 eGon2_EnableInt(CSI1_INT_NUM);                                   //разрешение прерываний в GIC

 //здесь прерывания пока запрещены на уровне ядра
}

void CSI_Start(void)
{
 STI();                                         //разрешить прерывания на уровне ядра
 bsp_csi_cap_start(0,BI.ch_total_num,CSI_VCAP); //начать захват CSI с камеры

 //здесь прерывания уже везде разрешены и они будут возникать
}

void main(void)
{
 //инит всего и вся
 //...

 CSI_Init();

 //... тут может быть всё что угодно: по времени несколько мс.

 CSI_Start();

 //...
}

void CLI(void)
{
	asm volatile (
                              "mrs r0, cpsr       \n"
		              "orr r0, r0, #0xC0  \n"
		              "msr cpsr_c, r0     \n"
                             );
}

void STI(void)
{
	asm volatile (
                              "mrs r0, cpsr       \n"
		              "bic r0, r0, #0xC0  \n"
		              "msr cpsr_c, r0     \n"
                             );
}

 

А вот так  - НЕТ (некоторые функции, отвечающие за прерывания, переставлены):

void CSI_Init(void)
{
 //инит CSI....

 //...

 CLI();                                                           //запрет прерываний на уровне ядра
 eGon2_Int_Init();                                                //инит GIC
 eGon2_InsINT_Func(CSI1_INT_NUM,(int*)CSI1_Handler,(void*)0);     //установка обработчика прерывания на указанный номер
 eGon2_EnableInt(CSI1_INT_NUM);                                   //разрешение прерываний в GIC
 STI();                                                           //разрешить прерывания на уровне ядра

 //здесь прерывания пока не разрешены в CSI
}

void CSI_Start(void)
{
 bsp_csi_int_clear_status(0,0,CSI_INT_ALL);     //очистка флагов прерывания

 bsp_csi_int_enable(0,0,CSI_INT_FRAME_DONE);    //разрешение прерывания CSI, по завершению фрейма

 bsp_csi_cap_start(0,BI.ch_total_num,CSI_VCAP); //начать захват CSI с камеры

 //здесь прерывания НЕ будут работать
}

 

 Интересно - почему? :unknw:

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

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


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

Убедиться, что срабатывание прерываний настроено по уровню?

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


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

23 часа назад, repstosw сказал:

И USB в режиме хоста мне тоже неинтересен )))

ИМХО, ну и зря, если б добавили его поддержку в свой SDK, он был бы заметно популярнее...

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


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

1 hour ago, GenaSPB said:

Убедиться, что срабатывание прерываний настроено по уровню?

Попробовал все 4 комбинации - все одинаково работают. 

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

 

#define GICD_ICFGR(n)		(*(IO u32*)(ARMV7_GIC_BASE + 0xC00 + 4 * (n)))

/* First bit is a polarity bit (0 - low, 1 - high) */
#define GICD_ICFGR_POL_LOW	(0 << 0)
#define GICD_ICFGR_POL_HIGH	(1 << 0)
#define GICD_ICFGR_POL_MASK	0x1

/* Second bit is a trigger bit (0 - level, 1 - edge) */
#define GICD_ICFGR_TRIG_LVL	(0 << 1)
#define GICD_ICFGR_TRIG_EDGE	(1 << 1)
#define GICD_ICFGR_TRIG_MASK	0x2


// set trigger type to be level-triggered, active low

u32 p=GICD_ICFGR_TRIG_LVL|GICD_ICFGR_POL_HIGH; //pattern for 16 interrupts

p=p|(p<<2)|(p<<4)|(p<<6)|(p<<8)|(p<<10)|(p<<12)|(p<<14)|(p<<16)|(p<<18)|(p<<20)|(p<<22)|(p<<24)|(p<<26)|(p<<28)|(p<<30);

for (i=0; i<GIC_IRQ_NUM; i+=16)
{
	GICD_ICFGR(i>>4) = p;
}

 

30 minutes ago, mantech said:

ИМХО, ну и зря, если б добавили его поддержку в свой SDK, он был бы заметно популярнее...

В настоящий момент есть задачи более приоритетные. 

Если совсем будет делать нечего, то начну ковырять USB хост. Либо если кто-то из заказчиков проспонсирует этот фронт работ.

 

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

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


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

On 7/22/2022 at 12:50 PM, sasamy said:

где-то на таобао есть 100ask t113-core

http://download.100ask.org/boards/Allwinner/T113/index.html#id6

появились на алике

https://aliexpress.ru/item/1005004603664445.html

 

там есть ещё на 300 рублей подороже  платка на h616 который превосходит t113 на пару порядков

https://aliexpress.ru/item/1005004552707340.html

 

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

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


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

2 hours ago, sasamy said:

появились на алике

 

2 hours ago, sasamy said:

там есть ещё на 300 рублей подороже  платка на h616 который превосходит t113 на пару порядков

 

Класс! :i-m_so_happy: Красавцы...  Надо будет заказать :yes:

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


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

2 часа назад, sasamy сказал:

платка на h616 который превосходит t113 на пару порядков

Не увидел никаких пары порядков. Из видео только HDMI, да еще и проц 64битный, который курить нет никакого желания...

2 часа назад, sasamy сказал:

появились на алике

https://aliexpress.ru/item/1005004603664445.html

А вот это уже куда лучше, спасибо!

Жаль только то,что там spi-nand, а не классический nor.

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

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


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

On 8/16/2022 at 4:32 PM, mantech said:

Из видео только HDMI

а что ещё надо для 4К ?

On 8/16/2022 at 4:32 PM, mantech said:

Жаль только то,что там spi-nand, а не классический nor.

xfel её поддерживает, что куда писать для загрузки надо разбираться

Quote

    xfel spinand                                        - Detect spi nand flash
    xfel spinand erase <address> <length>               - Erase spi nand flash
    xfel spinand read <address> <length> <file>         - Read spi nand flash to file
    xfel spinand write <address> <file>                 - Write file to spi nand flash
    xfel spinand splwrite <split-size> <address> <file> - Write file to spi nand flash with split support

$ sudo xfel spinand
Found spi nand flash 'W25N01GV' with 134217728 bytes

 

PS лог от другой платы, какая у них nand не знаю

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

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


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

On 8/15/2022 at 11:15 AM, repstosw said:

начну ковырять USB хост

Так камера это device... просто камеру сделайте. 

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


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

11 hours ago, mantech said:

Не увидел никаких пары порядков. Из видео только HDMI, да еще и проц 64битный, который курить нет никакого желания...

Там ещё менеджер питания AXP203, так просто будет не завести: придётся его программировать.

У Lichee Zero и Mango Pi MQ-Dual микросхема питания выдаёт готовые напряжения.

10 hours ago, GenaSPB said:

Так камера это device... просто камеру сделайте. 

Да я в курсе что всякие вёбки, камеры с ноутов или просто покупные USB-камеры - это связка из : той же OV2640 (или более поздний её клон) + чип USB.

Пока интересна сама камера без абстракционных наворотов через USB.

Мой девиз - сделать всё максимально прозрачным и простым. :yes:

 

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

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


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

Принципиальная схема платы T113-s3 ARM Dual-core Cortex A7 Core Board  (ядро):

https://forums.100ask.net/uploads/short-url/ka4fENWFKC3AeVsTaCwgZ1a0ixH.pdf

 

Принципиальная схема платы верхнего уровня:

https://forums.100ask.net/uploads/short-url/hbl6crUJzeMn13stMmXA4jmfi2z.pdf

 

Остальная инфа:

https://forums.100ask.net/t/topic/399

 

Репозиторий продавца плат касаемо T113-s3:

https://github.com/DongshanPI/buildroot_100ask_t113-pro

 

Форум:

https://forums.100ask.net/c/aw/15/l/latest?board=default

 

Tina Linux SDK для T113-s3: SDK T113-s3  - для раздербана на BareMetal :moil:

f0d12249-b482-4c0c-9cb0-fbb8aa06eece-d6ae38cf7c6158771e1fb2c0a6baceb0.jpg.2c402eb346ba04ff8668baad50a826fc.jpg :rofl:

 

 

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

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


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

15 часов назад, sasamy сказал:

а что ещё надо для 4К ?

Да просто это 4К нафиг не надо)))  А вот eDP порт был бы кстати, но увы и ах((

15 часов назад, sasamy сказал:

xfel её поддерживает, что куда писать для загрузки надо разбираться

Да, я видел, записать туда мне надо 2 файла, один 32К, для инита ДДР и второй 100К - основной загрузчик, который уже делает инит всего, что надо и загружает фреймворк с СД карты сети или УСБ.

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

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

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


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

Чтение посекторное из nand ногодрыгом у меня в проекте есть.

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


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

Только что, GenaSPB сказал:

Чтение посекторное из nand ногодрыгом

Из SPI нанда или обычного?

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


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

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

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

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

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

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

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

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

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

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