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文件,将下列代码粘贴进去

  1. /*************************

  2. **

  3. ** modbus-rtu-test.c

  4. ** 移植libmodbus库到ARM开发板,并测试成功

  5. **

  6. **************************/

  7. #include <stdio.h>

  8. #include <unistd.h>

  9. #include <string.h>

  10. #include <stdlib.h>

  11. #include <errno.h>

  12. #include "modbus.h" //modbus动态库文件

  13. int main(int argc, char *argv[])

  14. {

  15. uint16_t tab_reg[64] = {0}; //定义存放数据的数组

  16. modbus_t *ctx = NULL;

  17. int rc;

  18. int i;

  19. //以串口的方式创建libmobus实例,并设置参数

  20. ctx = modbus_new_rtu("/dev/ttyS1", 115200, 'N', 8, 1);

  21. if (ctx == NULL) //使用UART1,对应的设备描述符为ttyS1

  22. {

  23. fprintf(stderr, "Unable to allocate libmodbus contex\n");

  24. return -1;

  25. }

  26. modbus_set_debug(ctx, 1); //设置1可看到调试信息

  27. modbus_set_slave(ctx, 1); //设置slave ID

  28. if (modbus_connect(ctx) == -1) //等待连接设备

  29. {

  30. fprintf(stderr, "Connection failed:%s\n", modbus_strerror(errno));

  31. return -1;

  32. }

  33. while (1)

  34. {

  35. printf("\n----------------\n");

  36. rc = modbus_read_registers(ctx, 0, 10, tab_reg);

  37. if (rc == -1) //读取保持寄存器的值,可读取多个连续输入保持寄存器

  38. {

  39. fprintf(stderr,"%s\n", modbus_strerror(errno));

  40. return -1;

  41. }

  42. for (i=0; i<10; i++)

  43. {

  44. printf("reg[%d] = %d(0x%x)\n", i, tab_reg[i], tab_reg[i]);

  45. }

  46. usleep(3000000);

  47. }

  48. modbus_close(ctx); //关闭modbus连接

  49. modbus_free(ctx); //释放modbus资源,使用完libmodbus需要释放掉

  50. return 0;

  51. }

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开发板相关推荐

  1. linux adb arm移植,移植ubuntu core到Arm开发板

    origin: http://blog.csdn.net/kickxxx/article/details/15341079 最初是想把整个ubuntu移植到MX51开发板,因为项目不需要运行桌面系统, ...

  2. 将linux内核烧进arm板,ARM开发板上uClinux内核移植

    <ARM开发板上uClinux内核移植>由会员分享,可在线阅读,更多相关<ARM开发板上uClinux内核移植(19页珍藏版)>请在人人文库网上搜索. 1.纷傲掌秀悸篷益哑檀扬 ...

  3. [2021]Linux下C语言qrencode二维码生成库的基本使用和ARM开发板移植

    文章目录 一.前言 二.准备所用到的环境以及版本信息 1.Ubuntu和内核版本 2.gcc和g++版本 3.交叉编译gcc和g++版本 4.开发板信息 三.开发环境编译&安装qrencode ...

  4. Openssl移植到ARM开发板

    Openssl移植到ARM开发板 openssl源码下载 源码编译配置 使用生成的库文件 openssl源码下载 openssl源码可以在官网下载:https://www.openssl.org/so ...

  5. arm开发板移植ALSA库与ALSA工具

    目录 首先我们需要下载两个所要用到的库文件(基于Ubuntu) 一:先配置ALSA库文件 1.先解压放到家目录下ALSA的源文件: 2.解压后进去解压得到的文件夹执行以下命令: 3.配置好以后执行 二 ...

  6. apache arm 交叉编译_Apache 2移植到Arm开发板的过程整理——如何交叉编译Apache 2

    话说要在arm开发板的linux系统中运行apache服务器,需要在pc linux系统中交叉编译Apache源码,在网上参考了很多资料都是1.3版本的,最后终于找到apache 2移植到arm开发板 ...

  7. RV1109开发板ssh服务器移植到arm开发板

    RV1109开发板ssh服务器移植到arm开发板 ssh功能移植到RV1109开发板的,由于RV1109的SDK中,没有telnet功能,有时候adb功能在量产中需要关闭,避免造成设备留有漏洞,造成安 ...

  8. I.MX6ULL开发板基于阿里云项目实战 3 :阿里云iot-SDK 移植到arm开发板

    上一篇博客讲的是创建产品和设备,本讲,我们将阿里云iot-SDK 移植到arm开发板. 参考资料: https://code.aliyun.com/edward.yangx/public-docs/w ...

  9. mplayer linux arm,MPlayer在ARM开发板的移植

    MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S32440下效果非常不好.换成使用libmad效果不错.因此MPlayer在ARM-Linux的最简单的移植只需要 ...

最新文章

  1. JSP大作业数据库_本地MySQL【种种问题】
  2. MIT请来了一群经济学家,就AI是否会带来大规模失业展开了一场辩论
  3. python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法
  4. python导出csv 字符串变成数字_python – pandas read_csv列dtype设置为十进制但转换为字符串...
  5. 用PostgreSQL运行文件中的SQL程序
  6. PHP 开源搜索引擎Yioop! 0.80 发布
  7. 德国计算机博士怎样,2020年德国IT博士offer什么时候发
  8. 【FXCG】美国加息缩表在即,人民币仍创新高
  9. 计算机ppt里怎么应用背景图,如何在PowerPoint2013中为幻灯片设置背景图片 -电脑资料...
  10. 徕卡 sl android app,相机入魔 徕卡SL DPReview测评结论
  11. springboot之整合slf4j
  12. 主内存和工作内存是什么?
  13. 社招简历老被拒?大佬告诉你面试官只中意这些简历,快来看看吧!
  14. 洛奇服务器维护,《洛奇Mabinogi》官方网站
  15. 编程程软件测试学院3周年 为你破解入职大厂的终极奥秘
  16. 视觉SLAM面试题汇总(三)
  17. 你知不知道,天空没有想象中蓝。
  18. 剑指 Offer 19. 正则表达式匹配
  19. win10 屏幕文字显示不清楚 解决方案
  20. 面试不失败-揭秘IT面试各个环节成功的内幕

热门文章

  1. YbtOJ 洛谷UVA10559 方块消除
  2. 火遍全网的 ChatGPT,给你的求职新方向
  3. Hive环境搭建--轻量级安装so easy!
  4. 外贸业务员每天必做的事情!
  5. 【AAD Connect】01:AAD Connect把本地AD账户同步到Office365(AD域账户迁移)
  6. 深度学习系统框架的演进趋势
  7. 分享湖南软大自动健康打卡思路
  8. 微信公众号运营的七大问题,你遇到了吗?
  9. Vue项目之上传图片
  10. Android 绘制气泡