
$ dmesg | grep tty
输出:
[ 37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A
setserial 命令
setserial 是一个程序用于设定并/或报告某个串口关联的配置信息。该信息包括串口用到的I/O 端口和中断号,以及Break键是否应被解释为Secure Attention Key 等等。 仅仅是输出如下的命令:
$ setserial -g /dev/ttyS[0123]
输出:
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
带-g选项的setserial帮助找到你的Linux板子上的物理串口。
Linux 串口控制台程序
一旦串口被确定了,你就能使用许多的工具来配置Linux板子:
minicom- 用于控制modem和连接到dump 设备的最好的串口通信程序。
wvidial or other GUI dial up networking program - 一个内建智能PPP 拨号器。
getty / agetty - agetty 打开一个 tty 端口, 提示登录名称并调用 /bin/login 命令。
grub / lilo configuration - 配置串口为系统控制台。
那样确实就把数据发送了,简单方便就是串口的特点mov sbuf 0xXX
把数据送到发送缓冲区之后,芯片就自己去处理发送的事情了,程序员就不用管了
串口通信的确认一般由程序员管,比如你发个0xaa过来,我收到了就回个0xbb给你,你收到0xbb,你就知道我收到了你的0xaa,类似这样
经过验证,串口应该没有数据读上来,所以导致读到的数据的数量是0,打印出hello是因为buff本身初始化就是Hello,所以显示是Hello#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
int main()
{
static char filename[]="t1.txt"
int fd
int nread, i
char buff[] = "Hello\n"
if((fd = open(filename,O_RDONLY))<0)
{
return -1
}
printf("fd = %d\n",fd)
nread = read(fd,buff,8)
//while( (i = read(fd,buff,512) ) >0 )
// =i
printf("nread=%d,%s\n",nread, buff)
close(fd)
return 0
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)