现在我使用的是 DSP C6748,创龙 UDP开发例程,
但是例程中的 MAC 地址,注释上说是依据芯片ID生成的;
为什么我改掉后,UDP就无法正常通信了?
请问MAC 地址是否可以修改,如何修改?
具体代码示例如下:
重点是该函数
void EMAC_getConfig(unsigned char *pMacAddr)
现在我使用的是 DSP C6748,UDP开发例程,但是例程中的 MAC 地址,注释上说是依据芯片ID生成的;
为什么我改掉后,UDP就无法正常通信了?
请问MAC 地址是否可以修改,如何修改?
/****************************************************************************/ /* */ /* NDK UDP 通信 */ /* */ /* 2014年09月22日 */ /* */ /****************************************************************************/ /* * 修改历史 * * 2015年06月25日 MAC 地址改为根据芯片 ID 生成 * IP 地址从串口输出 * */ // 组件 #include <ti/sysbios/BIOS.h> #include <ti/sysbios/family/c64p/Cache.h> // XDC #include <xdc/std.h> // 库 #include "TL6748.h" #include "uartStdio.h" // NDK #include <netmain.h> // C 语言函数库 #include <stdio.h> /****************************************************************************/ /* */ /* 全局变量 */ /* */ /****************************************************************************/ // MAC 地址 unsigned char bMacAddr[8]; // 连接状态 char *LinkStr[] = {"No Link", "10Mb/s Half Duplex", "10Mb/s Full Duplex", "100Mb/s Half Duplex", "100Mb/s Full Duplex"}; /****************************************************************************/ /* */ /* 回调函数 EMAC 初始化 */ /* */ /****************************************************************************/ // 这个函数被驱动调用 不要修改函数名 void EMAC_initialize() { // 管脚复用配置 // 使能 MII 模式 EMACPinMuxSetup(); } /****************************************************************************/ /* */ /* 回调函数 获取 MAC 地址 */ /* */ /****************************************************************************/ // 这个函数被驱动调用 不要修改函数名 void EMAC_getConfig(unsigned char *pMacAddr) { // 根据芯片 ID 生成 MAC 地址 bMacAddr[0] = 0x00; bMacAddr[1] = (*(volatile unsigned int *)(0x01C14008) & 0x0000FF00) >> 8; bMacAddr[2] = (*(volatile unsigned int *)(0x01C14008) & 0x000000FF) >> 0; bMacAddr[3] = (*(volatile unsigned int *)(0x01C1400C) & 0x0000FF00) >> 8; bMacAddr[4] = (*(volatile unsigned int *)(0x01C1400C) & 0x000000FF) >> 0; bMacAddr[5] = (*(volatile unsigned int *)(0x01C14010) & 0x000000FF) >> 0; UARTprintf("Using MAC Address: %02X-%02X-%02X-%02X-%02X-%02X\n", bMacAddr[0], bMacAddr[1], bMacAddr[2], bMacAddr[3], bMacAddr[4], bMacAddr[5]); // 传递 MAC 地址 mmCopy(pMacAddr, bMacAddr, 6); } /****************************************************************************/ /* */ /* 回调函数 获取连接状态 */ /* */ /****************************************************************************/ // 这个函数被驱动调用 不要修改函数名 void EMAC_linkStatus(unsigned int phy, unsigned int linkStatus) { UARTprintf("Link Status: %s on PHY %d\n",LinkStr[linkStatus],phy); } /****************************************************************************/ /* */ /* 回调函数 获取 IP 地址 */ /* */ /****************************************************************************/ void NetGetIPAddr(IPN IPAddr, unsigned int IfIdx, unsigned int fAdd) { if(fAdd) { UARTprintf("Network Added: ", IfIdx); } else { UARTprintf("Network Removed: ", IfIdx); } char StrIP[16]; NtIPN2Str(IPAddr, StrIP); UARTprintf("%s\r\n", StrIP); } /****************************************************************************/ /* */ /* 缓存配置 */ /* */ /****************************************************************************/ void CacheInit() { Cache_Size cacheSize; cacheSize.l1pSize = Cache_L1Size_32K; cacheSize.l1dSize = Cache_L1Size_32K; cacheSize.l2Size = Cache_L2Size_256K; Cache_setSize(&cacheSize); } /****************************************************************************/ /* */ /* 主函数 */ /* */ /****************************************************************************/ int main() { // 串口终端初始化 UARTStdioInit(); // 启动信息 UARTPuts("\r\n\r\nTronlong DSP TMS320C6748 NDK Application ......\r\n", -2); // 启动 SYS/BIOS 系统 BIOS_start(); }