Портирование pjsip под STM32F7

112 views
Skip to first unread message

Александр Фатеев

unread,
Jul 26, 2017, 11:40:51 AM7/26/17
to embox-devel
Хочу портировать и запустить pjsip на STM32F476G-DISCO, как дебажить процесс? Например сейчас я скомпилировал проект с модулями embox.driver.audio.portaudio_stub и third_party.pjproject.simpleua
и получил ошибку при запуске pjsip_simpleua и перезагрузка:

 ASSERTION FAILED on CPU 0
        at ../src/samples/simpleua.c:233
        in function main

status == PJ_SUCCESS�

И еще вопрос, в драйверах используется функция
#define D(fmt, ...) \
    do { \
        printk("%s" fmt "\n", __VA_ARGS__); \
    } while (0)

Для вывода дебажных сообщений, куда оно их выводит? Как настроить что б это был урат1 или 6?

Anton Bondarev

unread,
Jul 27, 2017, 4:27:59 AM7/27/17
to embox...@googlegroups.com
Отличная идей, спасибо. Но пока там довольно много задач.

  1. Мы нашли в чем проблема с новым компилятором и stm-ками, чейчас решаем.
  2. По идее нужно портировать звук, взять из куба вызовы и сделать как для es1730 или intel8x0, это драйвера для зкуковух которые под portaudio работают
embox.driver.audio.portaudio_stub был добавлен для оценки памяти, он не должен по идее запускаться.

Отладка может быть при помощи gbd. Если нужно то напишем краткую инструкцию, как сделать. Ну и printf(k) предпочтительнее использовать log_gebug log_error и так далее. В каждом модуле можно установить свой уровень логирования, по умолчанию логи отключены

printk - указывает как раз на тот diag интерфейс и не переопределяется, там есть еще нюансы вроде, но они не принципиальные. То есть, printk всегда будет установленный в diag модуле интерфейс, а printf переопределяется и направлеяется куда указывает индексный дескриптор

26 июля 2017 г., 18:40 пользователь Александр Фатеев <luse...@gmail.com> написал:

--
You received this message because you are subscribed to the Google Groups "embox-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to embox-devel+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Александр Фатеев

unread,
Jul 27, 2017, 4:52:34 AM7/27/17
to embox-devel
Да, напишите инструкцию как запустить отладку, пожалуйста.
Так если я буду использовать функции log_gebug, где вывод смотреть?

Anton Bondarev

unread,
Jul 27, 2017, 5:18:56 AM7/27/17
to embox...@googlegroups.com
log_debug будет выводиться если указать уровень log_level=4 для модуля. Выводиться в diag интерфейс

Инструкцию чуть позже напишем.

27 июля 2017 г., 11:52 пользователь Александр Фатеев <luse...@gmail.com> написал:
Да, напишите инструкцию как запустить отладку, пожалуйста.
Так если я буду использовать функции log_gebug, где вывод смотреть?

--

Александр Фатеев

unread,
Jul 27, 2017, 5:30:58 AM7/27/17
to embox-devel
Спасибо, буду пробывать.

Alex Kalmuk

unread,
Aug 23, 2017, 9:20:18 AM8/23/17
to embox...@googlegroups.com
Александр, 

Мы тут добавили ветку https://github.com/embox/embox/tree/pjsip-cube
В ней пример микрофона для stm32f7. Можете попробовать.
Собираем темплейт make confload-platform/pjsip/stm32f7cube && make
Затем запускаем и в консоле embox выполянем команду record_stm32. Говорим в MEMS микрофоны, голос записывается. 
Потом вопсроизводим командой play.

С уважением,
Александр Калмук

2017-07-27 12:30 GMT+03:00 Александр Фатеев <luse...@gmail.com>:
Спасибо, буду пробывать.

alexand...@gmail.com

unread,
Dec 30, 2017, 5:02:07 AM12/30/17
to embox-devel
Здравствуйте и с Новым Годом!

Идет попытка запустить embox+pjsip на stm32f746. Все собирается, заливается, начинает работать embox, затем руками запускаю pjsip_simpleua, вываливается ассершн про незарегистрированый поток:


 ASSERTION FAILED on CPU 0
        at ../src/pj/os_core_unix.c:674
        in function pj_thread_this

!"Calling pjlib from unknown/external thread. You must " "register external threads with pj_thread_register() " "before calling any pjlib functions!!!"

Ну соответственно, сброс. Использую бранч https://github.com/embox/embox/tree/pjsip-cube с конфигурацией confload-platform/pjsip/
stm32f7cube

Вопрос в следующем - как заниматься дебагом? Вы писали про некую инструкцию, можно попросить ее, пожалуйста, если есть?
Никто не сталкивался с такой проблемой? Выглядит довольно странно как по мне. Как не пытаюсь добавить регистрацию, все одно и то же.
Буду признателен за любую идею по этому поводу.

Спасибо большое!

С уважением,
Александр


On Wednesday, August 23, 2017 at 11:20:18 PM UTC+10, Александр Калмук wrote:
Александр, 

Мы тут добавили ветку https://github.com/embox/embox/tree/pjsip-cube
В ней пример микрофона для stm32f7. Можете попробовать.
Собираем темплейт make confload-platform/pjsip/stm32f7cube && make
Затем запускаем и в консоле embox выполянем команду record_stm32. Говорим в MEMS микрофоны, голос записывается. 
Потом вопсроизводим командой play.

С уважением,
Александр Калмук
2017-07-27 12:30 GMT+03:00 Александр Фатеев <luse...@gmail.com>:
Спасибо, буду пробывать.

--
You received this message because you are subscribed to the Google Groups "embox-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to embox-devel...@googlegroups.com.

anton.bon...@gmail.com

unread,
Dec 30, 2017, 10:11:55 AM12/30/17
to embox...@googlegroups.com

Добрый день.

На счёт отладки, вот тут что то описано 
Мы используем gdb и openocd. Можно ставить точки останова и ходить по шагам

Сходу не скажу про ошибку, нужно разбираться подробнее.

А смотрели на бранч https://github.com/embox/embox/tree/pjsip-cube

P.S. С наступающим!

С уважением, Антон Бондарев
30 дек. 2017 г., в 9:02, alexand...@gmail.com написал(а):

alexand...@gmail.com

unread,
Dec 30, 2017, 6:24:42 PM12/30/17
to embox-devel
Здравствуйте,

Спасибо, Антон, за быстрый ответ, да я использую именно эту ветку для проекта.
После моего сообщения я таки запустил отладку gdb+openocd под eclipse, сейчас я могу отладкой заняться.
Напишу чем закончилось.
Спасибо еще раз!
Хорошего празднования!

С уважением,
Алексарнд

alexand...@gmail.com

unread,
Jan 2, 2018, 6:45:51 AM1/2/18
to embox-devel
Здравствуйте,

Во время отладки дохожу до следующего assert()  при запуске pjsip_simpleua:



Причем добавил в код проверку if (!pj_thread_is_registered()) которая показывает что поток таки зарегистрирован. Буду признателен за любые мысли по этому поводу. Продолжаю борьбу :)

Спасибо огромное!

С уважением,
Александр
Auto Generated Inline Image 1

Anton Kozlov

unread,
Jan 2, 2018, 9:46:05 AM1/2/18
to embox...@googlegroups.com
Здравствуйте.

Кажется, pjsip устанавливает что-то в thread local storage потока во время регистрации. Ассерт падает сразу после того, как не может найти это что-то в TLS.

В темплейте platform/pjsip/stm32f7cube почему-то не указана реализация TLS, по умолчанию используется пустышка thread_local_none

Попробуйте добавить в conf/mods.config 
   
    include embox.kernel.thread.thread_local_heap

и сделать make clean перед пересборкой. Проверить сам я, к сожалению, не могу.

Антон К

Anton Bondarev

unread,
Jan 3, 2018, 8:01:32 AM1/3/18
to embox...@googlegroups.com
Добрый день.

Да, действительно не указана реализация thread_local_storage
Правда она не указана и в остальных темплейтах например в platform/pjsip/stmf4discovery
    //include embox.kernel.thread.thread_local_none

Но pj_local_thread_local_get должна что то возвращать. А для этого нужно подключить реализацию heap на предложил Антон К

То есть, мы в процессе должны попасть в функцию     thread_local_get() из файла thread_local_heap.c


С уважением, Антон Бондарев


2 января 2018 г., 17:45 пользователь Anton Kozlov <drako...@gmail.com> написал:
--
You received this message because you are subscribed to the Google Groups "embox-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email to embox-devel+unsubscribe@googlegroups.com.

alexand...@gmail.com

unread,
Jan 5, 2018, 12:07:52 AM1/5/18
to embox-devel
Здравствуйте и доброго времени суток!
Спасибо за советы, сделал это, теперь возникла проблема с heap



В данном случае по какой-то причине он валится тут в процессе pj_pool_create_impl:




Любопытно, что передаваемый блок памяти из пула содержит какой-то мусор - обратите внимание на размер выделенный желтым цветом:



Если будут какие-то мысли на этот счет, буду очень признателен. Продолжаю плавание.


Спасибо огромное!

С уважением,
Александр

To unsubscribe from this group and stop receiving emails from it, send an email to embox-devel...@googlegroups.com.
Auto Generated Inline Image 1
Auto Generated Inline Image 2
Auto Generated Inline Image 3

alexand...@gmail.com

unread,
Jan 5, 2018, 1:31:24 AM1/5/18
to embox-devel
Здравствуйте,

В добавление интересное наблюдение - если я беру за пример конфигурацию предположительно рабочего кода (нет возможности проверить, такой платы в наличие нет) для
platform/pjsip/stm32f4discovery как написано в вашей статье про запуск sip на хабре, там практически то же самое, за исключением конфигурации хипа 
__section(heap, SRAM_CCM, )
если я добавляю это в мой прооект, hard fault генерируется еще на стадии инициализации хипа. Что-то явно не так. Не могу понять. Буду признателен за идеи.

Спасибо еще раз!

Anton Kozlov

unread,
Jan 5, 2018, 5:20:15 AM1/5/18
to embox...@googlegroups.com
2018-01-05 9:31 GMT+03:00 <alexand...@gmail.com>:
Здравствуйте,

В добавление интересное наблюдение - если я беру за пример конфигурацию предположительно рабочего кода (нет возможности проверить, такой платы в наличие нет) для
platform/pjsip/stm32f4discovery как написано в вашей статье про запуск sip на хабре, там практически то же самое, за исключением конфигурации хипа 
__section(heap, SRAM_CCM, )
на f4 нам не хватало размера основной ram для всего, поэтому кучу мы вынесли на SRAM CCM (closely coupled memory, кажется). Это не совсем правильно по свойствам этой памяти, но pjsip неплохо разложился в такую схему памяти.
Именно эта строчка отвечает за расположение кучи на CCM

К сожалению, тоже не могу проверить работоспособность.
 
если я добавляю это в мой прооект, hard fault генерируется еще на стадии инициализации хипа. Что-то явно не так. Не могу понять. Буду признателен за идеи.


По поводу проблемы тоже не понятно, может быть 
* возможно ли, что на Вашей f7 RAM меньше 256KB?
* баг в malloc? куча портится? можно попробовать проверить хедер этого блока при последнем успешном выделении или ещё раньше, меняется ли он после fault'а?
* с расположением кучи на CCM тоже интересно, возможно ли что CCM не 64KB, или расположен не на 0x10000000? Мгновенный крэш возможно связан с проблемой конфигурации CCM. Куча для ядра инициализируется в src/mem/heap/static_heap.c, выделенная куча на CCM -- в static_heap2.с. Меняется ли поведение, если очистить/забить чем-нибудь кучу?

Антон К
 

alexand...@gmail.com

unread,
Jan 5, 2018, 8:12:28 AM1/5/18
to embox-devel
Здравствуйте, Антон,

Спасибо за ответы, это мне на завтра.
Но за сегодня вот


Эта точка имеет смысл когда система стартует, там все хорошо. Как только pjua запускаю с командной строки, вот, типа 0 пространства для процесса. Видно что хип для каждого процесса свой и конкретно этот указатель дает 0
У меня плата WaveShare Open 7xx с процессором 746IGT6 вроде вся память на месте. Завтра еще посмотрю. Насчет CCM все понятно, это не важно. Очень странно 0 для доступного хипа процесса
Спасибо!

Уважаю что вы делаете )
Auto Generated Inline Image 1
Reply all
Reply to author
Forward
0 new messages