阅读:6163回复:6
如何在linux内核中读写串口?
我在编写一个内核程序,需要在内核中通过串口在两台linux机器通讯,而且要与linux内核一同编译。请教如何在linux内核中访问并读写串口?请举例!
|
|
沙发#
发布于:2004-05-10 16:55
串口就是一个文件,只要操作文件就可以了!
|
|
|
板凳#
发布于:2004-05-11 08:38
有例子吗?在内核中编写程序,不是在用户态?打开那个文件,调用什么函数?请指教!
|
|
地板#
发布于:2004-05-11 09:07
可用proc
也可用sys_open等,版上应该有-- 在www.linuxforum.net曾详细讨论过,去查找一下-- |
|
|
地下室#
发布于:2004-05-11 14:12
可以打开串口文件了,但是当我用sys_write向串口中写数据时,系统死机了,请教为什么?
|
|
5楼#
发布于:2004-05-11 17:21
看看又没帮助:
a. 内核文件系统提供的read()和write()之类(最终为fp->f_op->read 或fp->f_op->write)的函数,期望是对用户态程序服务的,所以它会验证读写缓冲区不超过用户空间的上限即0xC000 0000。但现在内核中要读写文件,缓冲区在内核中即地址会超过0xC000 0000。 b. 在读写文件前先得到当前fs:mm_segment_t old_fs=get_fs(); 并设置当前fs为内核fs:set_fs(KERNEL_DS); 在读写文件后再恢复原先fs: set_fs(old_fs); set_fs()、get_fs()等相关宏在文件include/asm/uaccess.h中定义。 set_fs(fs); /* restore before returning to user space */] |
|
|
6楼#
发布于:2004-05-13 16:09
不错,肯定是地址错了
|
|