迅为i.MX6Q开发板资料-modbus移植和使用文档
迅为i.MX6Q开发板资料-modbus移植和使用文档
本文档介绍 modbus 库如何移植到 ARM 开发板上,以及如何使用测试程序。
硬件平台:

1. modbus 移植到 linux
1.1 modbus 源码下载
可以从 libmodbus 官网 http://libmodbus.org/download/下载 3.1.4 版本,也可以用迅为提供的下载好的源码。

作者将“libmodbus-3.1.4.tar.gz”下载,打包在“topeet_modbus.tar.gz”中,其中还有移植好文件。
1.2 arm-linux 上的 modbus 移植和编译
交叉编译使用的编译器是“arm-2009q3”,如下图所示。

通过 ssh 将下载好的源码压缩包“libmodbus-3.1.4.tar.gz”拷贝到 Ubuntu 上,使用命令“tar -vxf libmodbus-3.1.4.tar.gz”解压,解压后生成目录“libmodbus-3.1.4”,如下图所示。

使用命令“mkdir install”,新建 install 路径,用以安装生成的文件,如下图所示。

进入 libmodbus-3.1.4,执行命令./configure ac_cv_func_malloc_0_nonnull=yes --
host=arm-none-linux-gnueabi --enable-static --prefix=/home/minilinux/install/ 。
Host=后面的是编译器前缀,--prefix=后面的是安装目录,可根据自己环境确定,如下图所示

如下图所示,执行完毕。

执行编译命令“make”,如下图所示。

编译完成,如下图所示。

执行安装命令“make install”,则安装到./configure 指定的目录,作者这里是 “/home/minilinux/install/”目录,如下图所示。

安装完成,如下图所示。

查看安装目录 install,在 install 生成三个目录:include、lib、share,如下图所示。

如下图所示,使用 file 命令查看 lib 目录下的库文件,可以发现其中的文件是 arm 架构的。

将编译出来的 lib 路径下的所有文件拷贝到开发板的“/lib”目录下。
至此,modbus 的 arm-linux 的库文件编译完成。
1.3 arm 的测试程序
进入目录/home/minilinux/libmodbus-3.1.4/tests/,查看测试程序 random-testserver.c,如下图所示,已经编译出来了,但是还是需要修改一下源码中的几个参数,重新编译。

输入命令 vim random-test-server.c 打开测试程序,里面 23 行
ctx =modbus_new_tcp("127.0.0.1", 1502); 改成 ctx = modbus_new_tcp(NULL, 1502);,

即 server 监控所有的 ip 地址,端口是 1502。
、、然后执行命令交叉编译命令
arm-none-linux-gnueabi-gcc -o random-test-server random-test-server.c -
L/home/minilinux/install/lib -lmodbus -I/home/minilinux/install/include/modbus
生成可执行文件 random-test-server,如下图所示。

如下图所示,可执行文件是 arm 架构的。

至此,arm 服务端的测试例程“random-test-server”编译完成。
1.4 x86-linux 的 modbus 移植和编译
在 minilinux 目录下再建一个文件夹,用于放 modbus 的 x86 的文件,如下图所示,使用命令“tar -vxf libmodbus-3.1.4.tar.gz -C x86-modbus/”,将源码解压到这个目录下。

进入解压出来的“/home/minilinux/x86-modbus/libmodbus-3.1.4”目录,如下图所示,执行命令“./configure”,不用加任何参数,默认就是 GCC-x86 配置。

配置完成,如下图所示。

执行“make”编译命令,然后执行安装命令“make install”,安装完成,如下图所示。

进入 test 目录,前面我们编译的 arm 下的测试程序是 server,那么 Ubuntu 下运行的就应该是 client 客户端,如下图所示。

客户端需要服务端的 IP 地址,如下图所示,作者的服务端(也就是开发板端)IP 是“192.168.2.20”。

接着,修改 x86-modbus 目录下的“random-test-client.c”文件,使用 vim 命令打开random-test-client.c 文件,将 ctx = modbus_new_tcp("127.0.0.1", 1502);
改成 ctx = modbus_new_tcp(开发板 IP, 1502); 如下图所示,然后保存退出。

执行命令:
gcc -o random-test-client random-test-client.c `pkg-config --libs --cflags
libmodbus` 编译生成 random-test-client 可执行文件,如下图所示,编译出的可执行文件是 x86的。

至此,x86 上的测试程序编译完成。
2 测试
首先确保开发板和虚拟机 Ubuntu 可以 ping 通,如下图所示,作者虚拟机的 IP 为
“192.168.2.200”,通过开发板可以 ping 通 Ubuntu。

其次,注意将前面编译出的 arm 的库文件拷贝到开发板上,如下图所示。

在开发板上运行服务端程序,如下图所示。

在虚拟机 Ubuntu 上运行客户端程序“./random-test-client”,运行完毕如下图所示

服务端运行完毕,如下图所示。

至此,modbus 的移植和测试完成。
转自:http://topeetboard.com

浙公网安备 33010602011771号