主题中讨论的其他器件:HALCOGEN
我正在研发 Hercules HDK。 我生成了 HalCoGen FreeRTOS 代码、并且正在移植 LwIP v2。 发送 DHCP 数据包时遇到问题-我还没有通过 DHCP。
首先、我将使用来自 LWIP 的 sys_arch.c: https://github.com/lwip-tcpip/lwip/blob/master/contrib/ports/freertos/sys_arch.c
在存储器中构建 DHCP 数据结构后、LWIP 开始将缓冲区向下传递到硬件。 最终调用 sys_arch_protect(),进而调用 :pragma SWI_alias (vPortEnterCritical,2)
对 vPortSWI 的调用会将 r11、R12、LR 的随机数据写入 DHCP 缓冲区的中间。
vPortSWI
stmfd sp!、{r11、r12、lr}
R12夫人 、spsr
数 R12、R12、#0x20
ldrbne R12、[LR、#-2]
ldrbeq R12、[LR、#-4]
LDR r14、 表
LDR R12、[r14、R12、LSL #2]
Blx R12
mfldd sp!、{r11、r12、pc}^
我已经尝试将堆栈大小增加到8192 (堆65536)、但 vPortSWI 始终将这些寄存器保存到缓冲区的中间。 在寄存器"sp"的值之后、当调用接近 vPortSWI 的点时、似乎是有道理的、但是"sp"会在我的 DHCP pbuf 中加载一个地址。 不清楚为什么会发生这种情况。
有什么想法为什么会发生这种情况? 或者我应该检查的东西?
谢谢、
Matt