📄 skyeye硬件模拟平台,第三部分 硬件仿真实现之二.htm
字号:
name=IDA2IJMB><B></B></A><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc
border=1><TBODY>
<TR>
<TD><PRE><CODE>
typedef struct sa_io_t{
/*interrupt controller*/
u32 icpr; u32 icip; u32 icfp; u32 icmr; u32 iccr; u32 iclr;
/*real time clock(RTC)*/
u32 rcnr; u32 rtar; u32 rtsr; u32 rttr; u32 rt_count;
u32 rt_scale; /*core frequence to 32.768K*/
/*os timer*/
u32 oscr; u32 osmr0, osmr1, osmr2, osmr3; u32 ower; u32 ossr;
u32 oier; u32 os_scale;
/*uart3 controller*/
u32 utcr0; u32 utcr1; u32 utcr2; u32 utcr3; u32 utdr; u32 utsr0;
u32 utsr1;
}sa_io_t;
</CODE></PRE></TD></TR></TBODY></TABLE>
<P>在上述结构中,包括四部分的I/O寄存器组:与中断控制相关的寄存器、与实时时钟控制相关的寄存器、与OS timer相关的寄存器和与UART
3(UART0-2在内核中没有使用,这里就没有模拟了)相关的寄存器。下面对一些关键的I/O模拟函数进行介绍:</P>
<UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/">
<LI>sa_io_reset:完成硬件执行reset后的寄存器状态模拟,这里只是把sa_io_t结构的变量sa_io清零。
<LI>sa_io_do_cycle:每个指令节拍中都会执行一次,模拟实时时钟和OS timer的累加、判断UART
是否有输入、根据外设的状态产生中断(由skyeye_mach_sa.c中的函数refresh_irq实现)等硬件操作。
<LI>sa_io_read/write_byte/halfword/word:模拟CPU读写中断处理、实时时钟、OS
timer、UART3相关I/O寄存器的硬件操作,模拟读/写UTDR寄存器(映射地址为0x80050014),实际上是执行UART输入/输出操作。
</LI></UL>
<P>加上MMU/CACHE和内存模拟,SkyEye就可以很好地模拟基于StrongARM的开发板,而且ARM
Linux针对真实基于StrongARM的adsbitsy开发板的内核和文件系统可以很好地在SkyEye上运行。</P>
<P><A name=IDAJJJMB><SPAN class=atitle2>9.
基于XScale的Lubbock开发板</SPAN></A><BR>支持XScale体系结构CPU的开发板目前已有数款,如代号为lubbock、
cerf、
idp等的开发板,这里分析的开发板是Intel推出的代号为Lubbock的经典开发板,它目前支持PXA25x系列CPU,有64MBytes
SDRAM、32MBytes Boot ROM、32MBytes Flash
ROM、USB插槽、PCMICA插槽、CF卡插槽、带有640x480的LCD显示器,可以称之为一个小型的全功能计算机。</P>
<P>ARM
Linux对XScale体系结构的支持已经放到Linux-2.6.x内核中,目前由R.King维护,且已经支持多款基于XScale体系结构的开发板,而lubbock开发板是ARM
Linux最早支持且支持得很全面的开发板之一。通过分析基于XScale体系结构的PXA250内部细节和ARM
Linux内核源码,SkyEye只需保存如下数据结构描述的寄存器、内部数据(这些寄存器和内部数据的值可能被操作系统或硬件改变)和一些只读寄存器就基本可以支持ARM
Linux内核和基本命令行用户界面以及相关应用程序。查看pxa_io_read/write_byte/halfword/word函数的实现可以看到所有操作系统需要访问的寄存器。与MMU/CACHE相关的模拟实现可参考"SkyEye的MMU/CACHE和Memory模拟实现"一节。</P><A
name=IDAQJJMB><B></B></A><BR>
<TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc
border=1><TBODY>
<TR>
<TD><PRE><CODE>
typedef struct pxa_io_t{
/*interrupt controller*/
u32 icpr; u32 icip; u32 icfp; u32 icmr; u32 iccr; u32 iclr;
/*real time clock(RTC)*/
u32 rcnr; u32 rtar; u32 rtsr; u32 rttr;
u32 rt_count; u32 rt_scale;
/*os timer*/
u32 oscr; u32 osmr0, osmr1, osmr2, osmr3; u32 ower; u32 ossr;
u32 oier; u32 os_scale;
/*full function uart controller*/
u32 ffrbr; u32 ffthr; u32 ffier; u32 ffiir; u32 fffcr; u32 fflcr;
u32 ffmcr; u32 fflsr; u32 ffmsr; u32 ffspr; u32 ffisr; u32 ffdll;
u32 ffdlh;
/*bluetooth function uart controller*/
u32 btrbr; u32 btthr; u32 btier; u32 btiir; u32 btfcr; u32 btlcr;
u32 btmcr; u32 btlsr; u32 btmsr; u32 btspr; u32 btisr; u32 btdll;
u32 btdlh;
/*standard uart controller*/
u32 strbr; u32 stthr; u32 stier; u32 stiir; u32 stfcr; u32 stlcr;
u32 stmcr; u32 stlsr; u32 stmsr; u32 stspr; u32 stisr; u32 stdll;
u32 stdlh;
/*core clock*/
u32 cccr; u32 cken; u32 oscc;
}pxa_io_t;
</CODE></PRE></TD></TR></TBODY></TABLE>
<P>下面对一些关键的I/O模拟函数进行介绍:</P>
<UL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/">
<LI>pxa_io_reset:完成硬件执行reset后的寄存器状态模拟。这里除了把sa_io_t结构的变量sa_io清零,还有执行如下指令
pxa_io.cccr = 0x121; // 1 0010 0001 pxa_io.cken = 0x17def; 这是PXA25x
CPU在重启(reset)时,与Core Clock控制器相关的两个寄存器的初始值。
<LI>pxa_io_do_cycle:每个指令节拍中都会执行一次,模拟实时时钟和OS timer的累加、判断Full Function
UART是否有输入、根据外设的状态产生中断(由skyeye_mach_pxa.c中的函数refresh_irq实现)等硬件操作。
<LI>pxa_io_read/write_byte/halfword/word:模拟CPU读写中断处理、实时时钟、OS timer、Full
Function UART、Core
Clock控制器相关I/O寄存器的硬件操作,模拟读FFRBR寄存器(映射地址为0x40100000)/写FFTHR寄存器(映射地址为0x40100000),实际上是执行UART输入/输出操作。
<LI></LI></UL>
<P>加上MMU/CACHE和内存模拟,SkyEye就可以很好地模拟基于XScale体系结构的开发板,而且ARM
Linux针对真实基于XScale体系结构的lubbock开发板的内核和文件系统可以很好地在SkyEye上运行。</P>
<P><A name=resources><SPAN class=atitle2>参考资料 </SPAN></A>
<UL>
<LI><A
href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part1/index.shtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">SkyEye硬件模拟平台, 第一部分: SkyEye 介绍</A><BR><BR>
<LI><A
href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part2/index.shtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">SkyEye硬件模拟平台,第二部分: 安装与使用</A><BR><BR>
<LI><A
href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s1/index.shtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">SkyEye硬件模拟平台,第三部分: 硬件仿真实现之一</A><BR><BR>
<LI>在 <A href="http://www-900.ibm.com/developerworks/cn/linux/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">developerWorks Linux 专区</A> 可以找到更多为 Linux 开发者准备的参考资料。
<BR><BR></LI></UL>
<P></P>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><A name=author1></A><SPAN class=atitle2>关于作者</SPAN><BR>陈渝,
清华大学,通过<A href="mailto:yuchen@tsinghua.edu.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dw="http://www.ibm.com/developerWorks/"
trackclick="no">yuchen@tsinghua.edu.cn</A>
可以和他联系。</TD></TR></TBODY></TABLE><BR><IMG height=10 alt=""
src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files/c.gif" width=100 border=0><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD align=right width="100%"><A
href="http://www-900.ibm.com/developerworks/cn/linux/l-skyeye/part3/s2/index.shtml#top">到页首</A></TD>
<TD width=5><IMG height=1 alt=""
src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files/c.gif" width=5 border=0></TD></TR>
<TR vAlign=top>
<TD bgColor=#000000 colSpan=2><IMG height=1 alt=""
src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files/c.gif" width=100
border=0></TD></TR>
<TR vAlign=top>
<TD bgColor=#ffffff colSpan=2><IMG height=8 alt=""
src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files/c.gif" width=100
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=top>
<TD>
<FORM
action=/developerWorks/cn/cnratings.nsf/RateArticle?CreateDocument
method=post><INPUT type=hidden value="SkyEye硬件模拟平台,第三部分: 硬件仿真实现之二"
name=ArticleTitle><INPUT type=hidden value=Linux name=Zone><INPUT
type=hidden
value=/developerWorks/cn/thankyou/thankyou_feedback.shtml
name=RedirectURL>
<SCRIPT language=javascript>document.write('<input type="HIDDEN" name="url" value="'+location.href+'">');</SCRIPT>
<A name=rating><B>您对这篇文章的看法如何?</B></A>
<TABLE cellSpacing=0 cellPadding=0 width=600 border=0>
<TBODY>
<TR>
<TD colSpan=5><IMG height=8 alt=""
src="D:\新建文件夹\SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files\c(1).gif"
width=100 border=0></TD></TR>
<TR vAlign=top>
<TD width="16%"><INPUT type=radio value=5
name=Rating>真棒!(5)</TD>
<TD width="20%"><INPUT type=radio value=4 name=Rating>好文章
(4)</TD>
<TD width="24%"><INPUT type=radio value=3 name=Rating>一般;尚可
(3)</TD>
<TD width="22%"><INPUT type=radio value=2 name=Rating>需提高
(2)</TD>
<TD width="18%"><INPUT type=radio value=1 name=Rating>太差!
(1)</TD></TR></TBODY></TABLE><BR><B>建议?</B><BR><TEXTAREA name=Comments rows=5 wrap=virtual cols=60></TEXTAREA><BR><BR><INPUT type=submit value=提交反馈意见></FORM></TD></TR>
<TR vAlign=top>
<TD bgColor=#ffffff><IMG height=8 alt=""
src="D:\新建文件夹\SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files\c(1).gif" width=100
border=0></TD></TR></TBODY></TABLE></TD>
<TD width=1><IMG height=1 alt=""
src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files/c.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD align=right>(c) Copyright IBM Corp. 2001, (c) Copyright IBM China
2001, All Right Reserved</TD></TR>
<TR vAlign=top>
<TD class=bbg height=21> <A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/index.shtml&origin=dwhead">关于
IBM</A><SPAN class=divider> | </SPAN><A
class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/privacy/index.shtml&origin=dwhead">隐私条约</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/legal/index.shtml&origin=dwhead">使用条款</A><SPAN
class=divider> | </SPAN><A class=mainlink
href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/contact/index.shtml&origin=dwhead">联系
IBM</A></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript1.2 src="SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files/stats.js"
type=text/javascript></SCRIPT>
<NOSCRIPT><IMG height=1 alt=""
src="D:\新建文件夹\SkyEye硬件模拟平台,第三部分 硬件仿真实现之二.files\c(2).gif" width=1
border=0></NOSCRIPT> </A></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -