This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM57L843:IAR 中的 Lwip 集成问题

Guru**** 2543200 points
Other Parts Discussed in Thread: HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/981206/rm57l843-lwip-integration-in-iar-issue

器件型号:RM57L843
主题中讨论的其他器件:HALCOGEN

您好!

我已经在 IAR 中集成并符合 Lwip 1.4.1堆栈、

同一堆栈在 CCS 中工作、并测试了 UDP 协议、

如下图所示、IAR 中用于启用中断和 CPSR 状态获取的内在函数的权变措施为:

CPSR 状态获取权变措施

uint32_t IntMasterStatusGet (void)
{
//返回(0xC0 &_GET_CPSR ());
返回(0xC0 &_ GET_CPSR ()));
}

但在初始化 lwip 时、代码会在 HL_SYS_CORE.asm 的 mloop 中挂起、我观察到 MINIDONE 位设置为0、这意味 着并非所有存储器的存储器硬件初始化都完成

但是、如果我进行评论  

lwIPInit (0U、puMacaddress、(uint32_t) Server_IP、(uint32_t) subnet_mask、(uint32_t) gate_way、 (uint32_t) IPADDR_USE_STATIC);

我的 REST 代码在没有 UDP 功能的情况下运行良好、

请告诉我在哪里以及缺少什么、

谢谢、

Vikas N.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Vikas、

    通过 HCG 生成的 pbistStop()错过了 PBIST 控制器的复位。 这将防止其他总线主控写入内存。  

    请按如下所示更改 pbistStop()函数(突出显示的指令):

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请查看以下主题。 您是否尝试过旧版 IAR Workbench (V8)?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ Wang、您好!

    谢谢、

     如您所述、内存硬件初始化问题已通过更改得到解决、现在我可以继续进一步检查 UDP 功能、

    正如我所观察到的  

    lwIPInit (0U、puMacaddress、(uint32_t) Server_IP、(uint32_t) subnet_mask、(uint32_t) gate_way、 (uint32_t) IPADDR_USE_STATIC);
    
    if (ML_udp_Server_Init()!= ERM_Success)
    {
    Eret = ERM_FAILURE;
    } 

    如果未连接 LAN 电缆、则在 IAR 中成功执行上述功能、但

    如果我连接 LAN 电缆以检查 UDP 特性、则我在 MDIOPhyRegRead 行号101中挂起一段时间并进入 Data_Entry 的代码。

    我在 Code Composer Studio 中编译和检查 UDP 功能的代码相同、唯一的权变措施是更改了内在函数以启用/禁用 IRQ 并获取 IAR 的 CPSR 状态、如下所示:

    请建议如何解决上述问题。

    此外 、如果有任何示例可检查 IAR 中的 lwip 堆栈 UDP/TCP 功能、请提供建议。

    谢谢你  

    Vikas N.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Vikas、

    由于 GO 位被清零、PHY 读操作尚未完成。 时钟是否处于有效范围(< 2.5MHz、典型值为1MHz)? 寄存器编号和 PHY 地址是否正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、

    感谢您、现在我能够无误地编译工程、并且运行时间错误也被删除了、

    目前我遇到无法 ping 的问题。 (我能够在 CSS 中 ping 相同的项目)、无需执行以下操作。

    权变措施是 lwiplib.c 中注释的一些包含文件、如图所示、  

      

    如果我如图像编译器中所示取消注释的 include、则会产生以下错误(重复定义)、

    编译配置:PL 代码 IAR -调试
    更新编译树...
    
    链接
    
    版权所有2007-2018 IAR Systems AB。
    ERROR[Li006]:"Current_HEADER"的重复定义;在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - Obj\IP.o"
    中、"C:\Users\Viiph\Visit_Debug\liph\lib_Debug\lipdr";"\lib_Debug\Current_definitions"中、"\lib_definit 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"
    中、"src_CURRENT"重复定义: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"中、
    出现"重复的"006当前定义:"Lib_006"; 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\Users\
    Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"
    中、出现"ICMP_lib_reake_definitions"、"ICMP_definitions"中删除重复定义: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\icmp.o"和
    "C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"中、
    出现"ICMP_lib_006\lib_Error"重复输入:"ICMP_lib_006"; 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\icmp.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"中、
    "Error[rum_006]"中删除重复定义: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\inet_chksum.o"
    和"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplj\lwibukibu.n\lib_rum.o"中、
    "CCS _definitions:"rus\lib_definitions 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\
    inet_chksum.o"和"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwib006\lib_definition_definitions"中、
    "sud_lib_definition_definitions"中、"u_definition_definitions"中 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\
    inet_chksum.o"和"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib\ldise_definition_definitions"中、
    "s"s"sud_masku_masku_definition_definitions"中、"pregions 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\
    inet_chksum.o"和"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib.n\lib_006"中、针对
    "lib_inition_definition_r_definitions"定义中、"4A 重复"i_misr_misr_ 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\
    IP_addr.o"和"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib.n\桌面\桌面\to IAR _2\ipdr_maskat_4\u_definition_r.4\i_definition_r_r_definit
    在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\
    IP_addr.o"和"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib.006"中、针对
    "IP_addr_def_initions"、"_def_initions"中添加重复定义: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP_addr.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib.006"中、出现
    "IP 重复定义:"IP_addr_mis" 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP_addr.o"
    和"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwilib.006"中、输入
    为"IP_2\lib_\lib_006"重复定义: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\Users\
    Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"中、
    出现重复的"IP_006"输出错误: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\Users\
    Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"中、
    对于"IP_006"重复的 IP_output"错误: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\Users\
    Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"中、
    出现"IP 重复定义:"IP_006"中、"IP 错误: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP.o"和"C:\Users\
    Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"
    中、"Error_006\lib_addr"中删除重复定义: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP_addr.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib.006"中、针对
    "lib_def_initions"重复定义:"iaddr" 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP_addr.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib.006"中、针对
    "i_totr_def_r"重复定义: 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP_addr.o"和"C:\
    Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib\lwiplib.n006
    ;"a _addr_definitions"中、"_definition_r_definitions"中、 在"C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\IP_addr.o"和
    "C:\Users\Vikas.n\Desktop\to IAR _2\PL code IAR - Build without runtime error - 1\Debug\Obj\lwiplib.o"中
    
    56 288字节的只读代码存储器
    2 068字节的只读数据存储
    器138 357字节的读写数据存储
    
    器错误:22
    警告:无
    
    链接时间:0.22 (CPU) 0.24 (已用)
    运行链接器时的错误
    
    总数:22
    警告总数:0
    

    IAR 中 lwip 的集成过程、

    1.预处理器-包含目录:

    2.从编译中排除:

    请建议解决方案、

    此外、如果有任何使用 IAR EWARM 编译的 lwip 堆栈示例、请提供。

    谢谢、

    Vikas N.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好、Vikas、

    我不熟悉 IAR IDE。

    lwiplib.c 文件中已包含一些源文件。 编译时需要排除以下文件:

    用于 CCS 和 IAR 的链接器 cmd 文件应该不同。 请使用选项"IAR"重新生成这些文件(连接器、*。asm):

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Qj Wang、

    谢谢你。

    现在我能够编译项目、PHY 读取成功(我已经验证了读取地址和 PHY 地址)。

    在我继续研究 lwip 集成时、我已检查"void EMACCore0RxIsr (void)"ISR 获取周期性调用(注意;不使用 RTOS)、在 halcogen 中启用 c0_TX_PULSE 和 c0_Rx_PULSE 中断。

    在 CCS 中、我已在 ping 进入 icmp_input 函数后检查了、Ping 操作成功、但在基于 IAR 的工程中、ping 操作完成后未进入 icmp_input。

    我已检查 lwip 的所有文件是否正确、并与工作项目进行比较、

    请向我推荐解决方案。

    谢谢、

    Vikas N.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     大家好、Vikas、

    应 预定义符号_RM57Lx_。 如果要使用 MPU 的功能、还需要手动启用 MPU。 HAL 在 hl_sys_core.asm 中生成 MPU init 函数、但您需要在 main (0或 startup.c)中调用_mpuInit()_

    我不熟悉 IAR 编译器、因此我无法提供更多建议。 是否启用了代码优化?