- 2024-11-24
-
回复了主题帖:
电路对照实物,分析三色调光台灯的电路原理
这个拆解清晰!
话说,现在台灯的电路也够简单的啊
- 2024-10-30
-
回复了主题帖:
新能源汽车充电桩的内部结构、充电原理知识
强电部分还没有介绍呢
- 2024-10-27
-
发表了主题帖:
【米尔 瑞芯微RK3568 工业开发板】基于libuv的客户端TCP连接
# 【米尔 瑞芯微RK3568 工业开发板】基于libuv的客户端TCP连接
今天给大家带来的试用分享是在米尔出口的瑞芯微RK3568的工业开发板的以太网相关评测:基于开源库libuv的TCP客户端实现。
以太网,在现在的社会中,应该没有人说我没有上过网。人如此,机器设备亦如此。在工业设备通讯里面,相对于RS485,CAN,或者WiFi,蓝牙,zigbee等通讯方式,以太网仍然是带宽大,速度高,延迟低的通讯方式。这些特性也成为工业控制领域中设计 应用使用以太网通讯的重要筹码。对于实时性要求巨高的伺服电机驱动,也是在以太网基础上部署了EtherCAT协议。据科技媒体相关报道,现在部分头部新能源车企也开始部署车载以太网与更新适应汽车安全的以太网协议。可见,以太网功能是我们嵌入式工程师必备的一项基础知识与技能。
## 米尔RK3568开发板
既然以太网这么重要,那么,我们米尔的瑞芯微RK3568在这方面的设计又如何呢?
做为一款国产高性能4核芯片,RK3568拥有丰富的高速接口,比如,我们本次要评测的以太网接口。米尔贴心的为我们准备了两个接口,并且两个以太网接口均支持千兆速率。没错!是双千兆接口。这样,我们可以使用这两口接口分别加入两个不同的局域网,也可以使用一个接口连接入内网,另一个连接入外网。这样也可以隔离数据与通讯,而且增强了数据安全性。总之,双千兆网口足以胜任我们工业控制领域的大多数应用。
## libuv实现客户端
有了米尔RK3568强悍的硬件支持,优秀、稳定、可靠的软件软件驱动也要跟上。考虑到自身软件实现的水平,所以,本次我使用了开源的libuv来实现TCP客户端,并进行数据的收发。
libuv是一款开源的跨平台的异步IO库。它也是大名鼎鼎Node.js的底层库实现。libuv开源库的特性是异步IO方式,但我们本次使用它的客户端模式,借用其回调函数的实现方式。当然,对于我个人而言,在一个已有框架下编程,程序的健壮性也多少有点保证。
## 部署libuv客户端
我们需要从国外github.com上同步下载libuv的源代码。我建议大家直接下载libuv的zip包。如果使用git clone的方式,由于众所周知的原因,大概率会失败。
下载完成之后,将zip包解压到合适的文件夹。由于libuv使用纯C编写,并且并未依赖其它链接库,我们可以直接运行CMake来生成动态链接库.so文件。当然,如果是自己的程序,我还是非常建议使用静态链接库,主要是出于好发布,好维护的原因。我这里使用.so的动态链接库的原因还有一个,我也要在米尔RK3568的环境下运行TCP服务端。这样可以共用同一套libuv库,也充分体现动态链接库的优势。
## 编写我们自己的TCP客户端
有了libuv动态链接库,我们就基于libuv的框架来编写我们的程序代码。
我们让app连接到端口号为9012的服务端,并发送"Hello EEWORLD! Hello MYiR RK3568!"字符串。我的参考源代码如下:
```c
/**
******************************************************************************
* @File main.c
* @author jobs
* @version v0.00
* @date 2024-09-11
* @brief * @note
*
******************************************************************************
*/
#include
#include
#include
#include
#include “uv.h”
#define DEFAULT_PORT (9012)
uv_buf_t iov;
char buffer[128];
const char hello_str[] = "Hello EEWORLD! Hello MYiR RK3568!";
uv_loop_t *loop;
uv_tcp_t client_tcp_socket;
uv_connect_t connect;
void send_done(uv_write_t *req, int status)
{
if (status < 0)
{
fprintf(stderr, "Connection error %s\n", uv_strerror(status));
return;
}
uv_close((uv_handle_t *)&client_tcp_socket, NULL);
}
void on_connect(uv_connect_t *req, int status)
{
if (status < 0)
{
fprintf(stderr, "Connection error %s\n", uv_strerror(status));
return;
}
fprintf(stdout, "Connect ok\n");
stpcpy(buffer, hello_str);
iov = uv_buf_init(buffer, sizeof(buffer));
iov.len = strlen(hello_str);
uv_write((uv_write_t *)req, (uv_stream_t *)&client_tcp_socket, &iov, 1, send_done);
}
int main()
{
int ret = 0;
struct sockaddr_in dest;
*loop = uv_default_loop();
uv_tcp_init(loop, &client_tcp_socket);
uv_ip4_addr("192.168.8.18", DEFAULT_PORT, &dest);
ret = uv_tcp_connect(&connect, &client_tcp_socket, (const struct sockaddr *)&dest, on_connect);
if (ret)
{
fprintf(stderr, "connect error %s\n", uv_strerror(ret));
return 1;
}
uv_run(loop, UV_RUN_DEFAULT);
return 0;
}
/******************************** END OF FILE *********************************/
```
我们可以看到,我们模拟的TCP服务端成功接收到米尔RK3568的连接,并接收到发送过来的字符串。
## 总结
通过本次试用TCP客户端的以太网接口,我们可以看到米尔RK3568在工业控制领域,自动化领域,机器人领域轻松实现TCP高速、大带宽的数据通讯。
本次原型验证也起到非常积极有效作用。我相信,经过本轮试用定会在实际项目选型中会优先考虑米尔RK3568,也必将会减少我实际项目的开发周期。
-
发表了主题帖:
【米尔 瑞芯微RK3568 工业开发板】本地Linux交叉开发环境搭建
# 【米尔 瑞芯微RK3568 工业开发板】本地Linux交叉开发环境搭建
在申请试用的时候,我就提前了解了一下瑞芯微的RK3568的开发所需的交叉编译环境——“区区几行命令而已,并未放在心上。”我觉得我这样的Linux小白,在有多年C语言开发经验下,上手起来应该易如反掌。可是,现实却又如此的“啪啪”的打脸!等我拿到开发板后,开始搭建环境时才发现嵌入式Linux开发使用的交叉编译环境入门门槛还是相当高的。虽然都是按照手册的安装命令一路下来,但每个人的情况也貌似各有各的不同。这样,或者那样的问题时不时地很自然地就冒了出来。我也是历经曲折,迎难而上,终于迎了编译成功的信息提示。接下来,我就来分享一下我的米尔瑞芯微RK3568工业开发板的嵌入式Linux交叉编译环境搭建过程中所踩的“坑”与解决办法。
## 坑一:操作系统选择
在米尔提供的Quick Start手册文中建议使用Ubuntu操作系统——至少,我还是十分建议的,毕竟,它可以让你少走很多很多的弯路。开始的时候,我的测试机环境是CentOS8,我想着也是Linux,应该差不多。于是,我以小白的角色,试了一下。结果,各种软件安装失败,依赖包找不到。也不知道什么原因?CentOS提示安装源过期!查了不少资料,也按照网友们的建议进行了尝试,终不得法。在各种挣扎与纠结之后,下定决心更换为了Ubuntu操作系统。
## 坑二:Python2的安装
在米尔官方的指导手册说明中,有安装Python2的命令,但我本次安装的却非指导手册默认的Ubuntu 22.04版本,而是Ubuntu 23.04。主要是当时下载Ubuntu镜像包时,没有看到22.04的版本,只有23.04的版本。于是我就又没有听米尔的建议。唉,又吃了不苦呀!
我在安装Python2时,提示我:Ubuntu不再支持!不再支持!对于只会使用“sudo apt install”安装软件的我,这使用安装步骤陡然剧增,不过,还好!办法总算是让我找到,又搜索了不少的资料。最后终于让我搞定了!
在高版本的Ubuntu系统上安装Python2,其核心的办法就是需要下载Python2的源代码,自行编译并安装。现在把Python2的安装过程分享一下:
首先,获取到Python2的源代码,打开网站地址:[Python Release Python 2.7.15 | Python.org](https://www.python.org/downloads/release/python-2715/),下载tar包。
依次敲入下面的命令:
```shell
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
tar -xf Python-2.7.15.tgz
cd Python-2.7.15/
./configure --enable-optimations
make
python2
```
安装好Python2之后,根据指导手册继续安装,遇到未找到的安装依赖,我们可以直接使用“sudo apt install”来安装,然后,再将运行安装脚本,反复几次即可。
在踩完这两个大坑之后,后面的操作便一帆风顺了!这不,您瞧!
这张图片是安装交互编译器,并参数配置生效的截图。
这张是我们重新编译Kernel,rootfs和uboot镜像的截图。
其实,我们按照米尔官方的指导手册来依次执行是没有多大的问题的。对于我来说,现在经过这段时间与嵌入式Linux的磨合,回头再看,我也并不再觉得嵌入式Linux的交叉编译环境有多难。一名Linux小白的成长过程也就是如此吧!我想这也是我们米尔厂商,EEWORLD论坛为大家安排试用的初衷吧!
P.S.多说一句。米尔官方资料是保存在了网盘,下载速度相当快!
- 2024-10-22
-
回复了主题帖:
【STM32H7S78-DK】手撸一个数字键盘
好厉害啊
- 2024-10-15
-
回复了主题帖:
Modbus调试软件--modbuspoll、modscan和modsim使用详解
我平时使用ModbusPoll软件来辅助开发
- 2024-10-11
-
回复了主题帖:
秋天的第一口蟹货,可惜没口福呢
配上黄酒,适当放点姜,中和一下。
人生苦短嘛!也别亏待了自己
-
回复了主题帖:
大家来说说是什么原因
电池废了呗
- 2024-10-05
-
回复了主题帖:
我的MDK很卡
一般卡顿多由于硬盘导致的。
但您这个是新电脑,还是考虑一下兼容性吧!
还是建议安装keil 5
- 2024-10-03
-
回复了主题帖:
取代CAN总线,车载以太网10BASE-T1S能行吗?
替代这个事情我觉得要分成两个方面来看,
新技术的优势肯定要强于CAN,CAN-FD,否则,也谈不上新技术;
另一个方面就是推广,主要还是来自成本;
传统燃油车对数据量的需求并不大,CAN可以轻松应对,但现在的新能源汽车,尤其是引入到了AI技术后,数据量的增加成几何式上升,这个对于CAN来说将是critical的打击。
现在看,这个技术应该可以很快会落地
- 2024-09-28
-
回复了主题帖:
【STM32H7S78-DK】——点灯分享
嘿嘿,这个图形化工具说简单也挺简单的,但稍微一不注意。这问题还挺难发现的
- 2024-09-11
-
回复了主题帖:
相约秋色~相约北京~恩智浦工业和物联网技术峰会 约起来!
完成报名,等待审核中
-
回复了主题帖:
【米尔 瑞芯微RK3568 工业开发板】小兴奋的开箱帖
Jacktang 发表于 2024-9-9 07:27
米尔的开发板做的还是比较强悍的,接口多
是的,是的。拿到手里特别的舒服
- 2024-09-08
-
发表了主题帖:
【米尔 瑞芯微RK3568 工业开发板】小兴奋的开箱帖
一个月前看到米尔RK3568开发板的测评活动,心里非常激动。上个月学习准备了近一个月后,我完成了申请,并最终幸运的入围活动名单。收到快递后,迫不及待地打开……接下来随我一起分享开箱快乐吧!
米尔RK3568评估板的包装盒为大盒设计,RK3568开发板在盒子里其上下均有厚海绵保护,以保证RK3568开发板在恶劣的快递运输过程中不会受到损坏的风险。
在盒子的左侧,米尔给大家配备了支持全球插座的市电插头。
我们主角RK3568不仅夹在海绵中防止硬损伤,而且还密封在防静电袋中,防止湿气的入侵,即使在蒸笼一样的天气里,也不用担心了!赞一下。
阅读随箱的说明书,米尔在出厂前RK3568开发板已经预烧录了出厂程序,我们先上电尝试一下。
今天的开箱分享就到这里了!我要去做RK3568的测评去了,敬请期待!欢迎大家关注我!
- 2024-09-02
-
回复了主题帖:
急急急!!!求大佬,串口芯片max3485esa这样设计有问题吗,为什么我回显数据都不行呢
我们当时的设计和您这个差不多,只是没有在TTL添加电阻和LED灯。
您可以尝试把上述器件先拆除,然后,将控制引脚拉低,进入接收模式,看看TTL侧有电平过来吗?
- 2024-09-01
-
回复了主题帖:
【Follow me第二季第1期】任务汇总,选做水果钢琴
看上去真棒啊
- 2024-08-31
-
回复了主题帖:
【外快】你们赚过最大的一笔外快是什么,多少钱啊?
看来我的水平还不够。没有人来找我做开发
- 2024-08-30
-
回复了主题帖:
RS485自动收发电路硬件设计及其常见的几个关键要素
三极管影响速率,115200bps的速率下会丢包。
所以,好多设计也直接上反向器来实现。
-
回复了主题帖:
小米路由器AC2100拆解,没搞明白他为啥这么大。
看来主要还是外观起了主要作用啊
- 2024-08-23
-
回复了主题帖:
RK3588J正式发布Ubuntu桌面系统,丝滑又便捷!
这下 工控产品的显示与控制就又迈了一大步,又上了一个台阶