⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skyeye硬件模拟平台,第三部分 硬件仿真实现之二.htm

📁 你想没有硬件就跑μc OS吗
💻 HTM
📖 第 1 页 / 共 4 页
字号:
      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>&nbsp;&nbsp;<A class=mainlink 
      href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/index.shtml&amp;origin=dwhead">关于 
      IBM</A><SPAN class=divider>&nbsp;&nbsp;|&nbsp;&nbsp;</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&amp;origin=dwhead">隐私条约</A><SPAN 
      class=divider>&nbsp;&nbsp;|&nbsp;&nbsp;</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&amp;origin=dwhead">使用条款</A><SPAN 
      class=divider>&nbsp;&nbsp;|&nbsp;&nbsp;</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&amp;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 + -