2.7.1 对串行口进行设置

2.7.1 对串行口进行设置

把两个串行口中断服务程序与IDT相挂接,然后根据tty_table数据结构中的内容对这两个串行口进行初始化设置,包括设置线路控制寄存器的DLAB 位、设置发送的波特率因子、设置DTR和RTS……最后,允许主8259A 芯片的IRQ3和IRQ4 发送中断请求。

挂接的具体过程及挂接后的效果如图2-13所示。

执行代码如下:

 
 
  1. //代码路径:kernel/chr_dev/serial.c:  
  2. void rs_init(void)  
  3. {  
  4.     set_intr_gate(0x24,rs1_interrupt); //设置串行口1中断,参看2.5  
  5.     set_intr_gate(0x23,rs2_interrupt); //设置串行口2中断  
  6.     init(tty_table[1].read_q.data); //初始化串行口1  
  7.     init(tty_table[2].read_q.data);  //初始化串行口2  
  8.     outb(inb_p(0x21)&0xE7,0x21);  //允许IRQ3,IRQ4  

两个串行口中断处理程序与IDT的挂接函数set_intr_gate()与2.5中介绍过的set_trap_gate()函数类似,可参看前面对set_trap_gate()函数的讲解。它们的差别是set_trap_gate()函数的type是15(二进制的1111),而set_intr_gate()的type是14(二进制的1110)。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值