Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
tcp
RISC-V_milk-v_CV1800B
milk-v duo RT-Thread 网络示例
发布于 2024-08-18 17:10:37 浏览:186
订阅该版
[tocm] milk-v duo 系列开发板芯片 CV180X/SG002X 内部自带Ethernet MAC 和 PHY,支持 10/100Mbps,RT-Thread 实时操作系统已支持以太网驱动。 驱动位于 `bsp/cvitek/drivers/drv_eth.c`,大核上可通过实现网络通信。 ## 驱动使能 RT-Thread 下 bsp/cvitek/cv18xx_risc-v 默认未开启网络驱动,需要手动开启。在 bsp/cvitek/cv18xx_risc-v 下使用 `menuconfig` 配置。 ```shell $ cd bsp/cvitek/cv18xx_risc-v $ scons menuconfig General Drivers Configuration ---> [*] Enable Ethernet ``` 在最新 master 上代码可能需要手工安装 kconfiglib 工具,请使用 `pip3 install kconfiglib` 安装。 完成配置后,使用 `scons` 编译,即可看到 `bsp/cvitek/output/milkv-duo256m/boot.sd` 文件,该文件为 milkv-duo256 大核 RISC-V 内核文件。 将该文件复制至 SD 卡中,插上网线,上电即可看到如下 ```shell heap: [0x802baf38 - 0x81200000] \ | / - RT - Thread Operating System / | \ 5.2.0 build Aug 18 2024 11:48:05 2006 - 2024 Copyright by RT-Thread team lwIP-2.1.2 initialized! connect phy id: 0x435649 CVITEK,CV181X waiting for PHY auto negotiation to complete... auto negotiation Done! Speed: 100M, duplex: full ``` ## 网络测试 1. 通过 `ifconfig` 在 `msh` 命令中查看网络状态。 ```shell msh />ifconfig network interface device: e0 (Default) MTU: 1500 MAC: f2 42 9f a5 0a 72 FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP ip address: 192.168.188.39 gw address: 192.168.188.1 net mask : 255.255.255.0 dns server #0: 192.168.188.1 dns server #1: 0.0.0.0 ``` 可以看到已经获取到 IP 地址。 2. ping 测试 在 msh 命令中输入 ping 测试网络是否正常。 ```shell msh />ping 192.168.188.20 ping: not found specified netif, using default netdev e0. 60 bytes from 192.168.188.20 icmp_seq=0 ttl=128 time=2 ms 60 bytes from 192.168.188.20 icmp_seq=1 ttl=128 time=0 ms 60 bytes from 192.168.188.20 icmp_seq=2 ttl=128 time=0 ms 60 bytes from 192.168.188.20 icmp_seq=3 ttl=128 time=0 ms ``` 192.168.188.20 为 windows 电脑的 IP 地址,测试之前可先关闭 windows 的防火墙,否则可能无法 ping 通电脑。 ![defender.png](https://oss-club.rt-thread.org/uploads/20240818/4d304c841c4b78b556ae0dd1d5814ca7.png.webp) ## 网络示例运行 RT-Thread 根目录下 examples/network 目录下,官方提供了网络示例,可实现 TCP、UDP 等网络通信。 ```shell ├── chargen.c ├── tcpclient.c ├── tcp_client.py ├── tcpsendpacket.c ├── tcpserver.c ├── tcp_server.py ├── udpclient.c └── udpserver.c ``` 同时还提供了 tcp_server.py、tcp_client.py、等 python 脚本,辅助测试。 ### 编译 1. 将 examples/network 目录下的示例程序 复制至 bsp/cvitek/cv18xx_risc-v/applications 下。 2. 示例程序默认线程栈较小(1024),运行时候会出现栈溢出,需要手动修改。修改 `tcpclient.c` 中 `tcpclient_test()` 函数的线程栈大小为 4096 以上, 其他示例程序同理。 3. 使用 `scons` 编译,即可看到 `bsp/cvitek/output/milkv-duo256m/boot.sd` 文件,该文件为 milkv-duo256 大核 RISC-V 内核文件,更新至 SD 卡中,插上网线,上电在 msh 命令中可看到如下命令列表。 ```shell msh />help RT-Thread shell commands: tcpclient - Start a tcp client. Help: tcpclient --help tcpserver - Start a tcp server. Help: tcpserver --help udpclient - Start a udp client. Help: udpclient --help udpserver - Start a udp server. Help: udpserver --help ``` 可在指定命令后输入 `--help` 查看帮助。 ```shell msh />tcpclient --help Usage: tcpclient -h
-p
tcpclient --stop tcpclient --help Miscellaneous: -h Specify host address -p Specify the host port number --stop Stop tcpclient program --help Print help information msh /> ``` ## tcpclient 测试 1. 在电脑上创建一个 tcp_server ![tcpserver_create.png](https://oss-club.rt-thread.org/uploads/20240818/18f08170769d6fb2ed807a95a2f6fe94.png) 端口号为 6001 ,可手工修改指定。完成后启动服务器。 ![tcpserver_start.png](https://oss-club.rt-thread.org/uploads/20240818/946a52218a78498b0a9a783b5770ad5b.png) 2. 在 milkv-duo256m 上运行 tcpclient 测试 ```shell msh />tcpclient -h 192.168.188.20 -p 6001 ``` IP 为电脑的 IP 地址,端口号为 6001,与创建 server 端口一致。 连接成功后,电脑上会显示该 client 的 IP 地址和端口号。 ![tcpserver_connect.png](https://oss-club.rt-thread.org/uploads/20240818/26118034091e0e349398ea4000660bc2.png) 3. 设备接受数据 在 Windows 上输入数据, milkv-duo256m 会收到数据。 ![tcpserver_data.png](https://oss-club.rt-thread.org/uploads/20240818/854f7c94b6cf5b39878876d2db597543.png) ```shell msh />tcpclient -h 192.168.188.20 -p 6001 msh />[D/TCP] Received data = hello world! ``` 4. 停止 tcpclient ```shell msh />tcpclient --stop ``` ## tcpserver 测试 1. 通过 tcpserver --help 获取帮助信息。 ```shell msh />tcpserver [I/TCP] Please check the command you entered! Usage: tcpserver -p
tcpserver --stop tcpserver --help Miscellaneous: -p Specify the host port number --stop Stop tcpserver program --help Print help information msh />tcpserver -p 10240 ``` 2. 在 milkv-duo256m 上运行 tcpserver 测试 ```shell tcpserver -p 10240 [I/TCP] TCPServer Waiting for client on port 10240... [I/TCP] Waiting for a new connection... ``` msh 会定时输出 `[I/TCP] Waiting for a new connection...` 等待 tcpclient 连接。 3. 在电脑上创建一个 tcp_client,并连接服务器。 ![tcpclient_create.png](https://oss-club.rt-thread.org/uploads/20240818/5ba30d3f7389cefff57887aae57b2f8a.png) 点击创建会自动创建一个 tcp_client,端口号为 10240,与创建 server 端口一致。类型选择 TCP。 点击连接即可连接服务器。 ![tcpclient_connect.png](https://oss-club.rt-thread.org/uploads/20240818/2f37cd439e043613d43630f83f926369.png) milkv-duo256m 会显示该 client 的 IP 地址和端口号。 ```shell [I/TCP] I got a connection from (192.168.188.20 , 58070) ``` 4. 设备接受数据 在 Windows 上输入数据, milkv-duo256m 会收到数据。 ![tcpclient_data.png](https://oss-club.rt-thread.org/uploads/20240818/4a583255147d5416bb747b516f0cdc50.png) ```shell [D/TCP] Received data = hello world! ``` 5. 停止 tcpserver ```shell msh />tcpserver --stop [I/TCP] Server stopped. ``` UDP 测试同理。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
燕十三
这家伙很懒,什么也没写!
文章
12
回答
15
被采纳
0
关注TA
发私信
相关文章
1
freemodbus tcp
2
stm32f103 LWIP 2.0.2 TCP收发问题
3
AT_DEVICE TCP 接收大文件失败!
4
RT thread freemobus tcp通讯问题
5
hard fault on thread: tcpip
6
RT系统TCP收数据速度慢
7
TCP Client 断线重连
8
TCP数据包多包重合的问题
9
rtthread simulator中能够使用WIN10中得TCP/IP服务吗
10
lwip 跨网段ping不通的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
文件系统
DMA
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
ota在线升级
WIZnet_W5500
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
中断
flashDB
socket
Debug
GD32
编译报错
msh
keil_MDK
at_device
MicroPython
rt_mq_消息队列_msg_queue
ulog
C++_cpp
本月问答贡献
rv666
6
个答案
1
次被采纳
踩姑娘的小蘑菇
5
个答案
1
次被采纳
用户名由3_15位
5
个答案
1
次被采纳
xiaorui
2
个答案
1
次被采纳
张世争
2
个答案
1
次被采纳
本月文章贡献
jaffer
1
篇文章
5
次点赞
rtt_dmx
1
篇文章
4
次点赞
BRICK PORTER
1
篇文章
2
次点赞
不灬忘初心
1
篇文章
2
次点赞
flytianya2010
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部