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.
工具与软件:
大家好、团队成员:
在以太网方面、我观察到的情况很少
1.我初始化一个空项目、 用 lwip (CPSW)配置 RGMII。
进行构建时 C:/ti/mcu_plus_sdk_am263x_09_02_00_55/source networking/enet/utils/include/enet_board.h:48:10:致命错误:未找到"enet.h"文件 导致误差
请让我知道如何解决这个问题。
2.虽然配置 RMII 模式引脚多路复用器没有定义为 RGMII 模式、但它只配置一个端口的第二个端口引脚被禁用
我也跟着
AM2634:双 RMII 模式配置-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- 也有 TI E2E 支持论坛
请让我知道如何解决它
您好!
我在 empty 项目中也出现了此错误
当我导入 enet_cpsw_rawhttpserver_am263x-cc_r5fss0-0_nortos_ti-arm-clang 时、即使此变量在此示例中未定义、我也不会收到此错误、使用的是 netif_input、而不是 TCIP_input
请引导我
尊敬的 Swati:
出现这些错误的原因是工程属性中缺少包含文件和包含路径。 在 CCS 中导入以太网项目时不会出现错误、因为这些路径已经包含在内。 在空项目中、正如名称所暗示的、它应该是未配置的或空的、没有在文件目录中添加以太网路径。
要解决此错误、我建议您比较空工程的工程属性(Compiler 和 Linker 属性)、并在 CCS 工程属性中使用 Include paths/dir (右键点击空工程、转到属性)
确保您的"ARM 编译器->包含选项"和"ARM 链接器->文件搜索路径"与以太网项目类似。 然后重新编译工程、应该会成功编译。
此致、
Shaunak
尊敬的 Shaunak Deshpande:
我在空项目中配置以太网项目、构建正常、但使用 RGMII 时、我进入 RMII 时遇到此错误
**** Build of configuration Release for project drivers_am263x-cc_r5fss0-0_nortos_ti-arm-clang **** "C:\\ti\\ccs1250\\ccs\\utils\\bin\\gmake" -k -j 8 all -O Building file: "../example.syscfg" Invoking: SysConfig "C:/ti/sysconfig_1.20.0/sysconfig_cli.bat" -s "C:/ti/mcu_plus_sdk_am263x_09_02_00_55/.metadata/product.json" --script "D:/workspace/AM2634_Drivers/drivers_am263x-cc_r5fss0-0_nortos_ti-arm-clang/example.syscfg" --context "r5fss0-0" -o "syscfg" --part AM263x --package ZCZ --compiler ticlang Running script... Validating... info: SERVICE_PORT(/drivers/uart/uart) baudRate: Actual Baudrate Possible: 115385 (0 % error) info: RADIO_DATA(/drivers/uart/uart) baudRate: Actual Baudrate Possible: 115385 (0 % error) info: RADIO_CONTROL(/drivers/uart/uart) baudRate: Actual Baudrate Possible: 9585 (0 % error) info: BIU(/drivers/uart/uart) baudRate: Actual Baudrate Possible: 9585 (0 % error) info: RFID_READER1(/drivers/uart/uart) baudRate: Actual Baudrate Possible: 115385 (0 % error) info: RFID_READER2(/drivers/uart/uart) baudRate: Actual Baudrate Possible: 115385 (0 % error) info: CONFIG_MPU_REGION0(/kernel/dpl/mpu_armv7) attributes: Some memory region(s) within this range is Shared among cores. info: CONFIG_MPU_REGION1(/kernel/dpl/mpu_armv7) attributes: Some memory region(s) within this range is Shared among cores. info: CONFIG_MPU_REGION2(/kernel/dpl/mpu_armv7) attributes: Some memory region(s) within this range is Shared among cores. info: CONFIG_MPU_REGION3(/kernel/dpl/mpu_armv7) attributes: Some memory region(s) within this range is Shared among cores. Generating Code (example.syscfg)... subdir_rules.mk:16: recipe for target 'build-909863937' failed TypeError: Cannot read properties of undefined (reading 'MDIO_MDIO') at subTemplateFunction (C:\ti\mcu_plus_sdk_am263x_09_02_00_55\source\drivers\.meta\pinmux\pinmux_module_config.c.xdt:69:44) at C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\src\pinmux\services\resources\runtime.ts:108:11 at templateFunc (C:\ti\mcu_plus_sdk_am263x_09_02_00_55\source\drivers\.meta\pinmux\pinmux_config.c.xdt:16:74) at func (C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\src\pinmux\services\codeGeneration\templateRunner.ts:29:39) at allowPathVisibility (C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\src\pinmux\services\pathsVisibility.ts:11:10) at runTemplate (C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\src\pinmux\services\codeGeneration\templateRunner.ts:29:13) at t.CodeGenerator.generate (C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\src\pinmux\services\codeGeneration\codeGenerator.ts:115:10) at iteratee (C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\src\pinmux\services\codeGeneration\codeGenerator.ts:120:26) at baseMap (C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\node_modules\lodash\lodash.js:653:23) at Function.wa [as map] (C:\ti\sysconfig_1.20.0\dist\webpack:\sysconfig\node_modules\lodash\lodash.js:9621:51) gmake: *** [build-909863937] Error 1 gmake: Target 'all' not remade because of errors. **** Build Finished ****
您能为我提供这方面的指导吗
尊敬的 Swati:
您能否分享用于配置 RMII 而不是 RGMII 的步骤?
此致、
Shaunak
尊敬的 Shaunak:
根据您的建议,包括文件路径和所有,我做了相同的,项目成功地符合 RGMII 在空项目。
仅在显示 前一条消息中提到的错误后、我才将 RGMII 更改为 RMII。
尊敬的 Swati:
只需确认一次、从上面链接的上一个主题中、您是否也在 SDK 中执行了这些更改?
此致、
Shaunak
尊敬的 Shaunak:
是的、我在 SDK 中执行这些更改
尊敬的 Swati:
Im 能够重现此问题。 我将对其进行研究、并尝试找到解决方法。
此致、
Shaunak
尊敬的 Shaunak:
非常感谢 Shaunak 确定此问题、您能否尽快解决此问题、因为此错误、我的项目已暂停
尊敬的 Swati:
进行上述更改后、在同一个文件(enet_cpsw_am263x_pinmux.syscfg.js)中、您是否可以尝试再添加此更改:
在函数"getInterfaceNameList"内、对于 RMII 条件、可以按如下所示进行修改(RMII 否则为条件)。
为了确保我们在同一个页面上、我还会附上我的完整文件。
e2e.ti.com/.../enet_5F00_cpsw_5F00_am263x_5F00_pinmux.syscfg.js
这将修复构建错误。
此致、
Shaunak
尊敬的 Shaunak:
感谢您的支持、此解决方案中的问题通过 EEPROM 得到了解决、但我不想使用 EEPROM。 下面是我遇到的问题
nvoking:ARM 编译器
"c-mmp"/ti/ti_cgt_tiarmclang_3.2.2.LTS/bin/tiarmclang.exe -c -mcpu=cortex-r5 -mfloat-abi=hard -mfp=vfpv3-d16 -mlittle-endian -mthumb -i"C /ti/mcu_plus_sdk_am263x_09_02_00_55/source:-i"C:-i"C:-i:md/ti_scfg"-i"-i:-i:md/ti_web"-i:-i:-i:md"/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet --i:ti_md"/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/core --i:j"/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/core/include ---i:ti_md:md:ti_web"--c"-----i:ti_md:ti"------i:fd:md:ti_"g"--c"--/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/core/include/core /ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/lwip/lwip-stack/contrib -/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/hw_include /ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/lwip/lwip-port/include -/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet -/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/core/include/phy -/ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/utils/include -i:fd:j"/ti/ti_cgt_tiarmclang_3.2.2.LTS/include/c soc /ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/hw_include/mdio/V4 /ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/lwip/lwip-stack src /ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/lwip/lwip-port/nortos/include /ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/enet/core/lwipif/inc /ti/mcu_plus_sdk_am263x_09_02_00_55/source/networking/lwip/lwip-config/am263x/enet /workspace/AM2634_Drivers/drivers_am263x-cc_r5fss0-0_nortos_ti-arm-clang/Release/syscfg
subdir_rules.mk:46:目标"syscfg/ti_board_config.o"的配方失败
SYSCFG/ti_board_config.c:356:32:错误:使用未声明的标识符"CONFIG_I2C1"
I2C_transfer (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
^μ A
SYSCFG/ti_board_config.c:361:41:错误:使用未声明的标识符"CONFIG_I2C1"
状态= I2C_TRANSFER (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
^μ A
SYSCFG/ti_board_config.c:368:32:错误:使用未声明的标识符"CONFIG_I2C1"
I2C_transfer (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
^μ A
SYSCFG/ti_board_config.c:372:41:错误:使用未声明的标识符"CONFIG_I2C1"
状态= I2C_TRANSFER (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
^μ A
SYSCFG/ti_board_config.c:388:14:警告:调用未声明函数"EEPROM_Read";ISO C99及更高版本不支持隐式函数声明[-Wimit-function-declaration"
状态= EEPROM_Read (gEepromHandle[CONFIG_EEPROM0]、I2C_EEPROM_MAC_CTRL_OFFSET、&numMacMax、sizeof (uint8_t));
^μ A
SYSCFG/ti_board_config.c:388:26:错误:使用未声明的标识符"gEpromHandle"
状态= EEPROM_Read (gEepromHandle[CONFIG_EEPROM0]、I2C_EEPROM_MAC_CTRL_OFFSET、&numMacMax、sizeof (uint8_t));
^μ A
SYSCFG/ti_board_config.c:388:40:错误:使用未声明的标识符"CONFIG_EEPROM0"
状态= EEPROM_Read (gEepromHandle[CONFIG_EEPROM0]、I2C_EEPROM_MAC_CTRL_OFFSET、&numMacMax、sizeof (uint8_t));
^μ A
SYSCFG/ti_board_config.c:395:26:错误:使用未声明标识符"gEpromHandle"
STATUS = EEPROM_READ (gEpromHandle[CONFIG_EEPROM0]、I2C_EEPROM_MAC_DATA_OFFSET、macAddrBuf、(macAddrCnt * ENET_MAC_ADDR_LEN));
^μ A
SYSCFG/ti_board_config.c:395:40:错误:使用未声明的标识符"CONFIG_EEPROM0"
STATUS = EEPROM_READ (gEpromHandle[CONFIG_EEPROM0]、I2C_EEPROM_MAC_DATA_OFFSET、macAddrBuf、(macAddrCnt * ENET_MAC_ADDR_LEN));
^μ A
生成1个警告和8个错误。
gmake:***[syscfg/ti_board_config.o]错误1.
构建文件:"syscfg/ti_board_open_close.c"
尊敬的 Swati:
您能够以 zip 文件的形式共享您的 CCS 项目吗? EEPROM 正在存储将被分配给 MAC 端口的 MAC 地址。 EEPROM 读取连接。 这就是该工程希望您具有 EEPROM 和 I2C 实例的原因。
此致、
Shaunak
尊敬的 Shaunak:
我试图在此处共享、但不允许我在此处共享 zip 文件夹。 你能建议我任何支持邮件我想
尊敬的 Swati:
您可以拖放 zip 文件。 如果这样无效、您可以发送电子邮件至 shaunak.deshpande@ti.com。
此致、
Shaunak
尊敬的 Shaunak:
下面是我的项目的 zip 文件
尊敬的 Swati:
如前所述、EEPROM 和 I2C 需要读取端口的 MAC 地址。 如果不这样做、如何准确地计划分配 MAC 地址?
此要求是来自 syscfg 的自动生成文件(在"Generated"文件夹内)的一部分。
若要避免使用 EEPROM 和 I2C、只需以下选项:
在 syscfg 的 Enet (CPSW)中、转到"系统集成"、选择"手动输入 MAC 地址"、然后输入所需的 MAC 地址。
2.从 syscfg 禁用 EEPROM 和 I2C。
3.禁止自动生成 ti_board_config.c 和其他文件、只要引用了 I2C 或 EEPROM。 (通常不建议这样做、因为禁用了自动生成功能、所以在 syscfg 中进行的其他更改可能不可见)。
4.从禁用的自动生成的文件中,删除 I2C 和 EEPROM 的引用,并确保文件也使用您的示例进行编译(在 makefile 中添加文件名)。
在函数"EnetBoard_getMacAddrList"中、进行以下更改:
void EnetBoard_getMacAddrList(uint8_t macAddr[][ENET_MAC_ADDR_LEN], uint32_t maxMacEntries, uint32_t *pAvailMacEntries) { *pAvailMacEntries = 0; }
此外、Swati 您是否介意分享涉及基于 AM263x 的电路板的终端应用或产品是什么? 我们要查看的 AM263x 的体积是多少? 您可以将方框图和体积详细信息发送到我的电子邮件(shaunak.deshpande@ti.com)
此致、
Shaunak Deshpande.
尊敬的 Shaunak:
1.) 我想知道 MAC 存储 在 EEPROM 中的位置
2.) 以及我可以手动分配多少个 MAC 地址、因为此 评估板具有2个以太网 DP83869 PHY 和1个 DP83826
3.) 如何编辑 ti_board_config.c、因为当我编辑这个文件时、在编译代码时、我的更改消失了
休息你给我的解决方案,我会尝试和确认你。
我们计划每年发布10k 电路板 MCU 的使用量
尊敬的 Swati:
1.在 EEPROM 中预编程 TI MAC 地址
2.在 SYSCFG 中,您可以给出一个 MAC 地址列表,如下所示:
3.您需要从右侧禁用自动生成功能
我们计划每年公布10k 板 MCU 利用率 [/报价]明白了、谢谢。
此 评估板具有2个以太网 DP83869 PHY 和1个 DP83826请确保您已查看 TI 以太网专家提供的硬件原理图、以免出现任何问题。 您可以创建一个新的 E2E 以供其查看。 我是否知道这3个 PHY 是否都连接到了 CPSW?
此致、
[/quote]
Shaunak
我是否知道这3个 PHY 是否都连接到了 CPSW?
只有2个端口与 CPSW 连接。 第三个是以太网 CAT、我们在项目中没有考虑到该 CAT。
根据我的理解、MAC 应该位于 MCU 本身(硬件的一部分)中、请确认 MAC 地址是由用户或由分配的 TI (MCU 本身)
您还能解释一下为什么此功能将 I2C 用于 MDIO 和其他引脚配置
静态空 EnetBoard_setMacPort2IOExpanderCfg (void)
{
I2C_Transaction i2cTransaction;
uint8_t buffer[2];
int32_t status =-1;
I2C_Transaction_init (&i2cTransaction);
i2cTransaction .writeBuf =缓冲器;
i2cTransaction .writeCount = 2U;
i2cTransaction .targetAddress = io_expander_I2C_ADDR;
/*配置 MDIO SEL 引脚*/
/*将输出设置为高电平*/
Buffer[0]= IO_EXPANDER_PORT0_OUTPUT_REG + 1;/*端口1 */
Buffer[1]=(0x01 << 4);/*引脚4 */
I2C_transfer (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
/*将引脚设置为输出*/
Buffer[0]= IO_EXPANDER_PORT0_DIR_REG + 1;
Buffer[1]=~(0x1 << 4);
状态= I2C_TRANSFER (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
DebugP_ASSERT (STATUS = I2C_STS_SUCCESS);
/*配置 RGMII2 SEL 引脚*/
/*将输出设置为低电平*/
Buffer[0]= IO_expander_PORT0_OUTPUT_REG + 0;/*端口0 */
Buffer[1]=~(0x03 << 2);/*引脚2和3 */
I2C_transfer (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
/*将引脚设置为输出*/
Buffer[0]= IO_EXPANDER_PORT0_DIR_REG + 0;
Buffer[1]=~(0x3 << 2);
状态= I2C_TRANSFER (I2C_getHandle (CONFIG_I2C1)、&i2cTransaction);
DebugP_ASSERT (STATUS = I2C_STS_SUCCESS);
}
尊敬的 Swati:
EEPROM 将包含 TI MAC 地址。 用户可以通过 SYSCFG 或写入 EEPROM 本身来覆盖它并使用自己的 MAC 地址。 (为了进行快速测试、我建议使用 syscfg 方法、出于量产目的、可能无法为每个电路板单独修改 syscfg。)
EEPROM 句柄使用 I2C0来获取可用 MAC 地址列表( 有关更多信息、请参阅 ti_board_open_close.h)
I2C1实例用于配置 MDIO SEL 引脚、将引脚设置为输出(请参阅 EnetBoard_setMacPort2IOExpanderCfg () (如需更多信息、请参阅 Generates/ti_board_config.c)
此致、
Shaunak
尊敬的 Shaunak:
根据您的确认、可以得出结论:MAC 地址不属于 MCU (AM2634)、这与 网络 IC 的情况相同
尊敬的 Swati:
MAC 地址是 MCU 的一部分。
1.一个 MAC 地址存储在 eFuse 寄存器中、不能被覆盖。
2. MAC 地址列表也存储在运行时读取的 EEPROM 中。
3.如果您不希望使用这些 MAC 地址、可以手动覆盖 MAC 地址的 EEPROM 列表、或使用 syscfg 提供自定义 MAC 地址。
此致、
Shaunak
尊敬的 Shaunak Deshpande:
1.能不能帮我读 eFuse 寄存器数据、因为我们的计划是在应用中使用硬件 MAC 地址
2.另外、您还可以提供详细信息、例如评估板中有3个以太网端口、因此默认情况下 eFuse 中存储了多少个 MAC 地址
尊敬的 Swati:
TI 驱动程序已从 eFuse 寄存器中读取 MAC 地址。 电子保险丝仅包含1个 MAC 地址。 其余存储在 EEPROM 中。
例如、如果启用了 MAC 端口1和 MAC 端口2、则从电子保险丝读取1个 MAC 地址、从 EEPROM 读取另一个 MAC 地址。
此致、
Shaunak
尊敬的 Shaunak:
1.) 我通过 syscnfg 配置了2个 MAC 地址、并且我正在调试中获取相同的 MAC 地址(这意味着从电子保险丝读取的 MAC 会被 sysconfg 生成的 MAC 覆盖)
2.) 如果我要分配单个 MAC、在 syscnfg 中得到无效的 MAC 地址列表
尊敬的 Swati:
1.您所附的屏幕截图中的 MAC 是不同的。 第一个以 f2结束、第二个以 E3结束。 我将在内部与团队一起检查一次。
是的、SYSCFG 目前不支持只提供一个 MAC。
此致、
Shaunak
尊敬的 Swati:
要分配您的 MAC 地址、您可以覆盖定制板配置文件中的 MAC。 在 syscfg (Enet CPSW)中选择定制板时、必须编写定制 board.c 文件。 不会生成 ti_board_config.c。 您可以首先生成此文件(将板标记为非定制板)。 查看该文件中的函数、将所需的函数复制粘贴到您的定制电路板配置文件中。
在该文件中、函数" EnetBoard_getMacAddrList "可用于返回您的 MAC 地址。
此致、
Shaunak