目录
本文档中利用交叉编译工具编译一个app程序用于测试RS485通信,需利用nfs挂载的形式该app下载至开发板中。
一、虚拟机测试环境搭建
- 安装NFS组件
sudo apt-get install nfs-kernel-server
- 建立共享文件夹
mkdir /nfs
- 设置共享目录
修改虚拟机的/etc/exports文件,添加如下代码
/nfs *(rw,sync,no_root_squash)
- 重启nfs服务器
sudo /etc/init.d/nfs-kernel-server restart
二、开发板挂载网络文件系统
启动开发板进行操作
如果开发板与主机都连接在路由器或者交换机上,即有dhcp主机功能,在/etc/init.d文件夹中的rcS文件末尾添加如下代码自动获取IP。如果采用自动获取IP的形式,最后采用手动的方式挂载网络文件系统。
/sbin/udhcpc &
当然也可以在该文件中添加以下代码是开发板具有一个固定的ip:
sudo ifconfig eth0 XXX.XXX.XXX.XXX
mount -t nfs -o nolock yyy.yyy.yyy.yyy:/nfs /mnt
此处的XXX代表arm开发板的ip,yyy代表主机IP(虚拟机IP)。第二句代码的意思是将主机的/nfs文件夹挂载到开发板的/mnt目录下。
三、RS485测试
在虚拟机上,利用交叉编译工具编译app源码,将RS485测试的app源码、脚本,拷贝至虚拟机内,并编译:
arm-histbv320-linux-gcc uart_app.c -o uart_app
将生成的uart_app、脚本文件拷贝至/nfs文件夹下:
sudo cp uart_app uart_r.sh uart_w.sh /nfs/
开发板中运行./uart_w.sh以便测试485发送,可得到以下结果:
运行./uart_r.sh测试485接收,可得到以下结果:
至此485测试完毕!
附录
uart_r.sh的源代码
#############################################################
# Hi3798 RS485 Test #
#author : TanZhenwen #
#date : 2018.12.07 #
#ver : 1.0 #
#############################################################
########## Baseaddr 0xf8a21000 #########
#############################################################
#Function GPIO IO Offset Value #
#485 TX/RX EN GPIO3_0 24 0x060 0x00002134 #
#485 RX GPIO2_5 21 0x054 0x00000132 #
#485 TX GPIO2_6 22 0x058 0x00000132 #
#############################################################
devmem 0xf8a21060 w 0x00002134
devmem 0xf8a21054 w 0x00000132
devmem 0xf8a21058 w 0x00000132
rm /var/lock/* -r
echo 24 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio24/direction
echo 0 > /sys/class/gpio/gpio24/value
./uart_app /dev/ttyAMA2 -b 19200 -l -r -hex
uart_w.sh的源代码
#############################################################
# Hi3798 RS485 Test #
#author : TanZhenwen #
#date : 2018.12.07 #
#ver : 1.0 #
#############################################################
########## Baseaddr 0xf8a21000 #########
#############################################################
#Function GPIO IO Offset Value #
#485 TX/RX EN GPIO3_0 24 0x060 0x00002134 #
#485 RX GPIO2_5 21 0x054 0x00000132 #
#485 TX GPIO2_6 22 0x058 0x00000132 #
#############################################################
devmem 0xf8a21060 w 0x00002134
devmem 0xf8a21054 w 0x00000132
devmem 0xf8a21058 w 0x00000132
rm /var/lock/* -r
echo 24 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio24/direction
echo 1 > /sys/class/gpio/gpio24/value
./uart_app /dev/ttyAMA2 -b 19200 -l -w "123456" -asc