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.

[参考译文] RTOS/PROCESSOR-SDK-AM335X:Nimu 基本示例问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/652401/rtos-processor-sdk-am335x-nimu-basic-example-issue

器件型号:PROCESSOR-SDK-AM335X

工具/软件:TI-RTOS

我有这个问题:未处理的 ADP_Stopped 异常0x20023、并且发现了这个问题:

e2e.ti.com/.../2191411

与螺纹一样、我的也几乎开箱即用。  它是"Nimu_BasicExample_bbbAM335x_armExampleProject"项目。  (通常、他的问题从未得到解答)

我所做的就是从更改 CFG 文件  

VAR enableStaticIP = 1; 

更改为

VAR enableStaticIP = 0; 

并添加了 IP 分配时间的函数回调。 当然、我必须更正代码中包含超 flous 参数的错误、如所示  

System_printf ("\n\rBIOS 任务启动\n\r"、LocalIPAddr); 

运行一个位后、它会捕获错误。  我假设它是在 DHCP 分配发生时发生的。  但我无法弄清发生了什么。

此错误是什么?  指令地址无效?  存储器访问?  时钟模块未启用?  如果我知道在何处查找含义、至少可以开始调试。

-CSW

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请提供所需信息: processors.wiki.ti.com/.../Checklist_for_Processor_SDK_RTOS_questions_on_E2E
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    • 用于调试的 EVM 硬件 

      JTAG XDS 100V2 (也称为"Blackhawk、尽管它不是)

    • 主机环境 Linux 或 Windows?? 

      Windows 7专业版

    • 处理器 SDK RTOS 版本 

    较新的 PDK 4.0.0.4或 NDK 2.25.01.11

    • Code Composer Studio 版本

    CCS 7.2

    但我只想知道、AM335x 处理器的0x20023是什么例外?

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

    但是、让我们深入探究此示例、并将其与   我已阅读的文档 spru523、spru524和 sprufp2b 进行比较。

    ( 这些示例位于"Nimu_BasicExample_bbbAM335x_armExampleProject"的"main.c"中)

    示例的第130行是

    SOCCtrlCpswPortMacModeSelect (1、Ethernet_MAC_TYPE_MII); 

    我列出的任何文档中的任何位置都未记录该文档。  这是什么? 它的作用是什么?

    第135+行包含

    EMAC_socGetInitCfg (0、&cfg);
    ...
    EMAC_socSetInitCfg (0、&cfg); 

    在我列出的上述文档中的任何位置都没有记录该信息。  这些函数未在示例中定义、它们嵌在 NDK 库中。 (按 F3键、您将看到封装中的标题原型- PDK 无法按原样构建、因此无法重建它、我始终坚持使用它、这是我在另一个线程上发布的问题、未能得到解决。)

    接下来、第147行是:

    NIMUDeviceTable[NIMU_DEVICE_index++].init =&CpswEmacInit;
    NIMUDeviceTable[NIMU_DEVICE_index].init = NULL; 

    什么是 NIMUDeviceTable?   在上述文档中的任何位置都没有记录。  函数“CpswEmacInit()”是什么?  上述文档中的任何地方也未记录该文档。

    是的、我已尝试搜索。  我能想到的任何地方。  在 PDF 中。  在 Wiki 中。  在 Google 中...  没有定义这些内容的真正 API 文档。

    我有一组与示例工程没有相似性的"SPRUN"文档、还有一个使用收集库函数的示例、在 NDK 文档中的任何位置都没有文档说明或详细信息。

    因此、很显然、RTFM 是无用的。。。

    我是唯一发现生态系统问题的人吗?

    -CSW

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

    >>运行一个位后,它会以错误进行陷阱。
    在禁用静态 IP 之后以及异常之前,您是否能够获得 DHCP 服务器分配的 IP 地址? 您的 DHPC 配置是否如下所示?

    CI_SERVICE_DHCPc dhcpc;
    //在 IF-1上指定 DHCP 服务
    bzero (&dhcpc,sizeof (dhcpc));
    dhcpc.cisargs.Mode = CIS_FLG_IFIDXVALID;
    dhcpc.cisargs.IfIdx = 1;
    dhcpc.param.pOptions = DHCP_OPTIONS;
    dhcpc.param.len = 2;
    CfgAddEntry (hCfg、CFGTAG 服务、CFGITEM_SERVICE_DHCPCLIENT、0、
    sizeof (dhcpc)、(uint8 *)&dhcpc、0);

    我将在内部提交一个文档错误。 源代码可能有助于理解 EMAC 驱动程序和 NDK 中的这些函数。

    SOCCtrlCpswPortMacModeSelect ()-请参阅 PDK packages \ti\starterware\soc \AM335x\AM335x_control.c,它用于配置 GMII_SEL 寄存器:
    HW_SET_FIELD (regVal、CONTRAL_GMII_SEL_GMII1_SEL、0U);
    HW_SET_FIELD (regVal、CONTROL_GMII_SEL_RGMII1_IDMODE、0U);
    HW_SET_FIELD (regVal、CONTRAL_GMII_SEL_RMII1_IO_CLK_EN、0U);

    emac_socGetInitCfg ()-请参阅 PDK packages/ti\drv\emac\soc \am335x\emac_soc.c、它获取 EMAC 初始配置的 SoC 级别
    *cfg = EMACInitCfg[port_num];

    NIMUDeviceTable()-请参见 NDK packages \ti\NDK\inc\stack\inc\nimuif.h NIMUDeviceTable 是驱动程序初始化函数的 NULL 终止数组。

    CpswEmacInit -请参阅 PDK packages \ti\transport \NDK\Nimu\src\v4\cpsw_Nimu_eth.c 该函数用于初始化 EMAC 并将其注册到网络接口管理单元(NIMU)。

    此致、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chris、
    我们似乎正在尝试做类似的事情、并遇到许多非常相似的障碍/缺少文档。 因此、您并非孤军奋战。

    无论如何、请查看此帖子、我最终解决了自己的问题、因为我遇到了非常类似的异常错误、并且所有这些错误都与 MMU 设置相关。 也许您已经处理过这个问题、但它解决了我的一些问题、试图将不同的示例引入一个项目中。 由于某种原因、示例程序并未映射用于启用外设的所有 MMU、因此您必须检查它们是否都存在、否则您将遇到问题。

    e2e.ti.com/.../664242

    我还想补充的是、如果您正在构建代码以便目标从 SD 卡引导(或其他方法、只是不使用 JTAG 加载代码)、我发现代码中的任何 fprints 都会锁定软件并使其崩溃。

    Alex
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alex、
    谢谢。 我已经解决了。 这是两个月前的事,我甚至不记得这是什么问题,因为我还有很多问题。
    最后、我已将整个 NDK 导入到工程中、并使用我正在处理的任何内容的代码重建它。 现在、我可以看到函数在执行什么操作、代码中的一些注释实际上很有用。

    对于 MMU 访问、我编写了一个函数、该函数实际上会转到并获取 MMU 表基址、修改适当的表条目位置、然后将该表重新应用到 CP15寄存器。 讨论在了解 ARM 架构方面获得硕士学位!

    对于从 SD 卡引导、这也是一个问题。 但我要尝试的是、让它使用 TI 编译器进行工程编译。 同样、与该生态系统中的大多数东西一样、它不起作用... 开箱即用。 一个绝对很小的"让 LED 闪烁"项目、其中包含一些 Starterware 源代码来为我提供 GPIO 功能、但无法加载或运行。 我相信这是因为工具没有将插卡上的 MLO 和应用程序文件的入口点设置为正确的位置。

    它可与 GNU 编译器配合使用。 所以它不是*我的*代码。 它是进行这种重组的工具。 但是,支持与往常一样微不足道。 其他优先事项占用了我的时间。 一两周后、我可能会深入探讨这一点。