buguai 发表于 2018-9-4 13:26:55

迅为开发板中modbus移植方法和使用文档

迅为开发板中modbus移植方法和使用文档

modbus 库如何移植到 ARM 开发板上,以及如何使用测试程序。

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






作者将“libmodbus-3.1.4.tar.gz”下载,打包在“topeet_modbus.tar.gz”中,其中还有移植好文件。
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 的库文件编译完成。

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”编译完成。
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 上的测试程序编译完成。

xiong57785 发表于 2018-9-4 16:58:22

顶顶~               {:smile:}

liang16888 发表于 2018-9-5 11:51:04

Thank you !!!{:loveliness:}

buguai 发表于 2018-9-14 15:53:50

liang16888 发表于 2018-9-5 11:51
Thank you !!!

{:handshake:}
页: [1]
查看完整版本: 迅为开发板中modbus移植方法和使用文档