<p class="MsoNormal" style="text-align:center;" align="center"> <span style="font-size:22.0pt;font-family:黑体;">嵌入式系统课程实验报告</span><span style="font-size:22.0pt;"></span> </p> <p class="MsoNormal" style="text-align:center;" align="center"> <span style="font-size:22.0pt;"> </span> </p> <p class="MsoNormal"> <u><span style="font-size:12.0pt;line-height:200%;"><span> </span></span></u><u><span style="font-size:12.0pt;line-height:200%;font-family:宋体;">数学与计算机科学</span></u><u><span style="font-size:12.0pt;line-height:200%;"><span> </span><span> </span></span></u><span style="font-size:12.0pt;line-height:200%;font-family:宋体;">学院</span><u><span style="font-size:12.0pt;line-height:200%;"><span> </span></span></u><u><span style="font-size:12.0pt;line-height:200%;font-family:宋体;">软件工程</span></u><u><span style="font-size:12.0pt;line-height:200%;"><span> </span><span> </span><span> </span></span></u><span style="font-size:12.0pt;line-height:200%;font-family:宋体;">专业</span><u><span style="font-size:12.0pt;line-height:200%;"><span> </span><span> </span><span> </span>08<span> </span></span></u><span style="font-size:12.0pt;line-height:200%;font-family:宋体;">班级</span><span style="font-size:12.0pt;line-height:200%;"></span> </p> <p class="MsoNormal"> <span style="font-size:12.0pt;line-height:200%;font-family:宋体;">小组成员</span><span style="font-size:12.0pt;line-height:200%;">_________</span><span style="font-size:12.0pt;line-height:200%;font-family:宋体;">刘爽</span><span style="font-size:12.0pt;line-height:200%;"> <span>____________</span></span><span style="font-size:12.0pt;line-height:200%;font-family:宋体;">刘雪莲</span><span style="font-size:12.0pt;line-height:200%;">____________________________</span> </p> <p class="MsoNormal"> <span style="font-size:12.0pt;line-height:200%;font-family:宋体;">设计实验名称:</span><u><span style="font-size:12.0pt;line-height:200%;"><span> </span></span></u><span class="postgrey"><span>Linux</span></span><span class="postgrey"><span style="font-family:宋体;">串口通信与中断实验</span> </span><u><span style="font-size:12.0pt;line-height:200%;"><span> </span><span> </span></span></u> </p> <p class="MsoNormal" style="margin-left:0cm;text-indent:0cm;"> <b><span style="color:black;"><span>一、</span></span></b><b><span style="font-family:宋体;color:black;">实验要求</span><span style="color:black;"></span></b> </p> <p class="MsoNormal" style="margin-left:21.0pt;text-align:left;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">1. </span><span style="font-size:12.0pt;font-family:宋体;">了解<span>Linux</span>下串行端口程序设计的基本原理,了解<span>Linux</span>下中断编程的基本方法; <span></span></span> </p> <p class="MsoNormal" style="margin-left:21.0pt;text-align:left;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">2. </span><span style="font-size:12.0pt;font-family:宋体;">掌握终端的主要属性及设置方法,熟悉终端<span> IO</span>函数的使用;外部中断的编程方法;<span></span></span> </p> <p class="MsoNormal"> <b><span style="font-family:宋体;color:black;">二、实验内容</span><span style="color:black;"></span></b> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">1-1</span><span style="font-size:12.0pt;font-family:宋体;">编写<span>serial</span>应用程序; <span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">1-2. </span><span style="font-size:12.0pt;font-family:宋体;">编写<span>Makefile</span>文件; <span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">1-3. </span><span style="font-size:12.0pt;font-family:宋体;">下载并调试<span>serial</span>应用程序。 <span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">2-1. </span><span style="font-size:12.0pt;font-family:宋体;">编写外部中断驱动程序<span>eintdrv</span>; <span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">2-2. </span><span style="font-size:12.0pt;font-family:宋体;">编写<span>Makefile</span>文件; <span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">2-3. </span><span style="font-size:12.0pt;font-family:宋体;">编写中断测试程序<span>interrupt </span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">2-4. </span><span style="font-size:12.0pt;font-family:宋体;">下载并调试<span>eintdrv</span>和<span>interrupt</span>。 <span></span></span> </p> <p class="MsoNormal"> <span> </span> </p> <p class="MsoNormal"> <b><span style="font-family:宋体;color:black;">三、实验步骤</span><span style="color:black;"></span></b> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <b><span style="font-size:12.0pt;font-family:宋体;">操作过程<span></span></span></b> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">串口通信<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">1</span><span style="font-size:12.0pt;font-family:宋体;">)打开实验箱,用仿真器将实验箱与电脑相连,接好串行接口,网线,并且给实验箱接上电源。<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">2</span><span style="font-size:12.0pt;font-family:宋体;">)启动电脑,打开超级终端,<span>wmware</span>虚拟机。<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">3</span><span style="font-size:12.0pt;font-family:宋体;">)在虚拟机里编译<span>serial</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>cd<span> </span>/home/cvtech/jx2440/examples/serial</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">4)</span><span style="font-size:12.0pt;font-family:宋体;">输入指令,读<span>secial.c</span>代码并将<span>dev ="/dev/s3c24*_serial0"</span>修改成<span>dev ="/dev/s3c2440_serial0"</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>gedit serial.c</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">5</span><span style="font-size:12.0pt;font-family:宋体;">)编译<span>serial.c</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>make serial</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">6)</span><span style="font-size:12.0pt;font-family:宋体;">启动目标机,按<span>7</span>,启动<span>uboot</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">7</span><span style="font-size:12.0pt;font-family:宋体;">)在超级终端中输入指令,将编译好的<span>serial</span>挂载到目标机中<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span><span> </span>mount 192.168.1.180:/tftpboot/ /mnt/nfs/ -o nolock</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">8)</span><span style="font-size:12.0pt;font-family:宋体;">用指令查看目标机中的设备驱动,看到<span>s3c2440_serial0</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>ls <span> </span>/dev/s3c*</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">9</span><span style="font-size:12.0pt;font-family:宋体;">)进入<span>/mnt/nfs</span>目录中,运行编译好的<span>serial</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>cd /mnt/nfs</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>./serial</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">中断实验<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">中断串口实验进程,重启<span>uboot</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">进入工作目录,查看<span>serial</span>驱动程序源代码<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">cd <span> </span>/home/cvtech/jx2440/linux-2.6.13/drivers/char</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">gedit eintdrv.c</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">3)</span><span style="font-size:12.0pt;font-family:宋体;">在<span>linux-2.6.13</span>目录下,<span>make menuconfig</span>启动配置菜单,进入<span>Devices Drivers->Character devices </span>将<span>3c2440 Interrupt Driver </span>设置成用空格符设置成<span>M</span>,即动态加载,保存,退出<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">4</span><span style="font-size:12.0pt;font-family:宋体;">)编译内核,生成<span>eintdrv.ko</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>make zImage</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>make modules</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">5)</span><span style="font-size:12.0pt;font-family:宋体;">将<span>eintdrv.ko</span>复制到<span>/tftpboot</span>目录下<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>cp drivers/char/eintdrv.ko /tftpboot</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">6)</span><span style="font-size:12.0pt;font-family:宋体;">进入<span>examples</span>目录编译<span>interrupt</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>cd /home/cvtech/jx2440/examples/interrupt</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">make interrupt</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>7)</span><span style="font-size:12.0pt;font-family:宋体;">启动目标机,按<span>7</span>,启动<span>uboot</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">8</span><span style="font-size:12.0pt;font-family:宋体;">)在超级终端中输入指令,将编译好的<span>serial</span>挂载到目标机中<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span><span> </span>mount 192.168.1.180:/tftpboot/ /mnt/nfs/ -o nolock</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">8)</span><span style="font-size:12.0pt;font-family:宋体;">输入指令,载入驱动模块<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">Insmod eintdrv.ko</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">Mkmod /dev/eint c 98 0</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">9)</span><span style="font-size:12.0pt;font-family:宋体;">运行中断程序<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">./interrupt</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <b><span style="font-size:12.0pt;font-family:宋体;">实验结果<span></span></span></b> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">串口通信<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">在超级终端中输入一个字符串,输出<span>len </span>字符串的长度和该字符串。<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">中断实验<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">按下外部中断按键从超级终端中输出<span> extern irq 2 handled</span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <b><span style="font-size:12.0pt;font-family:宋体;">核心代码<span></span></span></b> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">串口实验:<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">if (fd>0)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>set_speed(fd,115200);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>else</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>printf("Can't Open Serial Port!\n");</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>exit(0);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>}</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>if (set_Parity(fd,8,1,'N')== FALSE)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>printf("Set Parity Error\n");</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>exit(1);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>}</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>while(1)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>while((nread = read(fd,buff,512))>0)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>printf("\nLen %d\n",nread);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>buff[nread+1]='\0';</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>printf("\n%s",buff);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span><span> </span><span> </span>}</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span><span> </span>}</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <b><span style="font-size:12.0pt;font-family:宋体;">中断实验:<span></span></span></b> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">中断处理函数<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">static irqreturn_t eint2_handler(int irq, void *dev_id)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>printk("\rextern irq 2 handled");</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>return 0;</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">}</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">设备打开函数<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">static int device_open(struct inode *inode, struct file *file)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>int i;</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>int err = 0;</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>err = request_irq(IRQ_EINT3, eint2_handler, IRQ_TYPE_EDGE_FALLING, DEVICE_NAME, 0);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>if (err)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>disable_irq(IRQ_EINT3);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>free_irq(IRQ_EINT3, 0);</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>return -EBUSY;</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>}</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>return 0;</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">}</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">设备释放函数<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">static int device_release(struct inode *inode, struct file *file)</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">{</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"><span> </span>DbgPrintk(("'/dev/eint' device release\n"));</span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;"> </span> </p> <p class="MsoNormal"> <span style="color:black;"> </span> </p> <p class="MsoNormal"> <b><span style="font-family:宋体;color:black;">四、实验心得</span><span style="color:black;"></span></b> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">组长刘爽说:此次实验,重点在于理解实验的程序内容。一是在<span>Linux</span>下如何进行串口通信,而是对于<span>Linux</span>下的中断,必须为其写一个硬件驱动程序,然后是需将程序同步到目标机再运行。<span></span></span> </p> <p class="MsoNormal" style="text-align:left;text-indent:21.75pt;" align="left"> <span style="font-size:12.0pt;font-family:宋体;">组员刘雪莲说:我们编译了<span>eintdrv.c</span>后,用<span>ll</span>查看<span>eintdrv.o</span>的时间戳,发现跟我们编译的时间不同,删了之后再编译发现不成功,但是进行实验的后续操作发现依然运行出结果,下午听老师说才知道原因。</span><span style="color:black;"></span> </p> <p class="MsoNormal" style="margin-left:10.5pt;"> <span style="color:black;"> </span> </p> <p class="MsoNormal" style="margin-left:29.25pt;"> <span style="color:black;"> </span> </p> <p class="MsoNormal" style="margin-left:29.25pt;"> <span style="color:black;"> </span> </p> <p class="MsoNormal" style="margin-left:29.25pt;"> <span style="color:black;"> </span> </p> <p class="MsoNormal" style="margin-left:29.25pt;"> <span style="color:black;"> </span> </p> <p class="MsoNormal"> <span> </span> </p>
TIPxqLilp