硬汉嵌入式论坛

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

[RL-TCPnet] BSD socket 问题

[复制链接]

4

主题

17

回帖

29

积分

新手上路

积分
29
发表于 2019-12-20 13:12:38 | 显示全部楼层 |阅读模式
老大你好,请教下RL_TCPnet bsd socket的一些问题

我使用的是32f207的板子,用的是RTX4+RL_TCPnet协议栈,参考的是V6第二十一章的例子(高效的事件触发框架+BSD SOCKET客户端)。

1,其中的AppTaskSocket任务处理逻辑是(使用的是BSD socket):连接服务器然后死循环调用recv()函数,此时rece()函数一直工作在阻塞模式。

我现在想新建一个任务用来做周期数据发送,不重新新建socket,能否共用一个socket做send()函数的主动发送呢?

     我做过测试:将新建的socket作为全局变量,在另外一个任务调用send()函数的话会出现socket被其他任务使用(料想就是如此,因为recv函数相当于一直处于调用状态)

难道只能新建两个socket,一个用来收,一个用来发吗?

原始的soctet似乎可以做到只用一个socket,因为它的接收放在了回调里面。

2,在时间基准更新任务里面,也设置AppTaskTCPMain的事件标志的目的是什么(os_evt_set(0x0001, HandleTaskTCPMain))?

3,不使用微库无法使用printf函数我可以理解,但是不使用微库,为什么RTX任务都跑不起来


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-12-20 16:21:52 | 显示全部楼层
1、收发在一个任务里面实现。recev设置成非阻塞的。
2、事件触发。
3、不使用C微库,要添加retarget.C文件,使用C标准化。
回复

使用道具 举报

4

主题

17

回帖

29

积分

新手上路

积分
29
 楼主| 发表于 2019-12-20 17:52:27 | 显示全部楼层
eric2013 发表于 2019-12-20 16:21
1、收发在一个任务里面实现。recev设置成非阻塞的。
2、事件触发。
3、不使用C微库,要添加retarget.C文 ...

1,看来使用bsd只开一个socket,必须将recv设置成非阻塞的。
2,这个我不理解的是,在底层发送send_frame()函数和ETH_IRQHandler中断里边都加了事件触发,为什么还在时间更新基准里边加。我做了测试,如果不加,也是没问题的,只不过连接上服务器耗费的时间比较长,加了的话,或许由于快速调用了main_TcpNet(),就能很快连接上服务器吧。
3,这个我主要担心使用微库会不会有什么限制,因为我后面会用到链表结构,会经常使用malloc,memcpy等标准库的函数,不知有什么影响。另外可以顺便提供一下retarget.c文件文件吗,到时候出现问题我就使用这个文件
回复

使用道具 举报

4

主题

17

回帖

29

积分

新手上路

积分
29
 楼主| 发表于 2019-12-20 17:54:14 | 显示全部楼层
回复也需要审核。。先在底下谢谢硬汉哥
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2019-12-21 09:55:02 | 显示全部楼层
lcf144103 发表于 2019-12-20 17:52
1,看来使用bsd只开一个socket,必须将recv设置成非阻塞的。
2,这个我不理解的是,在底层发送send_fram ...

1、要加
QQ截图20191221095306.png

2、 MDK的安装目录有。
回复

使用道具 举报

4

主题

17

回帖

29

积分

新手上路

积分
29
 楼主| 发表于 2019-12-21 17:00:09 | 显示全部楼层

收到,以后多看官方手册,蟹蟹硬汉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 01:16 , Processed in 0.237064 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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