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

📄 vxworks bsp和启动过程.htm

📁 bsp基本概念
💻 HTM
📖 第 1 页 / 共 3 页
字号:
      <LI>
      <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Initalize and 
      start the wind kernel</FONT> </P>
      <LI>
      <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Spawn a tast 
      to complete system initialization</FONT> </P></LI></UL></BLOCKQUOTE>
  <UL>
    <LI>
    <P style="LINE-HEIGHT: 150%"><STRONG><FONT lang=ZH-CN face=宋体 size=4>System 
    initialization task will initialize support for end-user specified 
    facilities,and start the end-user's application</FONT></STRONG> 
</P></LI></UL></BLOCKQUOTE>
<P style="LINE-HEIGHT: 150%"> </P>
<P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
size=5><STRONG>二.系统启动顺序</STRONG></FONT> 
<UL>
  <LI>
  <P style="LINE-HEIGHT: 150%"><BIG><BIG><STRONG>VxWorks 
  image</STRONG></BIG></BIG> </P></LI></UL>
<BLOCKQUOTE>
  <P 
  style="LINE-HEIGHT: 150%"><BIG>分为在ROM中运行和在RAM中运行两种.两者启动顺序的区别在于sysInit()函数的调用.该函数在RAM运行的VxWorks中初始化RAM.</BIG></P></BLOCKQUOTE>
<BLOCKQUOTE>
  <UL>
    <LI>
    <P style="LINE-HEIGHT: 150%"><STRONG><FONT lang=ZH-CN face=宋体 
    size=5><SMALL>ROM中运行的VxWorks</SMALL></FONT></STRONG> </P></LI></UL>
  <BLOCKQUOTE>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>VxWorks在ROM中运行,即写入ROM中的VxWorks是非压缩的,不需要解压,系统直接跳到ROM的首地址,运行VxWorks.注意:ROM运行的VxWorks并不支持所有的主扳,应以主扳手册为准.</FONT></P>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>文件romInit.s中的romInit()----&gt;文件bootInit.c中的romStart()----&gt;文件usrConfig.c中的usrInit()-----&gt;sysHwInit()-----&gt;usrKernelInit()-----&gt;KernelInit(usrRoot,...)</FONT></P></BLOCKQUOTE>
  <BLOCKQUOTE>
    <P style="LINE-HEIGHT: 150%"><BIG><FONT face=宋体>&nbsp;&nbsp; 
    VxWorks在ROM中运行主要是为了节省RAM空间,以便应用程序有更大的空间运行.只把VxWorks 
    image的data段复制到RAM的LOCAL_LOW_ADRS, text部分留在ROM并在ROM中执行.</FONT></BIG></P>
    <P style="LINE-HEIGHT: 150%"><FONT 
    face=宋体><BIG>ROM中运行的VxWorks缺点是运行速度慢.</BIG></FONT></P></BLOCKQUOTE>
  <UL>
    <LI>
    <P style="LINE-HEIGHT: 150%"><STRONG><FONT lang=ZH-CN face=宋体 
    size=4>RAM中运行的VxWorks</FONT></STRONG> </P></LI></UL>
  <BLOCKQUOTE>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>VxWorks在RAM中运行,即写入ROM中的Boot或VxWorks 
    Image是压缩的,需要先解压copy所有的text和data到RAM的LOCAL_LOW_ADRS中,下面sysInit()主要是初始化RAM用的,系统直接跳到RAM的首地址,运行VxWorks</FONT></P>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>usrInit()前面不压缩,即romInit(),romStart()不能压缩.</FONT></P>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>文件romInit.s中的romInit()----&gt;文件bootInit.c中的romStart()----&gt;sysaLib.s中的sysInit()----&gt;文件usrConfig.c中的usrInit()-----&gt;sysHwInit()-----&gt;usrKernelInit()-----&gt;KernelInit(usrRoot,...)</FONT></P>
    <P style="LINE-HEIGHT: 150%"><FONT face=宋体><BIG>&nbsp; RAM运行的Boot或VxWorks 
    image的text段或data段会从ROM复制到RAM,在RAM中运行.</BIG></FONT></P></BLOCKQUOTE>
  <BLOCKQUOTE>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>其中<STRONG>usrRoot()</STRONG>是VxWorks启动的第一个任务,由它来初始化 
    driver,network等</FONT></P>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4><STRONG>描述:</STRONG> <STRONG>romInit.s</STRONG> first execute in 
    flash,minal initiliz,then jump to romStart.</FONT></P></BLOCKQUOTE>
  <BLOCKQUOTE>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>&nbsp; 
    <STRONG>romStart()</STRONG> 
    开始装载和解压image到RAM,sysaLib.s是在RAM中执行的第一个函数.</FONT></P></BLOCKQUOTE></BLOCKQUOTE>
<UL>
  <LI>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=5><STRONG>BootROM 
  image</STRONG></FONT> </P></LI></UL>
<BLOCKQUOTE>
  <UL>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=5><STRONG><SMALL>BootROM image</SMALL></STRONG></FONT> </P></LI></UL>
  <BLOCKQUOTE>
    <P style="LINE-HEIGHT: 150%"><BIG>最少的系统初始化,主要用于启动装载VxWorks 
    image.一般有压缩和不压缩两种形式,如bootrom和boot_uncmp.与VxWorks 
    image的区别在于一个Bootrom调用bootConfig.c,而VxWorks调用usrConfig.c.</BIG></P>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>文件romInit.s中的romInit()----&gt;文件bootInit.c中的romStart()----&gt;文件bootConfig.c中的usrInit()-----&gt;sysHwInit()-----&gt;usrKernelInit()-----&gt;KernelInit(usrRoot,...)</FONT></P></BLOCKQUOTE>
  <BLOCKQUOTE>
    <P style="LINE-HEIGHT: 150%">&nbsp;&nbsp;&nbsp; 其中 <FONT 
    face=宋体><BIG>/target/config/all/bootConfig.c是Boot ROM设置模块.用于通过网络加载VxWorks 
    image.</BIG></FONT></P>
    <P 
    style="LINE-HEIGHT: 150%"><BIG>usrRoot()----&gt;bootCmdLoop(void)命令行选择,或autobooting-----&gt;bootLoad(pLine, 
    &amp;entry)加载模块到内存(网络,TFFS,TSFS...)-----&gt;netifAttach()----&gt;go(entry)-----&gt;(entry)()</BIG>从入口<BIG>开始执行,不返回.</BIG></P></BLOCKQUOTE></BLOCKQUOTE>
<UL>
  <LI>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>各个函数的主要作用</FONT> 
  </P></LI></UL>
<BLOCKQUOTE>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
  size=4><STRONG>romInit()</STRONG>-----power up,disable interrupt,put boot type 
  on the stack,clears caches.</FONT></P>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
  size=4><STRONG>romStart()</STRONG>-----load Image Segments into 
RAM.</FONT></P>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
  size=4><STRONG>usrInit()</STRONG>-----Interrupt lock out,save imformation 
  about boot type,handle all the Initialization before the kernel is actually 
  started,then starts the kernel execution to create an initial task 
  usrRoot().This task completes the start up.</FONT></P>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
  size=4><STRONG>sysHwInit()</STRONG>-----Interrup locked,Initializes 
  hardware,registers,activation kernel</FONT></P>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
  size=4><STRONG>KernelInit(usrRoot,...)-----</STRONG></FONT>
  <UL>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Initializes and 
    starts the kernel.</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Defines system 
    memory partition.</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Activates a 
    task tUsrRoot to complete initalization.</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Unlocks 
    inierrupts.</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Uses 
    usrInit()stack.</FONT> </P></LI></UL></BLOCKQUOTE>
<BLOCKQUOTE>
  <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
  size=4><STRONG>usrRoot()</STRONG></FONT>
  <UL>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>初始化内存分区表(memory 
    partition library)</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>初始化系统系统时钟(system clock)</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>初始化输入输出系统(I/O 
    system)----可选</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>Create 
    devices----可选</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>设置网络(Configure 
    network)--------可选</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 
    size=4>激活WDB目标通信(Activate WDB agent)---------可选</FONT> </P>
    <LI>
    <P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>调用程序(Activate 
    application)</FONT> </P></LI></UL></BLOCKQUOTE>
<P style="LINE-HEIGHT: 150%"> </P>
<P style="LINE-HEIGHT: 150%"><FONT lang=ZH-CN face=宋体 size=4>VxWorks 
Image在RAM中解压的位置</FONT></P>
<P> </P>
<DIV align=center>
<CENTER>
<TABLE height=282 width="63%" border=1>
  <TBODY>
  <TR>
    <TD align=middle width="48%" height=258 rowSpan=4>
      <TABLE height=261 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width="100%" height=24></TD></TR>
        <TR>
          <TD width="100%" height=18>
            <P align=right>RAM Low Address</P></TD></TR>
        <TR>
          <TD width="100%" height=27></TD></TR>
        <TR>
          <TD width="100%" height=18></TD></TR>
        <TR>
          <TD width="100%" height=23></TD></TR>
        <TR>
          <TD width="100%" height=22>
            <P align=right>RAM High Address</P></TD></TR>
        <TR>
          <TD width="100%" height=31></TD></TR>
        <TR>
          <TD width="100%" height=37></TD></TR>
        <TR>
          <TD width="100%" height=37></TD></TR></TBODY></TABLE></TD>
    <TD align=middle width="52%" height=27></TD></TR>
  <TR>
    <TD align=middle width="52%" height=99>VxWorks运行的位置</TD></TR>
  <TR>
    <TD align=middle width="52%" height=44>Boot 
    image由ROM解压后Copy的位置,即bootRom区</TD></TR>
  <TR>
    <TD align=middle width="52%" height=88></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>RAM Low Address,RAM High Address和有关定义在BSP,config.h,makefile文件中定义.可参见<A 
href="http://drew.nease.net/mypage/example/config.htm" target=_blank><FONT 
lang=ZH-CN face=System>BSP配置文件及生成下载</FONT></A></P>
<P> </P>
<P>VxWorks 在ROM中的情况</P>
<DIV align=center>
<CENTER>
<TABLE height=179 width="51%" border=1>
  <TBODY>
  <TR>
    <TD align=middle width="36%" height=161 rowSpan=3> 
      <TABLE height=212 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width="100%" height=18>ROM 低高地址位</TD></TR>
        <TR>
          <TD width="100%" height=18></TD></TR>
        <TR>
          <TD width="100%" height=18></TD></TR>
        <TR>
          <TD width="100%" height=18></TD></TR>
        <TR>
          <TD width="100%" height=72>
            <P align=center> </P>
            <P align=center> </P></TD></TR>
        <TR>
          <TD width="100%" height=44>ROM 低地址位</TD></TR></TBODY></TABLE></TD>
    <TD align=middle width="64%" height=45></TD></TR>
  <TR>
    <TD width="64%" bgColor=#00ffff height=121>压缩的VxWorks Imgage</TD></TR>
  <TR>
    <TD width="64%" bgColor=#00ffff 
      height=1>没有压缩的romInit.s和romStart()在ROM的起始位置,系统power 
      up后,从这个起始位开始执行,即执行romInit(),起始位置由硬件定义,一般为0x00000000</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>注:浅蓝色为整个VxWorks Image.</P>
<P style="LINE-HEIGHT: 150%">其中 RAM_LOW_ADRS, RAM_HIGH_ADRS 等一些地址在makefile 和BSP 
config.h中定义.可参见<A href="http://drew.nease.net/mypage/example/config.htm" 
target=_blank><FONT lang=ZH-CN face=System>BSP配置文件及生成下载</FONT></A><BR></P>
<P> </P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -