LINUX RS485串口编程
目前PC的串口是RS232的,受制于传输距离的限制,我们公司的硬件工程师在PC原有RS232串口的基础上做了改进,改为RS485的,但这样一来,LINUX原来的驱动就不能用了,所以要写新的驱动。硬件工程师告知我,RS232是全双工的,而RS485是半双工的,需要通过修改其I/O端口的寄存器的值,改为半双工通信。
但我考虑了一下,RS232是内核本来就支持的,重写驱动必然会很耗时,而且我也没这个能耐,如果通过重新
编译新内核的办法解决,但又发现内核配置中没这个选项,直接修改内核源代码似乎也行不通,而已有的对RS232进行设置的系统调用也没有能将其设置为半双工通信的参数选项。这可难倒了我了!!
现在我的想法是仍然调用LINUX提供的系统调用来设置比如波特率,停止位,数据位和校验,另外写一个函数
在用户空间设置串口的参数尤其是直接修改I/O端口的寄存器的方法,将其设置为半双工通信模式,
我想到的函数有:
ioperm();
iopl();
iocntl();
我就知道这些了,请问哪位大侠做过类似的实现,或有更好的解决办法,望不吝赐教,小弟不胜感激!!!
还有就是如果重写驱动,原有的驱动程序和设备结点文件的主设备号将会与新驱动的主设备号发生冲突,这个问题如何来解决!!
谢谢了!!