硬汉嵌入式论坛

 找回密码
 立即注册
查看: 210|回复: 8
收起左侧

[CMSIS-RTOS简易教程] 移植V7Nextduo到瑞萨RA6M5不能ping

[复制链接]

3

主题

30

回帖

39

积分

新手上路

积分
39
发表于 2024-5-24 14:12:59 | 显示全部楼层 |阅读模式

    /* 初始化NetX */
    nx_system_initialize();

    /* 创建内存池 */
    status =  nx_packet_pool_create(&pool_0,                                       /* 内存池控制块 */
                                     "NetX Main Packet Pool",                      /* 内存池名 */
                                     1536,                                         /* 内存池每个数据包大小,单位字节
                                                                                      此值必须至少为 40 个字节,并且还必须可以被 4 整除 */
                                                                         (ULONG*)(((int)packet_pool_area + 15) & ~15) ,/* 内存池地址,此地址必须ULONG对齐 */
                                     NX_PACKET_POOL_SIZE);                         /* 内存池大小 */                  

    /* 检测创建是否失败 */
    if (status) error_counter++;

    /* 例化IP */
    status = nx_ip_create(&ip_0,                                                   /* IP实例控制块 */                                    
                            "NetX IP Instance 0",                                  /* IP实例名 */     
                            IP_ADDRESS(IP_ADDR0, IP_ADDR1, IP_ADDR2, IP_ADDR3),    /* IP地址 */
                            0xFFFFFF00UL,                                          /* 子网掩码 */
                            &pool_0,                                               /* 内存池 */
                                                        nx_driver_stm32h7xx,                                   /* 网卡驱动 */
                            (UCHAR*)AppTaskNetXStk,                                /* IP任务栈地址 */
                            sizeof(AppTaskNetXStk),                                /* IP任务栈大小,单位字节 */
                            APP_CFG_TASK_NETX_PRIO);                               /* IP任务优先级 */


    /* 检测创建是否失败 */
    if (status) error_counter++;

    /* 使能ARP,并提供ARP缓存 */
    status =  nx_arp_enable(&ip_0,                     /* IP实例控制块 */
                                                        (void *)arp_space_area,    /* ARP缓存地址 */
                                                        sizeof(arp_space_area));   /* 每个 ARP 条目均为 52 个字节,因此,ARP 条目总数是52字节整数倍 */

    /* 使能fragment */   
    status = nx_ip_fragment_enable(&ip_0);

    /* 检测使能成功 */
    if (status) error_counter++;

    /* 使能TCP */
    status =  nx_tcp_enable(&ip_0);

    /* 检测使能成功 */
    if (status) error_counter++;

    /* 使能UDP  */
    status =  nx_udp_enable(&ip_0);

    /* 检测使能成功 */
    if (status) error_counter++;

    /* 使能ICMP */
    status =  nx_icmp_enable(&ip_0);

    /* 检测使能成功 */
    if (status) error_counter++;   

    /* NETX初始化完毕后,重新设置优先级 */
    tx_thread_priority_change(netx_thread_ptr, APP_CFG_TASK_NETX_PRIO1, &old_priority);
    tx_thread_priority_change(&AppTaskNetXProTCB, APP_CFG_TASK_NetXPro_PRIO1, &old_priority);

   参照上述V7的代码移植到瑞萨RA6M5下,能够LINK成功PHY,但是不能ping通,请教可能是哪方面出了问题?
   已经分析如下:
1.PHY能正常复位,能读取ID和设置BCR和读取BSR;
2.设置的是100M速率,全双工;
2.网络抓包没有发现ARP报文发出来;

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2024-5-25 08:16:16 | 显示全部楼层
瑞萨的话,使用他们自己的e2 Studio可以直接创建NetXDUO例子,楼主有测试过没
回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2024-5-25 21:40:12 | 显示全部楼层
eric2013 发表于 2024-5-25 08:16
瑞萨的话,使用他们自己的e2 Studio可以直接创建NetXDUO例子,楼主有测试过没

用fsp生成的demo编译没有问题,目前phy 8720 能够Link up 状态,但就是不能ping
目前是按照V7的操作流程和方法抑制的思路,还在思迅如何解决
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2024-5-26 09:46:50 | 显示全部楼层
dykonka 发表于 2024-5-25 21:40
用fsp生成的demo编译没有问题,目前phy 8720 能够Link up 状态,但就是不能ping
目前是按照V7的操作流程 ...

除了link up。

100M,全双工能正常识别出来不,能的话,那估计是你的驱动这块还有点问题。
回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2024-5-26 11:24:40 | 显示全部楼层
eric2013 发表于 2024-5-26 09:46
除了link up。

100M,全双工能正常识别出来不,能的话,那估计是你的驱动这块还有点问题。

1.100M full 设置和读取都没问题,
2.通过phy8720地址31识别出来也是100M全双工full,
3.目前发现数据包没有发出来,还在找为何没有发出来,一直停在这里中断发数据请求
1716693770467.png
回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2024-5-26 11:45:16 | 显示全部楼层
eric2013 发表于 2024-5-26 09:46
除了link up。

100M,全双工能正常识别出来不,能的话,那估计是你的驱动这块还有点问题。

                uint8_t * p_buffer_current = NULL;
                uint8_t * p_buffer_last    = NULL;
               
p_buffer_xx 指针值进行比较没有看明白?是对发送缓存是否完成指定数目?

一直停在这里

一直停在这里
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2024-5-27 01:29:58 | 显示全部楼层
dykonka 发表于 2024-5-26 11:45
uint8_t * p_buffer_current = NULL;
                uint8_t * p_buffer_last    = N ...

给他们官方反馈过没,可能接口驱动实现有点问题。
回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 3 天前 | 显示全部楼层
eric2013 发表于 2024-5-27 01:29
给他们官方反馈过没,可能接口驱动实现有点问题。

用原厂开发板的EK-RA6M5(LQFP176封装)飞线到我的PHY-8720测试ping没有问题,但是在自己的板子(LQFP100封装)不行,现在很绝望,是同样的程序移植,只是改了个芯片型号而已!
ping测试如下:
回复

使用道具 举报

3

主题

30

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 3 天前 | 显示全部楼层
ping没有问题
ss.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-18 02:01 , Processed in 0.283998 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表