硬汉嵌入式论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: eric2013
收起左侧

[ThreadX全家桶] ThreadX NetXDUO网络协议栈教程更新记录贴,前11章已经发布(2022-01-03)

  [复制链接]

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-17 16:42:37 | 显示全部楼层
github上下载的源码(https://github.com/eclipse-threadx/netxduo)里面没有nx_stm32_eth_driver.c 和nx_stm32_eth_driver.h,这两个文件从哪里来的啊?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115433
QQ
 楼主| 发表于 2024-10-18 10:21:25 | 显示全部楼层
hmjames 发表于 2024-10-17 16:42
github上下载的源码(https://github.com/eclipse-threadx/netxduo)里面没有nx_stm32_eth_driver.c 和nx_s ...

这个是他们早期分享的一个软件包里面的,现在Github上变化太大了,不好找了。

你也可以使用CubeMX生成。
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-18 11:09:06 | 显示全部楼层
eric2013 发表于 2024-10-18 10:21
这个是他们早期分享的一个软件包里面的,现在Github上变化太大了,不好找了。

你也可以使用CubeMX生成 ...

有V7开发板的CubeMX模板吗?感觉自己配起来太复杂了
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-18 11:10:53 | 显示全部楼层
ST HAL V1.11.1编译出错:
compiling nx_arp_hardware_address_find.c...
../../NetXDUO/ports/cortex_m7/nx_stm32_eth_driver.c(2348): warning: implicit declaration of function 'HAL_ETH_GetRxDataBuffer' is invalid in C99 [-Wimplicit-function-declaration]
    while (HAL_ETH_GetRxDataBuffer(&heth, RxBuff) == HAL_OK)
           ^
../../NetXDUO/ports/cortex_m7/nx_stm32_eth_driver.c(2350): warning: implicit declaration of function 'HAL_ETH_GetRxDataLength' is invalid in C99 [-Wimplicit-function-declaration]
        HAL_ETH_GetRxDataLength(&heth, &framelength);
        ^
../../NetXDUO/ports/cortex_m7/nx_stm32_eth_driver.c(2353): error: no member named 'FirstAppDesc' in 'ETH_RxDescListTypeDef'
        uint32_t FirstAppDesc = dmarxdesclist->FirstAppDesc;
                                ~~~~~~~~~~~~~  ^
../../NetXDUO/ports/cortex_m7/nx_stm32_eth_driver.c(2367): warning: implicit declaration of function 'HAL_ETH_DescAssignMemory' is invalid in C99 [-Wimplicit-function-declaration]
            HAL_ETH_DescAssignMemory(&heth, FirstAppDesc, packet_ptr -> nx_packet_prepend_ptr, NULL);
            ^
../../NetXDUO/ports/cortex_m7/nx_stm32_eth_driver.c(2371): warning: implicit declaration of function 'HAL_ETH_BuildRxDescriptors' is invalid in C99 [-Wimplicit-function-declaration]
            HAL_ETH_BuildRxDescriptors(&heth);
            ^
../../NetXDUO/ports/cortex_m7/nx_stm32_eth_driver.c(2378): warning: implicit declaration of function 'HAL_ETH_BuildRxDescriptors' is invalid in C99 [-Wimplicit-function-declaration]
            HAL_ETH_BuildRxDescriptors(&heth);
            ^
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115433
QQ
 楼主| 发表于 2024-10-19 09:52:05 | 显示全部楼层
hmjames 发表于 2024-10-18 11:09
有V7开发板的CubeMX模板吗?感觉自己配起来太复杂了

我们V7的ThreadX没有使用CubeMX配置,你下载AZURE H7软件包,里面的例子都是CubeMX创建的,你可以对比看下
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-22 14:05:33 | 显示全部楼层
UDP数据包最大可以发多大啊?我在V7开发板上试了UDP server的例子,发超过10次1292个字节数据包就会进入“Enter HardFault_Handler, System Halt.”
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-22 16:43:00 | 显示全部楼层
可以同时绑定两个UDP端口收数据的吧?那样的话只要创建两个socket吧?IP和pool实例可以用同一个吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115433
QQ
 楼主| 发表于 2024-10-23 10:34:15 | 显示全部楼层
hmjames 发表于 2024-10-22 14:05
UDP数据包最大可以发多大啊?我在V7开发板上试了UDP server的例子,发超过10次1292个字节数据包就会进入“E ...

估计是发送姿势不对,把对应的动态内存申请完了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115433
QQ
 楼主| 发表于 2024-10-23 10:34:49 | 显示全部楼层
hmjames 发表于 2024-10-22 16:43
可以同时绑定两个UDP端口收数据的吧?那样的话只要创建两个socket吧?IP和pool实例可以用同一个吗?

两个socket就可以
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-23 10:59:33 | 显示全部楼层
eric2013 发表于 2024-10-23 10:34
估计是发送姿势不对,把对应的动态内存申请完了。

我把Packet_Size改为1536就可以了
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-23 11:01:01 | 显示全部楼层

一直卡在nx_udp_socket_receive函数不往下走
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115433
QQ
 楼主| 发表于 2024-10-24 09:54:54 | 显示全部楼层
hmjames 发表于 2024-10-23 11:01
一直卡在nx_udp_socket_receive函数不往下走

初始完成后,可以再创建一个任务,一个任务里面执行一个。
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-10-24 10:03:45 | 显示全部楼层
eric2013 发表于 2024-10-24 09:54
初始完成后,可以再创建一个任务,一个任务里面执行一个。

我把收到数据频率较低的那个端口的socket设置成TX_NO_WAIT,另外一个socket设置成TX_WAIT_FOREVER,频率低的先收,这样没有卡住了。另外nx_udp_socket_create的queue_maximum好像也有影响,我要是设得小一些,收几个包之后又会卡在nx_udp_socket_receive()。不知道是什么原因。
另外你说的再创建一个任务是指再创建一个threadX的task?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115433
QQ
 楼主| 发表于 2024-10-25 09:44:17 | 显示全部楼层
hmjames 发表于 2024-10-24 10:03
我把收到数据频率较低的那个端口的socket设置成TX_NO_WAIT,另外一个socket设置成TX_WAIT_FOREVER,频率低 ...

对,再开一个任务处理UDP Socket。
回复

使用道具 举报

1

主题

26

回帖

29

积分

新手上路

积分
29
发表于 2024-11-8 10:23:14 | 显示全部楼层
eric2013 发表于 2024-10-25 09:44
对,再开一个任务处理UDP Socket。

我开了两个线程分别接收两个端口的数据,这两个线程怎么调度啊?我发现两个线程起来后,一直在其中一个线程里面跑,没有再跑进另外一个线程,这个线程的优先级还是高的
回复

使用道具 举报

48

主题

371

回帖

515

积分

金牌会员

积分
515
发表于 2024-11-8 11:17:44 | 显示全部楼层
hmjames 发表于 2024-10-17 16:42
github上下载的源码(https://github.com/eclipse-threadx/netxduo)里面没有nx_stm32_eth_driver.c 和nx_s ...

你用这个代码仓库:
https://github.com/STMicroelectronics/x-cube-azrtos-h7.git
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-3-25 11:19:10 | 显示全部楼层
哥把你的例子下到了stm32h743里,但是ping不通,请问有哪些原因,程序没有改,网口也选的是对的常亮绿灯
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115433
QQ
 楼主| 发表于 2025-3-26 09:50:06 | 显示全部楼层
smile1216 发表于 2025-3-25 11:19
哥把你的例子下到了stm32h743里,但是ping不通,请问有哪些原因,程序没有改,网口也选的是对的常亮绿灯

是我们的V7开发板吗,如果是V7开发板,注意使用的网口和跳线帽,这个在这个帖子楼主位的文档里面有操作说明
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 15:16 , Processed in 0.368845 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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