小编其实在之前写过这篇文章,这里主要是新建网站,博客迁移一下吧。转载须注明哦。
目标机:ARM pcduino v2 (操作系统:android 4.2)
宿主机:ubuntu 12.04 (64 bit)
交叉编译器 :arm-linux-androideabi-gcc
指纹型号:zfm-206 (uart接口)
小编最近要做一个智能家居项目来参加比赛,中途用到指纹识别,想来自己写一个吧,也是蛮好玩的。
小编的程序基于C库,需要交叉编译放到目标机(pcduino).由于小编是在android系统上面做的,所以用的交叉编译器是arm-linux-androideabi-gcc.如果是放到linux系统上面可以选择arm-linux-gcc等等交叉便器。在此小编不再赘余交叉编译环境的搭建。直接上手吧。
—–>首先先恶补一点小知识
UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来主机与辅助设备通信。当然也是嵌入式通信当中比较重要的一种通信模式。
既然小编的教程有用到uart,自然少不了说一下uart的串口工作模式。至于串口的一些常用设置,只想说一句,网上烂大街。同时也希望大家能真正的写点自己的东西出来。小编这里只说一下串口常用的几点,以及容易出错的几点。
linux串口波特率:
指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数
可以理解为一个设备单位时间内接受或者发送了多少数据
常见的一些是1200,4800,9600,19200,5600,57600,115200等
数据位:
5-8位,构成一个字符,进行数据的传送,也是uart通信里面最重要的东西
奇偶校验位:
资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此 来校验资料传送的正确性。
停止位:
它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
说完了uart,接下来便是配置pcduino v2某某pin脚为串口模式。
到这里,又要絮叨絮叨啦。Arm板子的pin脚一般都是复用的,通过配置实现不同的功能,pcduino 也一样。我们这次是在android上面开发,用到的串口是/ttyS1,处女座的孩子可能会问:为毛不用ttyS0;
我只想说一句,这个问题问得非常好,ttyS0是一个调试串口。不经过一番折腾,并不能当做一个普通串口来用。下面给出两种方法把ttyS1更改成串口模式
看了上图想你也应该明白了吧。那么怎么更改这个文件呢。
Android 进入终端
Android~$: su
Android~$: echo 3 > /sys/devices/virtual/misc/gpio/mode/gpio0
Android~$: echo 3 > /sys/devices/virtual/misc/gpio/mode/gpio1
当然这个只是暂时性的更改,重新开关机便丢失了配置文件信息。如果想一劳永逸,看第二种方法
在github官网上面下载pcduino提供的工具,sunxi-tools,说白了就是全志芯片提供的一个反编译工具。提取pcduino android 的script.bin文件。提取方式是:挂在/dev/nand文件到/mnt、 提取其中文件。不要问我如何挂载。只想说,这是一个linux操作人员的最基本的素养。
在PC下面编译sunxi-tools。出现两个文件bin2fex和fex2bin.
用bin2fex 编译 scripts.bin文件
更改uart_para2.把uart_used = 1 更改成 uart_used = 0
保存;
使用fex2bin 编译回去
Ubuntu@goofy~$: fex2bin scripts.fex scripts.bin
编译完成后。把scripts.bin文件,放到板子上面。启动的时候。板子的gpio0和gpio1自动便会初始化为串口模式。对应设备文件时/dev/ttyS1
1.2种方法。同样使用于pcduino v2的ubuntu镜像
到此为止,板子已经支持串口模式了。下一篇。拿指纹开刀。
更多文章博客:http://www.goofyy.com