📄 ——利用coldfire uclinux实现数据采集和传输.htm
字号:
<P style="TEXT-INDENT: 30px">MCF5307_WR_CS_CSCR5(imm,0x3d40);
采用8位的读方式</P>
<P style="TEXT-INDENT: 30px">MCF5307_WR_CS_CSMR5(imm,0x01FF0001);
空间大小为1M</P>
<P
style="TEXT-INDENT: 30px">将SPM控制的引脚和MCF5307的并口引脚相连,这产对SPM的控制就只需设置并口的相应位了。</P>
<P style="TEXT-INDENT: 0px"><B>3 uClinux下的实时性</B></P>
<P
style="TEXT-INDENT: 30px">uClinux并不是一个实时操作系统(RTOS),如何使用uClinux完成有实时性要求的数据采集是需要考虑的问题。由于应用中只一个实时的任务——从SPM中读取数据,所以采用中断的方式来对数据采集完的信号提供实时响应。下面的代码用来向uClinux注册IRQ7中断处理程序:result=request_irq(ECM_IRQ,ecm_interrupt,0,“ecm”,NULL);</P>
<P
style="TEXT-INDENT: 30px">在中断处理程序中,先关闭中断,因为中断嵌套在这里是没有意义的,还有一个重要的原因是SPM中断信号的低电平持续时间比较长。CPU是利用低电平来标志断信号的,所以CPU可能在SPM的一个中断信号中检测到多次中断。关闭中断后,从SPM的RAM中读取数据。由于SPM和xBoard之间的连接已得到保证,SPM的内部RAM成为uClinux的内存空间的一部分,所以读的工作是很简单的,只是将数据从一个地址读到另外一个地址,读完数据后打开中断。读数据之间发生的中断都会被忽略。读数据块的大小为4096字节,读完所有的数据需要2ms。所以在采集周期低于2ms的情况下,系统无法正常工作。不过这个指标低于应用的要求。<BR><IMG
height=323 hspace=35
src="——利用ColdFire uClinux实现数据采集和传输.files/10b.gif" width=486
vspace=10 border=0><BR><B>4 数据的临时存放</B></P>
<P
style="TEXT-INDENT: 30px">xBoard上并没有大的存储设备,所以uClinux采集的数据必须及时地传送出去。以太网上通过交换机连接着多个设备,在网络繁忙的时候并不能保证数据会被及时地传出去。解决这个问题的方法是开辟一个缓冲区,将暂时无法传出去的数据放在缓冲区中。</P>
<P
style="TEXT-INDENT: 30px">由于没有MMU的支持,uClinux不能提供内存保护机制,进程可以随意读取任何内存地址。这样,在带来方便的同时也增加了一些麻烦。方便的一面表现在可以在进程中开辟缓冲区,在内核中用同样的地址使用缓冲区;不利的一方面表现在开辟动态内存必须十分小心,不能和其它进程发生重叠。</P>
<P
style="TEXT-INDENT: 30px">在进程中开辟了50个数据缓冲片,这些缓冲片通过三个双向链表维持形成缓冲区。所有的缓冲片被挂在一个称为list的双向链表中,退出进程的时候,应该将这些动态内存释放。同时,将存有有效数据(即尚未被发送出去的数据)的缓冲片放在称为dirty的双向链表中,将可以使用的缓冲片放在称为clean的双向链表中。中断处理程序每次从clean链表中取得一个缓冲片,存入数据后放到dirty链表中;相反,发送进程每次从dirty队列中取一个缓冲片,发送其保存的数据,然后把它放到clean链表中。这样可以在一定程序上为网络速度的稳定提供缓冲。</P>
<P style="TEXT-INDENT: 0px"><B>5 uClinux上运行任务的分析</B></P>
<P
style="TEXT-INDENT: 30px">在uClinux上运行了三个任务:读取采集数据、通过以太网发送数据、接收和执行来自ICS的命令。其中的读取采集数据任务对实时性有要求,把它用中断处理程序来实现,而其它的两个任务则通过用户进程来实现。通过以太网发送数据的任务和读取采集数据的任务其享一个缓冲区,通过ioclt函数在它们它们传递缓冲区双向链表的地址。所以还需要为SPM注册一个驱动程序,这也是在uClinux操作中比较特别的进程和内核通信的方法。同时,把对SPM的设置和查询等操作也包装在这个驱动程序里同,这些操作都是通过ioctl函数向程提供接口。注册驱动程序的函数是:</P>
<P
style="TEXT-INDENT: 30px">result=register_chrdev(ECM_MAJOR,“ecm”,&ecm_fops);可见,这里把SPM作为一个字符型的设备,由于缓冲区是共享,所以必须提供一个锁相制,使得在某个进程向缓冲片中写数据时,其它的进程不读或写该缓冲片。</P>
<P
style="TEXT-INDENT: 30px">UClinux不仅在信息家电、低端网络设备和工业控制领域中有较广的应用,而且在简单的数据采集和传输方面也有了应用方案。
</P>
<P></P></DIV></TD></TR>
<TR>
<TD align=middle height=15>
<TABLE cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD>
<DIV></DIV></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2>
<TABLE cellSpacing=0 cellPadding=0 width="80%" border=0>
<TBODY>
<TR>
<TD width=75>【<A href="javascript:doPrint();">打印本稿</A>】</TD>
<TD width=8></TD>
<TD width=75>
<P>【<A
href="http://www.21ic.com/new_info/news/review.asp?title=利用ColdFire uClinux实现数据采集和传输target="
_blank?>发表评论</A>】</P></TD>
<TD width=10></TD>
<TD width=79>【<A
href="http://www.21ic.com/new_info/news/sendmail.asp?num=利用ColdFire uClinux实现数据采集和传输">推荐</A>】</TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right height=2></TD></TR>
<TR>
<TD align=right height=2><A href="javascript:window.close();"><IMG
height=20 src="——利用ColdFire uClinux实现数据采集和传输.files/close_c.gif"
width=77 border=0 name=Image161></A><FONT
color=#ffffff>----</FONT></TD></TR></TBODY></TABLE><BR><BR>
<TABLE cellSpacing=0 cellPadding=0 width=520 align=center border=0>
<TBODY>
<TR>
<TD vAlign=bottom align=middle width=114 bgColor=#999a76
height=1><IMG height=1
src="——利用ColdFire uClinux实现数据采集和传输.files/blank.gif" width=1></TD>
<TD width=466 height=1></TD></TR>
<TR>
<TD align=middle width=114 bgColor=#ece8db height=19>相关新闻</TD>
<TD width=466 height=19></TD></TR>
<TR bgColor=#999a76>
<TD colSpan=2 height=1><IMG height=1
src="——利用ColdFire uClinux实现数据采集和传输.files/blank.gif" width=1></TD></TR>
<TR>
<TD colSpan=2 height=1></TD></TR></TBODY></TABLE>
<TABLE borderColor=#000000 cellSpacing=0 cellPadding=0 width=520
align=center border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE class=RelatedTable width="100%" border=0>
<TBODY>
<TR class=RelatedTr>
<TD class=RelatedTd>
<SCRIPT language=javascript
src="——利用ColdFire uClinux实现数据采集和传输.files/about.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR></TD>
<TD vAlign=top align=middle width=150 bgColor=#ece8db height=2>
<TABLE cellSpacing=0 cellPadding=1 width="100%" border=0>
<TBODY>
<TR>
<TD bgColor=#000000>
<TABLE cellSpacing=0 cellPadding=2 width=150 bgColor=#ece8db
border=0>
<TBODY>
<TR>
<TD>
<META content="Microsoft FrontPage 5.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId><BR><A
href="http://www.hhcn.com/chinese/cnindex.html"
target=blank>华恒<BR>(ARM,PowerPC,冷火,龙珠)</A><BR><A
href="http://www.embedon.com/" target=blank>远峰</A> <BR><A
href="http://www.21ic.com/custom/jhb/index.htm"
target=blank>复旦金海博</A><BR><A
href="http://www.emdoor.com/index.asp"
target=blank>亿道</A><BR><BR>单片机 <BR><BR><A
href="http://www.hk.renesas.com/"
target=blank>Renesas</A><BR><A
href="http://www.zlgmcu.com/tools/kaifaban.asp"
target=blank>周立功 Philips</A> <BR><A
href="http://www.strong-ic.com/" target=blank>胜创特</A> <BR><A
href="http://www.holtek.com.tw/" target=blank>盛群 Holtek</A>
<BR><A href="http://www.xhl.com.cn/"
target=blank>Cygnal单片机</A><BR><A href="http://www.lierda.com/"
target=blank>利尔达MSP430</A> <BR><BR>接口电路:<BR><BR><A
href="http://www.whjmw.com/" target=blank>金迈威</A> <BR><A
href="http://www.21ic.com/custom/maiwei/mw.htm"
target=blank>迈威</A> <BR><A href="http://www.rs232.net.cn/"
target=blank>瑞赛特</A><BR><BR><BR>存储器<BR><A
href="http://www.huazhoucn.com/"
target=blank>铁电存储器免费样品</A><BR><BR><BR>模拟器件<BR><A
href="http://www.unique-ap.com.cn/"
target=blank>Linear</A><BR><BR><BR>编程器<BR><A
href="http://www.xeltek.com.cn/"
target=blank>西尔特编程器</A><BR></TD></TR>
<TR>
<TD
height=5></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top colSpan=6></TD></TR>
<TR>
<TD vAlign=top colSpan=6 height=10></TD></TR>
<TR>
<TD vAlign=top bgColor=#999999 colSpan=6 height=2></TD></TR>
<TR>
<TD class=stxt vAlign=center align=middle colSpan=6
height=6></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
<TBODY>
<TR>
<TD class=s width=973 height=12></TD></TR>
<TR>
<TD class=s width=973 height=20>
<DIV align=center><FONT face="Arial, Helvetica, sans-serif"><!--start copyright-->
<DIV align=center><FONT color=black>
<TABLE cellSpacing=0 cellPadding=0 width=600 align=center border=0>
<TBODY>
<TR>
<TD align=middle width="100%" colSpan=2><BR>Better View:800*600 Best
View:1024x768 为了本系统能够更好的为您服务,请使用IE4.0或以上版本浏览器
<BR><BR>版权所有(C)21IC中国电子网 电话:010-82357510, 82357511 传真: 010-82357512
</TD></TR></TBODY></TABLE><!--start copyright--></FONT></DIV></FONT></DIV></TD></TR></TBODY></TABLE><BR></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -