一、方法1修改内核
kernal/include/linux/serial_core.h
...
#define UART_XMIT_SIZE PAGE_SIZE
...
kernal/include/generated/asm-offsets.h
...
#define PAGE_SIZE 4096
...
注意:
2.6的内核PAGE_SIZE的位置在kernal/include/asm/page.h
二、方法2应用层修改
使用:ioctl(fd, TIOCSSERIAL, &serial);
#define FRAME_SIZE 10
struct serial_struct serial;
...
serial.xmit_fifo_size = FIFO_SIZE; // what is "xmit" ??
ioctl(fd, TIOCSSERIAL, &serial);
...
完整参考程序
#include <asm-generic/ioctl.h>
#include <termios.h>
#include <linux/serial.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
int UartBuffSizeSet(char *dev_path,int size) {
int ret;
int fd = open(dev_path, O_RDWR | O_NOCTTY | O_NONBLOCK);
if(fd < 0){
return -1;
}
struct serial_struct serial;
ret = ioctl(fd, TIOCGSERIAL, &serial);
if (ret != 0) {
close(fd);
return -2;
}+
serial.xmit_fifo_size = 1024*1024; //1M
ret = ioctl(fd, TIOCSSERIAL, &serial);
if(ret != 0) {
close(fd);
return -3;
}
close(fd);
return 0;
}