移植安装ModBus到ARM开发板
1、libmodbus官网
2、下载
二、交叉编译
1、解压
2、创建安装目录
3、进入解压的目录
4、配置编译选项
5、编译
6、安装
7、生成动态链接库
三、移植到ARM开发板
1、复制文件到ARM开发板
四、创建测试程序
1、创建测试程序C文件
2、复制库中头文件
3、交叉编译
4、复制可执行文件到开发板
五、安装ModbusPoll及ModbusSlave
六、测试
1、测试准备
2、在ARM上运行test程序
3、移植成功
一、源码下载
1、libmodbus官网
https://libmodbus.org/download/
2、下载
选择长期稳定版本libmodbus-3.0.6.tar.gz
二、交叉编译
1、解压
拷贝到相应目录,解压,例如拷贝在/usr/local/modbus下,modbus目录需要自己创建
tar -zxvf libmodbus-3.0.6.tar.gz
2、创建安装目录
mkdir install
3、进入解压的目录
cd libmodbus-3.0.6
4、配置编译选项
./autogen.sh
(注:--prefix选项是安装目录,根据自己环境确定)
./configure --host=[交叉编译工具链前缀] --enable-static --prefix=[安装路径]/install/
[安装路径]例如/usr/local/modbus,[交叉编译工具链]例如arm-none-linux-gnueabi
5、编译
make
6、安装
make install
若出现了错误:
../libtool: line 1102: arm-none-linux-gnueabi-ranlib: command not found
make[2]: *** [install-libLTLIBRARIES] Error 127
make[2]: Leaving directory `/usr/local/modbus/libmodbus-3.0.6/src'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/usr/local/modbus/libmodbus-3.0.6/src'
make: *** [install-recursive] Error 1
解决方法:
执行sudo –i,执行完之后会自动切换到/root目录。所以需要切换回之前的目录,执行make install,就可以成功。
7、生成动态链接库
在install生成三个目录:include lib share
lib文件夹中的libmodbus.so、libmodbus.so.5、libmodbus.so.5.0.5就是动态链接库
三、移植到ARM开发板
1、复制文件到ARM开发板
将libmodbus.so、libmodbus.so.5、libmodbus.so.5.0.5复制到ARM开发板中的/usr/lib目录下
执行cp libmodbus.so* /usr/lib(常用的动态链接库,存放在该目录下)会出现无法创建的问题(cannot create ‘/usr/lib/libmodbus.so*’: Read-only file system)。
解决方法:执行 wr cp libmodbus* /usr/lib
四、创建测试程序
1、创建测试程序C文件
在PC机linux系统下新建.c文件,将下列代码粘贴进去
/*************************
**
** modbus-rtu-test.c
** 移植libmodbus库到ARM开发板,并测试成功
**
**************************/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include "modbus.h" //modbus动态库文件
int main(int argc, char *argv[])
{
uint16_t tab_reg[64] = {0}; //定义存放数据的数组
modbus_t *ctx = NULL;
int rc;
int i;
//以串口的方式创建libmobus实例,并设置参数
ctx = modbus_new_rtu("/dev/ttyS1", 115200, 'N', 8, 1);
if (ctx == NULL) //使用UART1,对应的设备描述符为ttyS1
{
fprintf(stderr, "Unable to allocate libmodbus contex\n");
return -1;
}
modbus_set_debug(ctx, 1); //设置1可看到调试信息
modbus_set_slave(ctx, 1); //设置slave ID
if (modbus_connect(ctx) == -1) //等待连接设备
{
fprintf(stderr, "Connection failed:%s\n", modbus_strerror(errno));
return -1;
}
while (1)
{
printf("\n----------------\n");
rc = modbus_read_registers(ctx, 0, 10, tab_reg);
if (rc == -1) //读取保持寄存器的值,可读取多个连续输入保持寄存器
{
fprintf(stderr,"%s\n", modbus_strerror(errno));
return -1;
}
for (i=0; i<10; i++)
{
printf("reg[%d] = %d(0x%x)\n", i, tab_reg[i], tab_reg[i]);
}
usleep(3000000);
}
modbus_close(ctx); //关闭modbus连接
modbus_free(ctx); //释放modbus资源,使用完libmodbus需要释放掉
return 0;
}
2、复制库中头文件
将/usr/local/modbus/install/include/modbus中的四个头文件modbus.h、modbus-rtu.h、modbus-tcp.h、modbus-version.h复制到上边C语言文件同一文件夹。
3、交叉编译
arm-none-linux-gnueabi-gcc test.c -o test -L /usr/local/modbus/install/lib/ -lmodbus
4、复制可执行文件到开发板
将可执行程序文件test复制到ARM开发板的文件夹下。
五、安装ModbusPoll及ModbusSlave
六、测试
1、测试准备
在执行上述步骤前,需要先连接好相应的硬件,比如串口线等,然后打开ModBus调试助手,设置好波特率等,设置要与上述程序中的保持一致。
ModBus调试助手相关设置
2、在ARM上运行test程序
若出现错误:./test: error while loading shared libraries: libmodbus.so.5: cannot open shared object file: Error 20
解决方法:将libmodbus.so、libmodbus.so.5、libmodbus.so.5.0.5三个动态链接库复制到当前文件下,就可以正常执行。
3、移植成功
发现ModBus调试助手与开发板数据可以正常传输,测试成功,如图。
ModBus调试助手发送数据界面
ARM开发板测试程序接收到的数据
移植安装ModBus到ARM开发板相关推荐
- linux adb arm移植,移植ubuntu core到Arm开发板
origin: http://blog.csdn.net/kickxxx/article/details/15341079 最初是想把整个ubuntu移植到MX51开发板,因为项目不需要运行桌面系统, ...
- 将linux内核烧进arm板,ARM开发板上uClinux内核移植
<ARM开发板上uClinux内核移植>由会员分享,可在线阅读,更多相关<ARM开发板上uClinux内核移植(19页珍藏版)>请在人人文库网上搜索. 1.纷傲掌秀悸篷益哑檀扬 ...
- [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植
文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...
- Openssl移植到ARM开发板
Openssl移植到ARM开发板 openssl源码下载 源码编译配置 使用生成的库文件 openssl源码下载 openssl源码可以在官网下载:https://www.openssl.org/so ...
- arm开发板移植ALSA库与ALSA工具
目录 首先我们需要下载两个所要用到的库文件(基于Ubuntu) 一:先配置ALSA库文件 1.先解压放到家目录下ALSA的源文件: 2.解压后进去解压得到的文件夹执行以下命令: 3.配置好以后执行 二 ...
- apache arm 交叉编译_Apache 2移植到Arm开发板的过程整理——如何交叉编译Apache 2
话说要在arm开发板的linux系统中运行apache服务器,需要在pc linux系统中交叉编译Apache源码,在网上参考了很多资料都是1.3版本的,最后终于找到apache 2移植到arm开发板 ...
- RV1109开发板ssh服务器移植到arm开发板
RV1109开发板ssh服务器移植到arm开发板 ssh功能移植到RV1109开发板的,由于RV1109的SDK中,没有telnet功能,有时候adb功能在量产中需要关闭,避免造成设备留有漏洞,造成安 ...
- I.MX6ULL开发板基于阿里云项目实战 3 :阿里云iot-SDK 移植到arm开发板
上一篇博客讲的是创建产品和设备,本讲,我们将阿里云iot-SDK 移植到arm开发板. 参考资料: https://code.aliyun.com/edward.yangx/public-docs/w ...
- mplayer linux arm,MPlayer在ARM开发板的移植
MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S32440下效果非常不好.换成使用libmad效果不错.因此MPlayer在ARM-Linux的最简单的移植只需要 ...
最新文章
- JSP大作业数据库_本地MySQL【种种问题】
- MIT请来了一群经济学家,就AI是否会带来大规模失业展开了一场辩论
- python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法
- python导出csv 字符串变成数字_python – pandas read_csv列dtype设置为十进制但转换为字符串...
- 用PostgreSQL运行文件中的SQL程序
- PHP 开源搜索引擎Yioop! 0.80 发布
- 德国计算机博士怎样,2020年德国IT博士offer什么时候发
- 【FXCG】美国加息缩表在即,人民币仍创新高
- 计算机ppt里怎么应用背景图,如何在PowerPoint2013中为幻灯片设置背景图片 -电脑资料...
- 徕卡 sl android app,相机入魔 徕卡SL DPReview测评结论
- springboot之整合slf4j
- 主内存和工作内存是什么?
- 社招简历老被拒?大佬告诉你面试官只中意这些简历,快来看看吧!
- 洛奇服务器维护,《洛奇Mabinogi》官方网站
- 编程程软件测试学院3周年 为你破解入职大厂的终极奥秘
- 视觉SLAM面试题汇总(三)
- 你知不知道,天空没有想象中蓝。
- 剑指 Offer 19. 正则表达式匹配
- win10 屏幕文字显示不清楚 解决方案
- 面试不失败-揭秘IT面试各个环节成功的内幕