lhj1975
驱动牛犊
驱动牛犊
  • 注册日期2004-04-01
  • 最后登录2004-05-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:6020回复:6

如何在linux内核中读写串口?

楼主#
更多 发布于:2004-05-10 10:23
我在编写一个内核程序,需要在内核中通过串口在两台linux机器通讯,而且要与linux内核一同编译。请教如何在linux内核中访问并读写串口?请举例!
zheng2002
驱动中牛
驱动中牛
  • 注册日期2002-04-17
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-10 16:55
串口就是一个文件,只要操作文件就可以了!
qq:14459938 email:zheng2002@21cn.com RH9 kernel 2.4.20
lhj1975
驱动牛犊
驱动牛犊
  • 注册日期2004-04-01
  • 最后登录2004-05-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-11 08:38
有例子吗?在内核中编写程序,不是在用户态?打开那个文件,调用什么函数?请指教!
highwaylost
驱动小牛
驱动小牛
  • 注册日期2003-12-31
  • 最后登录2005-09-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-11 09:07
可用proc
也可用sys_open等,版上应该有--
在www.linuxforum.net曾详细讨论过,去查找一下--
“恨怨悲苦憎怒噌 仁爱慈孝耻义廉 是故恨人所以得仁 无爱者必不怨 不慈者必无悲 孝而有苦 憎后耻来 义自怒生 廉人心噌 夹天地七大苦 破人情七大碍--”
lhj1975
驱动牛犊
驱动牛犊
  • 注册日期2004-04-01
  • 最后登录2004-05-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-11 14:12
可以打开串口文件了,但是当我用sys_write向串口中写数据时,系统死机了,请教为什么?
highwaylost
驱动小牛
驱动小牛
  • 注册日期2003-12-31
  • 最后登录2005-09-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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 */]
“恨怨悲苦憎怒噌 仁爱慈孝耻义廉 是故恨人所以得仁 无爱者必不怨 不慈者必无悲 孝而有苦 憎后耻来 义自怒生 廉人心噌 夹天地七大苦 破人情七大碍--”
cccccgtz
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2010-04-23
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-13 16:09
不错,肯定是地址错了
游客

返回顶部