Jump to content

    

STM32F777: Странное поведение NETCONN

Столкнулся со странностью поведения NETCONN (но, может и сам где-то накосячил). Есть две задачи FreeRTOS, в каждой из которых создаётся свой NETCONN объект. В задаче, которая выполняется первой, странностей при создании NETCONN объекта нет. А во второй задаче есть: объект, возвращаемый netconn_new содержит некорректный адрес юниона pcb - он будто задом-наперёд.

Я заходил пошагово в функцию netconn_new_with_proto_and_callback (она вызывается при netconn_new), в ней создаётся объект conn абсолютно нормальный:

_before.thumb.png.b233490391f4303b367d00f0648312d7.png

Но на следующем шаге, когда его адрес возвращается в точку вызова функции, отладчик показывает объект NETCONN с некорректным адресом pcb:

_after.thumb.png.17af4425908709679359bb1dcd597010.png

В дальнейшем, естественно, при первой же попытке использовать, например, pUdpConn->pcb.udp->local_ip, процессор уходит в обработчик аппаратной ошибки. С чем может быть это связано? Стек задачи увеличивал - не помогло.

Share this post


Link to post
Share on other sites

Кажется, я понял в чём дело. Подозреваю директиву #pragma pack(1) в своих заголовках. Исправил на пару #pragma pack(push, 1)/#pragma pack(pop), но проверить пока не могу - железо на работе.

Не нашёл как удалить тему.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now