<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/622b2eccff7f9c46a68a805b/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/622b2eccff7f9c46a68a805b/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">1.<span class="_ _0"> </span><span class="ff2">在开发<span class="_ _1"></span>基于<span class="_ _2"> </span></span>A<span class="_ _3"></span>T91RM9200<span class="_ _2"> </span><span class="ff2">处理器的嵌<span class="_ _1"></span>入式系<span class="_ _1"></span>统时,<span class="_ _1"></span>以何种<span class="_ _1"></span>方式启<span class="_ _1"></span>动系统<span class="_ _1"></span>是一个<span class="_ _1"></span>首</span></div><div class="t m0 x2 h3 y3 ff2 fs0 fc0 sc0 ls0 ws0">先要<span class="_ _1"></span>考虑<span class="_ _1"></span>的基<span class="_ _1"></span>本问<span class="_ _1"></span>题。<span class="_ _1"></span>庆幸<span class="_ _1"></span>的是<span class="_ _1"></span>,<span class="_ _4"></span><span class="ff1">A<span class="_ _3"></span>T91RM9200<span class="_ _2"> </span><span class="ff2">处理<span class="_ _1"></span>器提<span class="_ _1"></span>供了<span class="_ _1"></span>各种<span class="_ _1"></span>各样<span class="_ _1"></span>的启<span class="_ _1"></span>动方</span></span></div><div class="t m0 x2 h3 y4 ff2 fs0 fc0 sc0 ls0 ws0">式,<span class="_ _1"></span>总<span class="_ _1"></span>体<span class="_ _1"></span>上<span class="_ _1"></span>可<span class="_ _1"></span>分为<span class="_ _1"></span>从<span class="_ _1"></span>外<span class="_ _1"></span>部<span class="_ _1"></span>的<span class="_ _2"> </span><span class="ff1">DA<span class="_ _3"></span>T<span class="_ _3"></span>AFLAS<span class="_ _1"></span>H<span class="ff2">、<span class="_ _1"></span>二<span class="_ _1"></span>线<span class="_ _5"> </span></span>EEPROM<span class="_ _2"> </span><span class="ff2">或<span class="_ _2"> </span></span>8<span class="_ _2"> </span><span class="ff2">位<span class="_ _1"></span>并<span class="_ _1"></span>行<span class="_ _1"></span>存储<span class="_ _1"></span>器<span class="_ _1"></span>引<span class="_ _1"></span>导</span></span></div><div class="t m0 x2 h3 y5 ff2 fs0 fc0 sc0 ls0 ws0">启动和从内部的<span class="_ _2"> </span><span class="ff1">B<span class="_ _6"></span>OOTROM<span class="_ _2"> </span><span class="ff2">引导启动两种情况。</span></span></div><div class="t m0 x3 h3 y6 ff2 fs0 fc0 sc0 ls0 ws0">当从<span class="_ _1"></span>外<span class="_ _1"></span>部<span class="_ _1"></span>存<span class="_ _1"></span>储<span class="_ _1"></span>器启<span class="_ _1"></span>动<span class="_ _1"></span>时<span class="_ _1"></span>,<span class="_ _1"></span>存<span class="_ _1"></span>储<span class="_ _1"></span>器<span class="_ _1"></span>中的<span class="_ _1"></span>启<span class="_ _1"></span>动<span class="_ _1"></span>代<span class="_ _1"></span>码<span class="_ _1"></span>又是<span class="_ _1"></span>从<span class="_ _1"></span>那<span class="_ _1"></span>里<span class="_ _1"></span>来<span class="_ _1"></span>的呢<span class="_ _1"></span>?<span class="_ _1"></span>有<span class="_ _7"> </span><span class="ff1">3<span class="_ _2"> </span></span>种<span class="_ _1"></span>手段<span class="_ _1"></span>,<span class="_ _1"></span>可</div><div class="t m0 x1 h3 y7 ff2 fs0 fc0 sc0 ls0 ws0">以直接<span class="_ _1"></span>通过编<span class="_ _1"></span>程器将<span class="_ _1"></span>启动代<span class="_ _1"></span>码写入<span class="_ _1"></span>外部存<span class="_ _1"></span>储器,<span class="_ _1"></span>也可以<span class="_ _1"></span>通过<span class="_ _2"> </span><span class="ff1">JT<span class="_ _3"></span>AG<span class="_ _2"> </span><span class="ff2">接口从主机下<span class="_ _1"></span>载到目</span></span></div><div class="t m0 x1 h3 y8 ff2 fs0 fc0 sc0 ls0 ws0">标系<span class="_ _1"></span>统的<span class="_ _1"></span>闪存<span class="_ _1"></span>芯片<span class="_ _1"></span>,还<span class="_ _1"></span>可以<span class="_ _1"></span>由<span class="_ _2"> </span><span class="ff1">A<span class="_ _3"></span>T91RM9200<span class="_ _2"> </span><span class="ff2">处理<span class="_ _1"></span>器的<span class="_ _1"></span>内部<span class="_ _5"> </span></span>BOOTROM<span class="_ _2"> </span><span class="ff2">启动系统<span class="_ _1"></span>与主</span></span></div><div class="t m0 x1 h3 y9 ff2 fs0 fc0 sc0 ls0 ws0">机建立通信并下载所需代码再写入闪存芯片。</div><div class="t m0 x3 h3 ya ff2 fs0 fc0 sc0 ls0 ws0">那么当<span class="_ _1"></span>从内部<span class="_ _1"></span>的<span class="_ _2"> </span><span class="ff1">BOOTROM<span class="_ _2"> </span></span>启动时,所<span class="_ _1"></span>需的启<span class="_ _1"></span>动代码<span class="_ _1"></span>又是如<span class="_ _1"></span>何得到<span class="_ _1"></span>的呢?<span class="_ _1"></span>很简单<span class="_ _1"></span>,</div><div class="t m0 x1 h3 yb ff2 fs0 fc0 sc0 ls0 ws0">芯片厂商在生产芯片时就嵌入了这段代码。内嵌的启动代码被存储在<span class="_ _2"> </span><span class="ff1">A<span class="_ _3"></span>T91R<span class="_ _6"></span>M9200<span class="_ _2"> </span><span class="ff2">处</span></span></div><div class="t m0 x1 h3 yc ff2 fs0 fc0 sc0 ls0 ws0">理器的<span class="_ _1"></span>片内<span class="_ _2"> </span><span class="ff1">ROM<span class="_ _2"> </span></span>中,片内<span class="_ _2"> </span><span class="ff1">ROM<span class="_ _2"> </span></span>的起始物<span class="_ _1"></span>理地址<span class="_ _1"></span>是<span class="_ _2"> </span><span class="ff1">0x0010_0000</span>,<span class="_ _1"></span>片内<span class="_ _2"> </span><span class="ff1">SR<span class="_ _6"></span>AM<span class="_ _2"> </span><span class="ff2">的起</span></span></div><div class="t m0 x1 h3 yd ff2 fs0 fc0 sc0 ls0 ws0">始物理<span class="_ _1"></span>地址为<span class="_ _2"> </span><span class="ff1">0x0020_0000<span class="_ _1"></span></span>。我们<span class="_ _1"></span>都知道<span class="_ _5"> </span><span class="ff1">ARM<span class="_ _2"> </span></span>处理器启动<span class="_ _1"></span>时会产<span class="_ _1"></span>生复位<span class="_ _1"></span>异常,<span class="_ _1"></span>程序</div><div class="t m0 x1 h3 ye ff2 fs0 fc0 sc0 ls0 ws0">计数器<span class="_ _2"> </span><span class="ff1">PC<span class="_ _2"> </span></span>指向复位<span class="_ _1"></span>异常向<span class="_ _1"></span>量地址<span class="_ _2"> </span><span class="ff1">0x0000_0000<span class="_ _1"></span></span>,也就<span class="_ _1"></span>是说启<span class="_ _1"></span>动时首<span class="_ _1"></span>先执行<span class="_ _1"></span>的是位<span class="_ _1"></span>于</div><div class="t m0 x1 h3 yf ff2 fs0 fc0 sc0 ls0 ws0">地址<span class="_ _5"> </span><span class="ff1">0x0000_0000<span class="_ _2"> </span></span>处<span class="_ _1"></span>的<span class="_ _1"></span>指<span class="_ _1"></span>令<span class="_ _1"></span>。因<span class="_ _1"></span>此<span class="_ _1"></span>从<span class="_ _5"> </span><span class="ff1">0x0000_0000<span class="_ _2"> </span></span>到<span class="_ _5"> </span><span class="ff1">0x0010_0000<span class="_ _2"> </span></span>的<span class="_ _2"> </span><span class="ff1">1M<span class="_ _2"> </span></span>的<span class="_ _1"></span>内</div><div class="t m0 x1 h3 y10 ff2 fs0 fc0 sc0 ls0 ws0">部存储区域(内部存储区<span class="_ _5"> </span><span class="ff1">0</span>)在上电启动时的代码将决定系统的启动过程。那么是应该</div><div class="t m0 x1 h3 y11 ff2 fs0 fc0 sc0 ls0 ws0">由<span class="_ _1"></span>外<span class="_ _4"></span>部<span class="_ _4"></span>存<span class="_ _4"></span>储<span class="_ _1"></span>器<span class="_ _4"></span>中<span class="_ _4"></span>的<span class="_ _4"></span>启<span class="_ _4"></span>动<span class="_ _1"></span>代<span class="_ _4"></span>码<span class="_ _4"></span>来<span class="_ _4"></span>占<span class="_ _4"></span>据<span class="_ _1"></span>内<span class="_ _4"></span>部<span class="_ _4"></span>存<span class="_ _4"></span>储<span class="_ _1"></span>区<span class="_ _7"> </span><span class="ff1">0<span class="_ _2"> </span></span>以<span class="_ _4"></span>实<span class="_ _4"></span>现<span class="_ _4"></span>外<span class="_ _1"></span>部<span class="_ _4"></span>启<span class="_ _4"></span>动<span class="_ _4"></span>,<span class="_ _1"></span>还<span class="_ _4"></span>是<span class="_ _4"></span>应<span class="_ _4"></span>该<span class="_ _4"></span>由<span class="_ _1"></span>位<span class="_ _4"></span>于</div><div class="t m0 x1 h3 y12 ff1 fs0 fc0 sc0 ls0 ws0">0x0010_0000<span class="ff2">(<span class="_ _1"></span>内<span class="_ _1"></span>部存<span class="_ _1"></span>储<span class="_ _1"></span>区<span class="_ _2"> </span></span>1<span class="_ _1"></span><span class="ff2">)<span class="_ _1"></span>处的<span class="_ _2"> </span></span>ROM<span class="_ _2"> </span><span class="ff2">中<span class="_ _1"></span>的<span class="_ _1"></span>内嵌<span class="_ _1"></span>启<span class="_ _1"></span>动代<span class="_ _1"></span>码<span class="_ _1"></span>来占<span class="_ _1"></span>据<span class="_ _1"></span>这一<span class="_ _1"></span>空<span class="_ _1"></span>间以<span class="_ _1"></span>实<span class="_ _1"></span>现</span></div><div class="t m0 x1 h3 y13 ff2 fs0 fc0 sc0 ls0 ws0">内<span class="_ _8"></span>部<span class="_ _8"></span>启<span class="_ _8"></span>动<span class="_ _8"></span>呢<span class="_ _8"></span>?<span class="_ _8"></span>这<span class="_ _8"></span>就<span class="_ _8"></span>需<span class="_ _8"></span>要<span class="_ _8"></span>一<span class="_ _8"></span>个<span class="_ _8"></span>仲<span class="_ _8"></span>裁<span class="_ _8"></span>机<span class="_ _8"></span>制<span class="_ _8"></span>来<span class="_ _8"></span>进<span class="_ _8"></span>行<span class="_ _8"></span>选<span class="_ _8"></span>择<span class="_ _8"></span>。<span class="_ _8"></span>这<span class="_ _8"></span>就<span class="_ _8"></span>是<span class="_ _7"> </span><span class="ff1">A<span class="_ _3"></span>T91RM9200<span class="_"> </span><span class="ff2">芯<span class="_ _8"></span>片<span class="_ _8"></span>的</span></span></div><div class="t m0 x1 h3 y14 ff1 fs0 fc0 sc0 ls0 ws0">P<span class="_ _3"></span>A31/BMS<span class="_ _9"> </span><span class="ff2">引<span class="_ _4"></span>脚<span class="_ _8"></span>(<span class="_ _4"></span>在<span class="_"> </span></span>PQFP<span class="_ _5"> </span><span class="ff2">封<span class="_ _8"></span>装<span class="_ _4"></span>中<span class="_ _4"></span>为<span class="_"> </span></span>79<span class="_ _9"> </span><span class="ff2">脚<span class="_ _4"></span>,<span class="_ _8"></span>在<span class="_ _5"> </span></span>BGA<span class="_ _9"> </span><span class="ff2">封<span class="_ _4"></span>装<span class="_ _4"></span>中<span class="_ _8"></span>为<span class="_"> </span></span>A<span class="_ _6"></span>10<span class="_ _9"> </span><span class="ff2">脚<span class="_ _4"></span>)<span class="_ _8"></span>。<span class="_ _4"></span></span>BMS<span class="_ _9"> </span><span class="ff2">即</span></div><div class="t m0 x1 h3 y15 ff1 fs0 fc0 sc0 ls0 ws0">Boot Mode Select<span class="_ _1"></span><span class="ff2">(<span class="_ _1"></span>启动模<span class="_ _1"></span>式选择<span class="_ _1"></span>),若<span class="_ _5"> </span></span>BMS=1<span class="_ _1"></span><span class="ff2">,则<span class="_ _1"></span>将内部<span class="_ _1"></span>存储区<span class="_ _5"> </span></span>1<span class="_ _2"> </span><span class="ff2">的数据映<span class="_ _1"></span>射至</span></div><div class="t m0 x1 h3 y16 ff2 fs0 fc0 sc0 ls0 ws0">内部<span class="_ _1"></span>存储<span class="_ _1"></span>区<span class="_ _2"> </span><span class="ff1">0</span>,<span class="_ _1"></span>即从<span class="_ _1"></span>内部<span class="_ _1"></span>的<span class="_ _2"> </span><span class="ff1">ROM<span class="_ _2"> </span></span>启动<span class="_ _1"></span>;若<span class="_ _5"> </span><span class="ff1">BMS=0</span>,<span class="_ _1"></span>则将<span class="_ _1"></span>外部<span class="_ _1"></span>存储<span class="_ _1"></span>器的<span class="_ _1"></span>区域<span class="_ _5"> </span><span class="ff1">0<span class="_ _2"> </span></span>映射<span class="_ _1"></span>至</div><div class="t m0 x1 h3 y17 ff2 fs0 fc0 sc0 ls0 ws0">内部存储区<span class="_ _2"> </span><span class="ff1">0</span>,即从外部存储器启动。需要注意的是只有在上电启动时,该引脚具有启</div><div class="t m0 x1 h3 y18 ff2 fs0 fc0 sc0 ls0 ws0">动模式选择的功能,此后便成为标准的<span class="_ _5"> </span><span class="ff1">I/O<span class="_ _2"> </span></span>接口<span class="_ _2"> </span><span class="ff1">P<span class="_ _3"></span>A31<span class="ff2">。 令<span class="_ _2"> </span></span>BMS=1<span class="_ _a"> </span><span class="ff2">进行启动,则会在</span></span></div><div class="t m0 x1 h3 y19 ff2 fs0 fc0 sc0 ls0 ws0">内部<span class="_ _1"></span>存<span class="_ _1"></span>储<span class="_ _1"></span>区<span class="_ _2"> </span><span class="ff1">0<span class="_ _5"> </span></span>和<span class="_ _2"> </span><span class="ff1">1<span class="_ _2"> </span></span>中<span class="_ _1"></span>具<span class="_ _1"></span>有<span class="_ _1"></span>完<span class="_ _1"></span>全相<span class="_ _1"></span>同<span class="_ _1"></span>的<span class="_ _1"></span>代<span class="_ _1"></span>码<span class="_ _1"></span>,即<span class="_ _1"></span>执<span class="_ _1"></span>行<span class="_ _1"></span>内<span class="_ _1"></span>部<span class="_ _1"></span>启<span class="_ _1"></span>动<span class="_ _1"></span>程序<span class="_ _1"></span>。<span class="_ _1"></span>内<span class="_ _1"></span>部<span class="_ _1"></span>启<span class="_ _1"></span>动程<span class="_ _1"></span>序<span class="_ _1"></span>主<span class="_ _1"></span>要</div><div class="t m0 x1 h3 y1a ff2 fs0 fc0 sc0 ls0 ws0">包括两大部分:<span class="ff1">BootLoader<span class="_ _a"> </span></span>和<span class="_ _a"> </span><span class="ff1">Boot Uploader</span>。 </div><div class="t m0 x3 h3 y1b ff1 fs0 fc0 sc0 ls0 ws0">2<span class="ff2">.<span class="_ _1"></span></span>BootLoader BootLoader<span class="_ _a"> </span><span class="ff2">首<span class="_ _1"></span>先被<span class="_ _1"></span>执行<span class="_ _1"></span>,它<span class="_ _1"></span>要做<span class="_ _1"></span>的第<span class="_ _1"></span>一件<span class="_ _1"></span>事就<span class="_ _1"></span>是进<span class="_ _1"></span>行设<span class="_ _1"></span>备初<span class="_ _1"></span>始化<span class="_ _4"></span>,</span></div><div class="t m0 x1 h3 y1c ff2 fs0 fc0 sc0 ls0 ws0">主要包括:</div><div class="t m0 x3 h3 y1d ff1 fs0 fc0 sc0 ls0 ws0">? <span class="_ _1"></span><span class="ff2">通<span class="_ _1"></span>过<span class="_ _1"></span>设<span class="_ _1"></span>定<span class="_ _5"> </span></span>PMC<span class="_ _1"></span><span class="ff2">(<span class="_ _1"></span></span>P<span class="_ _6"></span>ower <span class="_ _1"></span>Management <span class="_ _1"></span>Control<span class="_ _6"></span>ler<span class="_ _4"></span><span class="ff2">)<span class="_ _1"></span>中<span class="_ _1"></span>的相<span class="_ _1"></span>应<span class="_ _1"></span>寄<span class="_ _1"></span>存<span class="_ _1"></span>器<span class="_ _1"></span>得到<span class="_ _1"></span>主<span class="_ _1"></span>振<span class="_ _1"></span>荡</span></div><div class="t m0 x1 h3 y1e ff2 fs0 fc0 sc0 ls0 ws0">器<span class="_ _1"></span>的<span class="_ _4"></span>频<span class="_ _4"></span>率<span class="_ _1"></span>和<span class="_ _4"></span>用<span class="_ _4"></span>于<span class="_ _5"> </span><span class="ff1">PLLB<span class="_ _1"></span></span>(<span class="_ _4"></span><span class="ff1">Phase<span class="_ _1"></span> <span class="_ _1"></span>Lock <span class="_ _1"></span>Loop <span class="_ _1"></span>B<span class="_ _4"></span></span>)<span class="_ _4"></span>的<span class="_ _1"></span>合<span class="_ _4"></span>适<span class="_ _1"></span>的<span class="_ _4"></span>分<span class="_ _4"></span>频<span class="_ _1"></span>,<span class="_ _4"></span>从<span class="_ _4"></span>而<span class="_ _1"></span>使<span class="_ _9"> </span><span class="ff1">PLL<span class="_ _6"></span>B<span class="_ _9"> </span><span class="ff2">输<span class="_ _1"></span>出<span class="_ _1"></span>一</span></span></div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div>
</body>
</html>