嵌入式linux串口编程(下)

2019-07-12 17:53发布

上篇跟大家分享了串口编程的设置以及打开,在这里还要提醒各位,打开串口的时候,要看准串口的设备名,不然会使程序出现标示符损坏的情况的。 当我们设置好了串口之后,打开串口函数后,我们就得把它下载到开发板上来用用看,也就是交叉编译。
宿主机上我们进行读写的操作,开发板(tiny 6410)进行读的操作,读写共用一个头文件。 头文件 #include
#include
#include //file ,fd,pid
#include
#include
#include
#include
#include
#define MAXSIZE 1024

int set_com_config(int fd,int baud_rata,int data_bits,char parity,int stop_bits);
int open_port(int fd,int com_port);
我们来介绍read;

接下来是写的函数


2,把程序放在开发板上运行,还需要搭建交叉编译的环境,经过交叉编译之后 的程序才能在板上运行。 在这里介绍的NFS网络文件系统的搭建,实现宿主机与开发板的通信。 1,安装NFS 安装有两种方式,一种是源码包,一种是通过命令。在这里我是以root用户执行的 #apt-get install nfs-common #apt-get install nfs-kernel-server
注意,命令安装,请保证您的机器是联网的。
2,配置宿主机 1)修改配置文件 #vim /etc/exports 添加内容为 /home/share 192.168.*.*(rw,no_root_squash,sync) 解释 /home/share 是要共享的目录,事先可以先创建好 192.168.*。* 这个可以设置成两个通配符,允许任何网段的人访问这个目录 rw 读写权限 sync 资料同步写入硬盘 no_root_squash 客户端共享目录的使用权 保存退出。
2)启动服务 安装完nfs之后我们需要启动它 # /etc/init.d/portmap restart # /etc/init.d/nfs-kernel-server restart
3)显示共享的目录,更改目录权限 #showmount  -e #chmod 777 -R /home/share
宿主机的环境配置完毕。
2,开发板上的配置(型号:友善之臂 tiny6410) 开发板上的配置,我们借助宿主机来协助完成。 1,首先是安装交叉编译的包 1)下载arm-linux-gcc-3.41.tar.bz2到任意目录下,在百度一搜,出现很多可以下载的,在这里我就没有给出链接了。 2)tar -jxvf arm-linux-gcc-3.41.tar.bz2  /    解压到跟目录下 3)修改环境变量,加入$PATH路径 方法我在这里说明2种,以我的开发板型号为例子讲一下,解压到根目录下找出这样的一个路径 /opt/FriendlyARM/toolschain/4.5.1/bin 第一种方法:修改配置文件 /etc/bash.bashrc #vim /etc/bash.bashrc 在最后加上 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin
请记住修改配置文件一定要用root用户。 第二种方法 增加路径设置,在/etc/profile文件末尾中加入 export PATH="/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH" 保存退出。 4)使环境变量生效 #source  /root/.bashrc  方法1 #source  /etc/profile  方法2 方法2有时候生效后,再次重启电脑,还要再次输入上诉命令,使其生效
5)查看是否加入环境变量 #echo $PATH 6)显示是否安装成功 #arm-linux-gcc -v 会显示arm-linux-gcc信息和版本,证明安装成功
2,安装minicom工具 作用:将开发板上的终端,放在电脑上运行。 1)安装: #apt-get install minicom 2)设置: #minicom -s 之后出现图片左边的菜单选项,选择第三个设置,由于我们三串口转USB口的,设置就如图片右侧,设置完再按倒数第三个选项保存退出
3)打开 #minicom
把开发板上的电源打开,就能正式开机,在电脑显示终端了。
3,搭载交叉编译的环境 1)检查开发板上是否有网络,查看开发板上的ip地址
#ifconfig #ping 192.168.*.*  后面接的是你的开发板上的IP地址,记住与宿主机要保持在通过网段上 #ping 192.168.*.*  后面是宿主机的IP地址,能通的话就可以进行下一步,挂载共享目录了 2)挂载 #mount -o nolock 192.168.*.* : /home/share   /mnt IP地址是宿主机的IP地址 /mnt 是目标目录
4,开始编译 由于我的程序是分文件操作,在这里就使用makefile进行编译,统一在宿主机上编译,有arm.-linux-gcc编译的,就在开发板上运行,怎样在同个目录下编译两个makefile文件呢 我是这样做的,首先创建两个makefile 和makefile1具体操作如下 #make #make clean #make -f makefile1 命令执行的过程就不在这里显示了。记住编译的文件肯定要在共享的目录下,否则开发板是看不到的,还要借助两条串口线,一条是供minicom使用的,一条是你宿主机进行通信用的,两者不同,在串口设置那里格外重要,这将关系到能不能进行通信的问题,端口可在/dev目录下查询



4,之后分别在两个终端运行程序,便可实现其中的通信了 过程就不再这里掩饰了,代码发上去是有些欠缺的,希望读者多多体谅,另外如果您有更好的方法,也可以评论一下,向您学习。
linux的串口编译就写到这里,谢谢各位