硬汉嵌入式论坛

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

[ThreadX全家桶] 哪位在stm32f407上把netx duo移植成功了指点我一下,我的无法ping通,谢谢

[复制链接]

18

主题

288

回帖

342

积分

高级会员

积分
342
发表于 2020-10-7 21:10:20 | 显示全部楼层 |阅读模式
如题,这几天折腾了下netx duo,因为想着netx和netx duo差不多,就直接移植netx duo了,没想到最后一直ping不通,DHCP也只能收到一包数据,后面就没有了,现象如下:

0、参考例子:Azure_RTOS_6.0.2_STM32F746G-DISCO_IAR_Samples_2020_08_18.zip   下的ping例子
1、静态ip时,无法ping通,wireshark抓不到任何相关数据
2、DHCP时,wireshark可以且只能收到一包板子发送的数据,后面就再也收不到了,即使我循环thread0也不行
OK.png

分析数据发现,是不是我发送的数据的crc不对啊?请高人指点
22.png

原因分析:
1、我的phy的初始化,读写等均正常
2、eth初始化也是正常的
3、isr中断正常,能收到数据
4、能进入发送case
  1.     case NX_LINK_ARP_SEND:
  2.     case NX_LINK_ARP_RESPONSE_SEND:
  3.     case NX_LINK_PACKET_BROADCAST:
  4.     case NX_LINK_RARP_SEND:
  5.     case NX_LINK_PACKET_SEND:
  6.     {

  7.         /* Process packet send requests.  */
  8.         _nx_driver_packet_send(driver_req_ptr);
  9.         break;
  10.     }
复制代码


nx_driver_stm32f746.c驱动注意的修改点:
修改一:新增这个函数,初始化io,时钟等
  1. void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;

  4.     /* Ethernett MSP init: RMII Mode
  5.     ETH_MDIO -------------------------> PA2
  6.     ETH_MDC --------------------------> PC1
  7.     /ETH_RMII_REF_CLK---> PA1
  8.     /ETH_RMII_CRS_DV ----> PA7
  9.     /ETH_RMII_RXD0 -------> PC4
  10.     /ETH_RMII_RXD1 -------> PC5
  11.     /ETH_RMII_TX_EN -----> PB11
  12.     /ETH_RMII_TXD0 -------> PB12
  13.     /ETH_RMII_TXD1 -------> PG14
  14.     */

  15.     /* Enable GPIOs clocks */
  16.     __HAL_RCC_GPIOA_CLK_ENABLE();
  17.     __HAL_RCC_GPIOB_CLK_ENABLE();
  18.     __HAL_RCC_GPIOC_CLK_ENABLE();
  19.     __HAL_RCC_GPIOG_CLK_ENABLE();

  20.     GPIO_InitStructure.Speed= GPIO_SPEED_FREQ_VERY_HIGH;
  21.     GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
  22.     GPIO_InitStructure.Pull = GPIO_NOPULL ;
  23.     GPIO_InitStructure.Alternate = GPIO_AF11_ETH;

  24.     /* Configure PA1, PA2 , PA7 */
  25.     GPIO_InitStructure.Pin =  GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7;
  26.     HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);

  27.     /* Configure PB11, PB12 */
  28.     GPIO_InitStructure.Pin = GPIO_PIN_11 | GPIO_PIN_12;
  29.     HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);

  30.     /* Configure PC1, PC4 and PC5 */
  31.     GPIO_InitStructure.Pin = GPIO_PIN_1 | GPIO_PIN_4 | GPIO_PIN_5;
  32.     HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);

  33.     /* Configure PG14 */
  34.     GPIO_InitStructure.Pin = GPIO_PIN_14;
  35.     HAL_GPIO_Init(GPIOG, &GPIO_InitStructure);

  36.     /* Enable the Ethernet global Interrupt */
  37.     HAL_NVIC_SetPriority(ETH_IRQn, ETH_PreemptPriority, ETH_SubPriority);
  38.     HAL_NVIC_EnableIRQ(ETH_IRQn);

  39.     /* Enable Ethernet clocks */
  40.     __HAL_RCC_ETHMAC_CLK_ENABLE();
  41.     __HAL_RCC_ETHMACTX_CLK_ENABLE();
  42.     __HAL_RCC_ETHMACRX_CLK_ENABLE();
  43. }
复制代码


修改二:屏蔽了下面4个函数,因为407没有cache,所以直接屏蔽了
  1. SCB_CleanInvalidateDCache_by_Addr()
  2. SCB_CleanDCache_by_Addr()
  3. SCB_CleanDCache_by_Addr()
  4. SCB_InvalidateDCache_by_Addr()
复制代码


修改三:主要是phy的地址,寄存器等,这个已经验证是没有问题的了


想到netx duo和netx不同点是支持ipv6,后来我把ipv6功能禁止掉(定义宏:#define NX_DISABLE_IPV6)后,效果和没禁止前一样。

请硬汉哥或其他高人指点,我这哪里出问题了呢,谢谢先

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107643
QQ
发表于 2020-10-8 08:30:41 | 显示全部楼层
后面我发布后,参考我的吧。
回复

使用道具 举报

4

主题

25

回帖

42

积分

新手上路

积分
42
QQ
发表于 2020-10-8 09:07:43 | 显示全部楼层
你应该把ST的硬件CRC检验开了,检验后硬件把CRC码删除了,给到NETX的数据是没的CRC码。  在配置函数前  HAL_ETH_SetMACConfig 可以做下改动, 不让硬件删除CRC码。
回复

使用道具 举报

3

主题

1258

回帖

1267

积分

至尊会员

积分
1267
发表于 2020-10-8 10:59:55 | 显示全部楼层
估计是楼上所说的原因,硬件CRC
回复

使用道具 举报

6

主题

646

回帖

664

积分

金牌会员

积分
664
QQ
发表于 2020-10-8 16:25:27 | 显示全部楼层
我记得我上传过107和407移植netx的,你可以试试
回复

使用道具 举报

18

主题

288

回帖

342

积分

高级会员

积分
342
 楼主| 发表于 2020-10-8 16:58:59 | 显示全部楼层
eric2013 发表于 2020-10-8 08:30
后面我发布后,参考我的吧。

墙裂期待中、、、、、、
回复

使用道具 举报

18

主题

288

回帖

342

积分

高级会员

积分
342
 楼主| 发表于 2020-10-8 18:18:17 | 显示全部楼层
本帖最后由 木兰花 于 2020-10-9 13:52 编辑
yklstudent 发表于 2020-10-8 16:25
我记得我上传过107和407移植netx的,你可以试试

我看看啊,谢谢先
前期参考了另一个坛友的,但是他把接收发送缓存都放到了外面的ram,改动太大,我没有外置ram



回复

使用道具 举报

18

主题

288

回帖

342

积分

高级会员

积分
342
 楼主| 发表于 2020-10-8 21:03:00 | 显示全部楼层
blmy1861 发表于 2020-10-8 09:07
你应该把ST的硬件CRC检验开了,检验后硬件把CRC码删除了,给到NETX的数据是没的CRC码。  在配置函数前  HAL ...

已经找到原因,不是crc的问题,是我下面2个宏过小造成的,改大后就可以了【原来是5和5】
  1. #ifndef NX_DRIVER_TX_DESCRIPTORS
  2. #define NX_DRIVER_TX_DESCRIPTORS   128
  3. #endif

  4. #ifndef NX_DRIVER_RX_DESCRIPTORS
  5. #define NX_DRIVER_RX_DESCRIPTORS   16
  6. #endif
复制代码
回复

使用道具 举报

18

主题

288

回帖

342

积分

高级会员

积分
342
 楼主| 发表于 2020-10-8 21:03:17 | 显示全部楼层
morning_enr6U 发表于 2020-10-8 10:59
估计是楼上所说的原因,硬件CRC

已经找到原因,不是crc的问题,是我下面2个宏过小造成的,改大后就可以了【原来是5和5】
  1. #ifndef NX_DRIVER_TX_DESCRIPTORS
  2. #define NX_DRIVER_TX_DESCRIPTORS   128
  3. #endif

  4. #ifndef NX_DRIVER_RX_DESCRIPTORS
  5. #define NX_DRIVER_RX_DESCRIPTORS   16
  6. #endif
复制代码
回复

使用道具 举报

18

主题

288

回帖

342

积分

高级会员

积分
342
 楼主| 发表于 2020-10-8 21:05:43 | 显示全部楼层
yklstudent 发表于 2020-10-8 16:25
我记得我上传过107和407移植netx的,你可以试试

我和你的代码比较后发现没什么区别,唯一的地方是下面的2个宏的值不一样,后来我改大后就可以ping通了,由于ram不够我看着这2个宏占地较大就改为了5和5,想不到折腾了我1天才找到原因

  1. #ifndef NX_DRIVER_TX_DESCRIPTORS
  2. #define NX_DRIVER_TX_DESCRIPTORS   128
  3. #endif

  4. #ifndef NX_DRIVER_RX_DESCRIPTORS
  5. #define NX_DRIVER_RX_DESCRIPTORS   16
  6. #endif
复制代码


回复

使用道具 举报

18

主题

288

回帖

342

积分

高级会员

积分
342
 楼主| 发表于 2020-10-8 21:13:42 | 显示全部楼层
多谢楼上各位,下面我把我的驱动上传上来,供需要的人参考,其实没怎么改,就加了一个void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)初始化函数,f4时去掉cache相关的4个函数即可,其他都不用改
注:我把nx_driver_stm32fxxx_low_level.s稍微修改了下,这样f4和f7就用一个s文件了

888888.png

nx_driver_stm32f4xx.c (133.45 KB, 下载次数: 53)
nx_driver_stm32f4xx.h (8.3 KB, 下载次数: 41)
nx_driver_stm32f7xx.c (133.37 KB, 下载次数: 27)
nx_driver_stm32f7xx.h (8.3 KB, 下载次数: 20)
nx_driver_stm32fxxx_low_level.s (5.35 KB, 下载次数: 38)


回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2021-1-29 10:23:23 | 显示全部楼层
木兰花 发表于 2020-10-8 21:13
多谢楼上各位,下面我把我的驱动上传上来,供需要的人参考,其实没怎么改,就加了一个void HAL_ETH_MspInit ...

你好,请教楼主个问题,有没有遇到在初始化PHY的底层驱动时(stm32f4xx_hal_eth.c)时,用到了HAL_Delay、HAL_GetTick等与Tick相关的函数时,跑Debug时是正常的,一旦直接下载到板子上后就卡在那个地方过不去。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 00:56 , Processed in 0.338008 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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