<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1045385055351077931</id><updated>2024-09-14T15:15:07.151+08:00</updated><category term="Readings"/><category term="Embedding"/><category term="Android Learning"/><category term="My Android Apps"/><category term="iOS"/><title type='text'>Frost&#39;s Blog</title><subtitle type='html'>How about a magic trick?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://unknown0521.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-5082918722602624143</id><published>2015-12-21T14:43:00.004+08:00</published><updated>2015-12-21T14:44:04.271+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>(ios)Scroll View Auto Layout</title><content type='html'>解決Scroll View Auto Layout的warring issue,&lt;br /&gt;
原則上Scroll View裡面只能放一個View,&lt;br /&gt;
故拉一個UIView等同scroll view的寬＆高&lt;br /&gt;
&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/5082918722602624143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/5082918722602624143'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2015/12/scroll-view-auto-layout.html' title='(ios)Scroll View Auto Layout'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-8533584008641358315</id><published>2015-11-21T03:42:00.002+08:00</published><updated>2015-12-21T14:44:14.378+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>(ios)move TableView cell</title><content type='html'>http://www.raywenderlich.com/63089/cookbook-moving-table-view-cells-with-a-long-press-gesture&lt;br /&gt;
&lt;br /&gt;
http://www.cnblogs.com/iCocos/p/4674721.html&lt;br /&gt;
&lt;br /&gt;
http://stackoverflow.com/questions/6097464/reordering-controls-on-uitableview-while-not-in-editing-mode</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8533584008641358315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8533584008641358315'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2015/11/move-tableview-cell.html' title='(ios)move TableView cell'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-6436667763027448672</id><published>2015-11-03T11:25:00.002+08:00</published><updated>2015-11-03T11:25:49.416+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>[iOS] NSOperation &amp; NSOperation Queue </title><content type='html'>&lt;h2 style=&quot;background: url(data:image/png; border: 0px; font-family: Times-Bold, STSongti-SC-Bold, Times; font-stretch: inherit; line-height: 23.52px; margin: 0px 0px 1em; padding: 0.8em 0px 0px; text-rendering: optimizeLegibility; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;color: blue; font-size: x-large;&quot;&gt;NSOperation:&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;1.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;NSInvocationOperation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #2e3036; font-family: , , &amp;quot;times&amp;quot;;&quot;&gt;&lt;span style=&quot;background-color: #fbfcfd; font-size: 20.8px; line-height: 23.52px;&quot;&gt;&amp;nbsp; &amp;nbsp;ex:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 13px; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&amp;nbsp; &amp;nbsp;NSInvocationOperation *invacationOperation = [[NSInvocationOperation alloc] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;initWithTarget:self selector:@selector(doSomethingWithObj:) object:obj];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;&amp;nbsp; &amp;nbsp;get result:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 13px; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;id result = [invacationOperation result];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;2.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;NSBlockOperation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;&amp;nbsp; &amp;nbsp;ex:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 1.3em; line-height: 23.52px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 13px; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;NSBlockOperation *blockOperation = [NSBlockOperation blockOperationWithBlock:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 13px; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&amp;nbsp; ^{&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 13px; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //do something&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 13px; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&amp;nbsp; }];&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: 13px; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;3. 自定義（繼承）NS&lt;/span&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;Operation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;- NSInvocationOperation &amp;amp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;NSBlockOperation&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: large;&quot;&gt;兩者實際上無太大差別&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fdfdfd; color: #333333; font-family: &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;andale mono&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;courier new&amp;quot; , monospace; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;- Start &amp;amp; Cancel 一個 Operation&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; font-size: 20.8px; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; line-height: 23.52px;&quot;&gt;&lt;span style=&quot;color: #2e3036; font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: 20.8px;&quot;&gt;&amp;nbsp; &lt;/span&gt;&amp;nbsp;[operation start];&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: #fbfcfd; line-height: 23.52px;&quot;&gt;&lt;span style=&quot;color: #2e3036;&quot;&gt;&amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; line-height: 23.52px;&quot;&gt;operation cancel];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;- 設置&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;Operation&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;的&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;completionBlock:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s5&quot;&gt;completionBlock&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;實現原理是對&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;的&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;isFinnshed&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;字段進行&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;KVO&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;（&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;Key-Value Observing&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;），&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;當監聽到&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;isFinnished&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;變成&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;YES&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;时，就执行&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;completionBlock&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;。&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;operation.completionBlock =&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;^{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; NSLog(@&quot;finished&quot;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;};&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: blue; font-size: x-large;&quot;&gt;NSOperationQueue:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: blue; font-size: x-large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;NSOperationQueue&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;是一个&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;执行队列，你可以将任何你想要执行的&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;添加到&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;Operation Queue&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;中，以在队列中执行。&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&#39;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;- Operation&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;&lt;b&gt;的依賴關係:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;[operation addDependency:anotherOperation];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;[operation removeDependency:anotherOperation];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;












&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;如果将这些&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;和它所依赖的&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;加如队列中，那么&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;只有在它依赖的&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;都执行完毕后才可以被执行。&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;- Operation&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;在队列中执行的优先级:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s3&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;在队列中默认是按&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;FIFO&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;（&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;First In First Out&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;）顺序执行的。同时我们可以为单个的&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;Operation&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;设置一个执行的优先级，打乱这个顺序。&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;- 最大並行&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;Operation&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;數目：&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;NSOperationQueue *queue = [[NSOperationQueue alloc] init];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;queue.maxConcurrentOperationCount = 1;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;background-color: #fbfcfd; color: #2e3036; font-family: , , &amp;quot;times&amp;quot;; line-height: 23.52px;&quot;&gt;*&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;實驗結果：區域變數中的&lt;/span&gt;NSBlockOperation 須先經過init, 才能在其他function中被cancel.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;s2&quot;&gt;ex:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; NSBlockOperation&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; *op2 = [[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSBlockOperation&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;alloc&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;] &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;__weak&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;NSBlockOperation&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; *weakOperation = op2;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; [op2 &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;addExecutionBlock&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ^{&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;//while (true)&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;for&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; i = &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;; i&amp;lt;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;; i++)&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;NSLog&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;@&quot;op2 %@&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;, op2);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; ([op2 &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;isCancelled&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;])&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSThread&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;sleepForTimeInterval&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; }];&lt;/span&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/6436667763027448672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/6436667763027448672'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2015/11/ios-nsoperation-nsoperation-queue.html' title='[iOS] NSOperation &amp; NSOperation Queue '/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-8190726382648231977</id><published>2015-10-29T16:20:00.000+08:00</published><updated>2015-10-29T16:20:04.945+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>[iOS] GCD - dispatch</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;border: 0px; color: #006837; font-family: inherit; font-style: inherit; font-weight: bold; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; color: #006837; font-family: inherit; font-style: inherit; font-weight: bold; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;line-height: 25.88px;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Queues Types:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;border: 0px; color: #006837; font-family: inherit; font-style: inherit; font-weight: bold; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;- Serial Queues&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
Tasks in&amp;nbsp;&lt;span style=&quot;border: 0px; color: #006837; font-family: inherit; font-style: inherit; font-weight: bold; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;serial queues&lt;/span&gt;&amp;nbsp;execute one at a time, each task starting only after the preceding task has finished.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;border: 0px; color: #006837; font-family: inherit; font-style: inherit; font-weight: bold; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;- Concurrent Queues&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
Tasks in&amp;nbsp;&lt;span style=&quot;border: 0px; color: #006837; font-family: inherit; font-style: inherit; font-weight: bold; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;concurrent queues&lt;/span&gt;&amp;nbsp;are guaranteed to start in the order they were added,&lt;br /&gt;&lt;span style=&quot;line-height: 25.88px;&quot;&gt;Items can finish in any order and you have no knowledge of the time it will take for the next block to start, nor the number of blocks that are running at any given time.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;border: 0px; color: #006837; font-style: inherit; font-weight: bold; line-height: 25.88px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;line-height: 25.88px;&quot;&gt;- Main Queues&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span style=&quot;line-height: 25.88px;&quot;&gt;Like any serial queue, tasks in this queue execute one at a time. However, it’s guaranteed that all tasks will execute on the main thread, which is the only thread allowed to update your UI. This queue is the one to use for sending messages to&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;border: 0px; color: #006837; font-family: &#39;Droid Sans Mono&#39;, sans-serif; font-size: 14px; font-weight: bold; line-height: 25.88px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;UIViews&lt;/code&gt;&lt;span style=&quot;line-height: 25.88px;&quot;&gt;&amp;nbsp;or posting notifications.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;b&gt;- Examples:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;//  background&lt;span style=&quot;line-height: 18.85px;&quot;&gt;執行&lt;/span&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_async&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_get_global_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;      &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// something&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// main thread&lt;span style=&quot;line-height: 18.85px;&quot;&gt;執行&lt;/span&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_async&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_get_main_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;      &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// something&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// 一次性執行：&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;k&quot; style=&quot;border: 0px; color: rgb(203, 75, 22) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_once_t&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;onceToken&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_once&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;onceToken&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;     &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// code to be executed once&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// delay 2 秒&lt;span style=&quot;line-height: 18.85px;&quot;&gt;執行&lt;/span&gt;：&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;kt&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;double&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;delayInSeconds&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mf&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;2.0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_time_t&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;popTime&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_time&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;DISPATCH_TIME_NOW&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;delayInSeconds&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;NSEC_PER_SEC&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_after&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;popTime&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_get_main_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(),&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;){&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;     &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// code to be executed on the main queue after delay&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt; &lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// 自定義Queue (Serial Queue&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #93a1a1; font-family: inherit; font-size: 13px; font-variant: inherit; line-height: inherit; white-space: pre;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_queue_t&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;urls_queue&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_queue_create&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&quot;blog.devtang.com&quot;&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot; style=&quot;border: 0px; color: rgb(133, 153, 0) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;NULL&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_async&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;urls_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;     &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// your code&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_release&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;urls_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;line&quot; style=&quot;border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: &#39;PT Serif&#39;, Georgia, Times, &#39;Times New Roman&#39;, serif; font-size: 18.4px; line-height: 27.6px; white-space: normal;&quot;&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;line&quot; style=&quot;border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border-image-outset: initial; border-image-repeat: initial; border-image-slice: initial; border-image-source: initial; border-image-width: initial; border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f8f8f8; font-family: &#39;PT Serif&#39;, Georgia, Times, &#39;Times New Roman&#39;, serif; font-size: 18.4px; line-height: 27.6px; white-space: normal;&quot;&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;- dispatch_group：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f8f8f8; color: #222222; font-family: &#39;PT Serif&#39;, Georgia, Times, &#39;Times New Roman&#39;, serif; font-size: 18.4px; line-height: 27.6px; white-space: normal;&quot;&gt;GCD 还有一些高级用法，例如让后台 2 个线程并行执行，然后等 2 个线程都结束后，再汇总执行结果。这个可以用 dispatch_group, dispatch_group_async 和 dispatch_group_notify 来实现，示例如下：&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;background-color: #f8f8f8; color: #222222; font-family: &#39;PT Serif&#39;, Georgia, Times, &#39;Times New Roman&#39;, serif; font-size: 18.4px; line-height: 27.6px; white-space: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; font-family: &#39;Open Sans&#39;, sans-serif; font-size: 16px; line-height: 25.88px; outline: 0px; padding: 0px 0px 10px; vertical-align: baseline;&quot;&gt;
&lt;span class=&quot;line&quot; style=&quot;border: 0px; color: #93a1a1; font-family: Menlo, Monaco, &#39;Andale Mono&#39;, &#39;lucida console&#39;, &#39;Courier New&#39;, monospace; font-size: 13px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_group_t&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;group&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_group_create&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_group_async&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;group&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_get_global_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;      &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// 並行執行的 Thread 1&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_group_async&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;group&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_get_global_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;      &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #586e75; font-style: italic; line-height: 18.85px;&quot;&gt;並行執行的 Thread 2&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_group_notify&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;group&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;border: 0px; color: rgb(38, 139, 210) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;dispatch_get_global_queue&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;mi&quot; style=&quot;border: 0px; color: rgb(42, 161, 152) !important; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; font-weight: bold !important; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;      &lt;span class=&quot;c1&quot; style=&quot;border: 0px; color: rgb(88, 110, 117) !important; font-family: inherit; font-stretch: inherit; font-style: italic !important; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;// thread 1 &amp;amp; 2 完成後執行&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot; style=&quot;border: 0px; font-stretch: inherit; line-height: 18.85px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt; &lt;span class=&quot;p&quot; style=&quot;border: 0px; font-family: inherit; font-stretch: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;});&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8190726382648231977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8190726382648231977'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2015/10/ios-gcd-dispatch.html' title='[iOS] GCD - dispatch'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-26396312812328685</id><published>2015-10-29T10:14:00.000+08:00</published><updated>2015-10-29T10:16:13.280+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iOS"/><title type='text'>[iOS] Auto Layout - NSLayoutConstraint</title><content type='html'>&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;Object - C:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;NSMutableArray&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; *myConstraints = [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSMutableArray&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;NSDictionary&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; *variableBindings = &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;@{&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;@&quot;_btn_cancel&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; : &lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;_btn_cancel&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;NSDictionary&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; *metrics = &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;@{&lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;@&quot;height&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;: 100,&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;@&quot;margin&quot;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;: 10&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s8&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s9&quot;&gt;// ex1:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;從水平方向佈局&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp; [myConstraints &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;addObjectsFromArray&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; [&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSLayoutConstraint&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;constraintsWithVisualFormat&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s6&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;@&quot;H:|-margin-[_btn_cancel(height)]-|&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;NSLayoutFormatDirectionLeadingToTrailing&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;metrics&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:metrics&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;views&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:variableBindings]];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;span class=&quot;s8&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s9&quot;&gt;//&lt;/span&gt;&lt;/span&gt;ex2: 從垂直方向佈局&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;[myConstraints addObjectsFromArray:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NSLayoutConstraint constraintsWithVisualFormat:&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;@&quot;V:[ViewB(ViewA)]-|&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; options:NSLayoutFormatDirectionLeadingToTrailing&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; metrics:nil&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;











&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span class=&quot;s1&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; views:NSDictionaryOfVariableBindings(ViewB,ViewA)]];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;[&lt;/span&gt;&lt;span class=&quot;s10&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;addConstraints&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;:myConstraints];&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;參數說明：&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;options: &lt;/span&gt;佈局時的順序，預設是由上而下（垂直）與由左而右（水平)&lt;br style=&quot;background-color: white; color: #333333; font-family: HannotateSC-W5; font-size: 13px; line-height: 26px;&quot; /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: HannotateSC-W5; font-size: 13px; line-height: 26px;&quot; /&gt;&lt;span class=&quot;s2&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;s5&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;metrics : &lt;/span&gt;一般为nil ，参数类型为NSDictionary, 為要傳入的變數&lt;/span&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: HannotateSC-W5; font-size: 13px; line-height: 26px;&quot; /&gt;&lt;br style=&quot;background-color: white; color: #333333; font-family: HannotateSC-W5; font-size: 13px; line-height: 26px;&quot; /&gt;&lt;span style=&quot;color: red;&quot;&gt;views&amp;nbsp;：&lt;/span&gt;&lt;/span&gt;参数类型为NSDictionary, 為要傳入的Views&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;語法：&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;color: blue; font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p1&quot;&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;s1&quot;&gt;&lt;b&gt;＊&lt;span class=&quot;Apple-tab-span&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt;&quot; V: &quot; &lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s3&quot;&gt;&lt;b&gt;和&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&lt;b&gt; &quot; H: &quot;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s4&quot;&gt;分別代表由垂直或是水平方向來佈局。&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s4&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;s4&quot;&gt;＊&lt;/span&gt;&lt;b&gt;&quot; | &quot;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s6&quot;&gt;代表&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt; Superview &lt;/span&gt;&lt;span class=&quot;s6&quot;&gt;的邊界。&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span class=&quot;s6&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;s6&quot;&gt;＊&lt;/span&gt;&lt;b&gt;&quot; - &quot;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s4&quot;&gt;代表預設距離，例如在中間加上數字&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &quot; -20- &quot;&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;，則代表限制&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; 20 &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;個單位距離。&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;＊&quot; [ ] &quot;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;span class=&quot;s4&quot;&gt;代表物件本身，括號內包含物件的變數名稱與大小限制，可以使用關係運算子（&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;＝、&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;＝&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;或&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;＝＝&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;等）。&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p4&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;＊ &quot; @ &quot;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
















&lt;/div&gt;
&lt;div class=&quot;p2&quot;&gt;
&lt;span class=&quot;s4&quot;&gt;優先權，&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;1 &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;至&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; 1000 &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;的整數，優先權較大的條件會優先被滿足，例如&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;，&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt;&lt;b&gt;[ViewB(&amp;gt;=100@1000)]&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;，物件&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; ViewB &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;不可以小於&lt;/span&gt;&lt;span class=&quot;s7&quot;&gt; 100 &lt;/span&gt;&lt;span class=&quot;s4&quot;&gt;個單位長度或寬度會最優先被考慮。&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;p3&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/26396312812328685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/26396312812328685'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2015/10/ios-auto-layout-nslayoutconstraint.html' title='[iOS] Auto Layout - NSLayoutConstraint'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-822025525049361178</id><published>2012-04-16T14:23:00.000+08:00</published><updated>2012-04-16T14:23:00.177+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>Intent呼叫第三方程式 (setComponent)</title><content type='html'>&lt;div id=&quot;content_all&quot; style=&quot;padding-bottom: 15px; padding-left: 0px; padding-right: 0px; padding-top: 1px;&quot;&gt;
&lt;h3 class=&quot;post-title entry-title&quot;&gt;
Intent呼叫第三方程式 (setComponent) &lt;/h3&gt;
&lt;div class=&quot;post-header&quot;&gt;
&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
資料來源:&lt;a href=&quot;http://slashgill.blogspot.com/2010/10/intent.html&quot;&gt;http://slashgill.blogspot.com/2010/10/intent.html&lt;/a&gt;&lt;/div&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;只要利用adb logcat ，再搭配使用setComponet()，就可以輕易的呼叫第三方程式(不在自己的application內)。&lt;br /&gt;詳細用法參考原文:&lt;br /&gt;&lt;a href=&quot;http://developer.android.com/reference/android/content/Intent.html#setComponent%28android.content.ComponentName%29&quot;&gt;http://developer.android.com/reference/android/content/Intent.html#setComponent%28android.content.ComponentName%29&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;比如我自己的程式想執行Android裡面的Settings，先用adb logcat看系統是如何呼叫Settings的&lt;br /&gt;&lt;br /&gt;I/ActivityManager(&amp;nbsp;&amp;nbsp; 60): Starting activity: Intent { act=&lt;span style=&quot;color: red;&quot;&gt;android.intent.action.MAIN&lt;/span&gt; cat=[android.intent.category.LAUNCHER] flg=0x10200000 &lt;span style=&quot;color: red;&quot;&gt;cmp=com.android.settings/.Settings&lt;/span&gt; }&lt;br /&gt;I/ActivityManager(&amp;nbsp;&amp;nbsp; 60): Displayed activity com.android.settings/.Settings: 1205 ms (total 1205 ms)&lt;br /&gt;&lt;br /&gt;只要有這個cmp就可以呼叫Settings了&lt;br /&gt;&lt;br /&gt;public class Main extends Activity {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /** Called when the activity is first created. */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Intent i = new Intent();&lt;br /&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ComponentName comp = new ComponentName(&quot;com.android.settings&quot;, &quot;com.android.settings.Settings&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; i.setComponent(comp);&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; startActivity(i);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;另外有些程式要被執行，Intent還要多加搭配Intent.setData()或者是Intent.setAction()等方式。比如:想要開啟Browser，而且是開啟tw.yahoo.com的網頁，程式碼如下:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent i = new Intent();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ComponentName comp = new ComponentName(&quot;com.android.browser&quot;, &quot;com.android.browser.BrowserActivity&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;i.setComponent(comp);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Uri uri = Uri.parse(&quot;http://tw.yahoo.com&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;i.setData(uri);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;startActivity(i);&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
出處&lt;br /&gt;
&lt;a href=&quot;http://blog.xuite.net/ffc99a3b/ooxx/45834263-%5B%E8%BD%89%E8%BC%89%5D+Intent%E5%91%BC%E5%8F%AB%E7%AC%AC%E4%B8%89%E6%96%B9%E7%A8%8B%E5%BC%8F+(setComponent&quot;&gt;http://blog.xuite.net/ffc99a3b/ooxx/45834263-%5B%E8%BD%89%E8%BC%89%5D+Intent%E5%91%BC%E5%8F%AB%E7%AC%AC%E4%B8%89%E6%96%B9%E7%A8%8B%E5%BC%8F+(setComponent&lt;/a&gt;)+</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/822025525049361178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/822025525049361178'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/04/intent-setcomponent.html' title='Intent呼叫第三方程式 (setComponent)'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-734809265929815482</id><published>2012-04-10T13:56:00.001+08:00</published><updated>2012-04-10T15:45:46.551+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'></title><content type='html'>&lt;a href=&quot;http://www.androidla.net/index.php/2011/05/19/android-socket-tcpudp/&quot;&gt;http://www.androidla.net/index.php/2011/05/19/android-socket-tcpudp/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.cnblogs.com/harrisonpc/archive/2011/03/31/2001565.html&quot;&gt;http://www.cnblogs.com/harrisonpc/archive/2011/03/31/2001565.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://hi.baidu.com/gk14/blog/item/a25c0e463fbc1a056a63e52c.html&quot;&gt;http://hi.baidu.com/gk14/blog/item/a25c0e463fbc1a056a63e52c.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.xuite.net/ffc99a3b/ooxx/42960121-%5B%E8%BD%89%E8%BC%89%5DAndroid+UDP+Broadcast+Socket&quot;&gt;http://blog.xuite.net/ffc99a3b/ooxx/42960121-%5B%E8%BD%89%E8%BC%89%5DAndroid+UDP+Broadcast+Socket&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blog.sina.com.cn/s/blog_6c0a8fbb0100s3k5.html&quot;&gt;http://blog.sina.com.cn/s/blog_6c0a8fbb0100s3k5.html&lt;/a&gt;#</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/734809265929815482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/734809265929815482'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/04/httpwww.html' title=''/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-3546502612822275996</id><published>2012-04-02T15:22:00.002+08:00</published><updated>2012-04-02T15:23:04.233+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>receiver</title><content type='html'>&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;div id=&quot;firstpost&quot;&gt;
&lt;div class=&quot;ad_textlink1&quot; id=&quot;ad_thread1_1&quot;&gt;
可以在代码文件中声明一个receiver，也可以在manifest中声明一个，前者中的receiver只有在该activity launch起来以后才会监听其所感兴趣的文件，而如果在androidManifext.xml中声明的话，就不受限制，随时可以监听感兴趣的事件。&lt;/div&gt;
&lt;div class=&quot;content_a&quot;&gt;
&lt;br /&gt;
首先谈谈在androidManifext.xml中注册一个receiver, 例如我们想监听相机按钮按下事件的发生，并且发生后调用我们的camera程序 &lt;br /&gt;
&lt;div class=&quot;blockcode&quot;&gt;
&lt;div id=&quot;code61394_-1&quot;&gt;
&lt;ol&gt;
&lt;li&gt;&amp;lt;receiver android:name=&quot;CameraButtonIntentReceiver&quot;&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;action android:name=&quot;android.intent.action.CAMERA_BUTTON&quot;/&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/receiver&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;em&gt;复制代码&lt;/em&gt;&lt;/div&gt;
在这个&lt;span class=&quot;t_tag&quot; href=&quot;tools/ajax.aspx?t=topicswithsametag&amp;amp;tagid=13&quot;&gt;配置&lt;/span&gt;文件中声明了一个receiver用来监听相机的按键事件，所以还需要在代码文件定义与配置文件中同名的receiver： &lt;br /&gt;
&lt;div class=&quot;blockcode&quot;&gt;
&lt;div id=&quot;code61394_0&quot;&gt;
&lt;ol&gt;
&lt;li&gt;public class CameraButtonIntentReceiver extends BroadcastReceiver {&lt;/li&gt;
&lt;li&gt;public void onReceive(Context context, Intent intent) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; Intent i = new Intent(Intent.ACTION_MAIN);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.setClass(context, Camera.class);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; context.startActivity(i);&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;em&gt;复制代码&lt;/em&gt;&lt;/div&gt;
&lt;span style=&quot;font-size: medium;&quot;&gt;&lt;br /&gt;&lt;/span&gt;关于另外一种，在代码中注册一个receiver,例如我们想在代码文件中监听电池电量的变化，就可以按照如下方法 &lt;br /&gt;
&lt;div class=&quot;blockcode&quot;&gt;
&lt;div id=&quot;code61394_1&quot;&gt;
&lt;ol&gt;
&lt;li&gt;private final BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; @Override&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public void onReceive(Context context, Intent intent) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String action = intent.getAction();&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; …&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;em&gt;复制代码&lt;/em&gt;&lt;/div&gt;
这种方法需要在onCreate 或者onStart中注册该receiver所感兴趣的intent,如： &lt;br /&gt;
&lt;div class=&quot;blockcode&quot;&gt;
&lt;div id=&quot;code61394_2&quot;&gt;
&lt;ol&gt;
&lt;li&gt;registerReceiver(mBatteryReceiver, Intent.ACTION_BATTERY_CHANGED);&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;em&gt;复制代码&lt;/em&gt;&lt;/div&gt;
在onStop及onDestroy中注销监听 &lt;br /&gt;
&lt;div class=&quot;blockcode&quot;&gt;
&lt;div id=&quot;code61394_2&quot;&gt;
&lt;ol&gt;
&lt;li&gt;registerReceiver(mBatteryReceiver, Intent.ACTION_BATTERY_CHANGED);&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;em&gt;复制代码&lt;/em&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/3546502612822275996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/3546502612822275996'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/04/receiver.html' title='receiver'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-2085474445939403691</id><published>2012-04-02T10:41:00.002+08:00</published><updated>2012-04-02T15:21:34.083+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>[Android] Incorporating Google AdMob Ads into your app</title><content type='html'>Incorporating Google AdMob Ads into your app is a three step process:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Add the SDK JAR to your Eclipse project.&lt;/li&gt;
&lt;li&gt;Declare &lt;code&gt;com.google.ads.AdActivity&lt;/code&gt; in &lt;code&gt;AndroidManifest.xml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set up required network permissions in the manifest.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;addjar&quot;&gt;
Adding the SDK JAR&lt;/h3&gt;
The decompressed SDK consists of a JAR, a javadoc folder and a README.&lt;br /&gt;
&lt;div style=&quot;margin: 40px 0px 40px 40px;&quot;&gt;
&lt;div style=&quot;display: inline-block; vertical-align: top; width: 15em;&quot;&gt;
1. Right click on your app project in Eclipse and choose &lt;b&gt;Properties&lt;/b&gt;.&lt;/div&gt;
&lt;img src=&quot;https://developers.google.com/mobile-ads-sdk/images/edit_properties.png&quot; /&gt; &lt;/div&gt;
&lt;div style=&quot;margin: 40px 0px 40px 40px;&quot;&gt;
&lt;div style=&quot;display: inline-block; vertical-align: top; width: 15em;&quot;&gt;
2. Select &lt;b&gt;Java Build Path&lt;/b&gt; and the &lt;b&gt;Libraries&lt;/b&gt; tab. Then click &lt;b&gt;Add External JARs...&lt;/b&gt; to add the Google AdMob Ads JAR.&lt;/div&gt;
&lt;img src=&quot;https://developers.google.com/mobile-ads-sdk/images/add_jar.png&quot; /&gt; &lt;/div&gt;
&lt;h3 id=&quot;adactivity&quot;&gt;
com.google.ads.AdActivity&lt;/h3&gt;
The AdMob Ads SDK requires that &lt;code&gt;com.google.ads.AdActivity&lt;/code&gt; be declared in your app&#39;s &lt;code&gt;AndroidManifest.xml&lt;/code&gt;:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;span class=&quot;pun&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;xml version&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; encoding&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;manifest&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;xmlns:android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;http://schemas.android.com/apk/res/android&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;com.company&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:versionCode&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:versionName&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;application&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:icon&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;@drawable/icon&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:label&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;@string/app_name&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:debuggable&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;activity&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:label&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;@string/app_name&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;BannerExample&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;action&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;android.intent.action.MAIN&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;category&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;android.intent.category.LAUNCHER&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;activity&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;com.google.ads.AdActivity&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:configChanges&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/application&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;h3 id=&quot;permissions&quot;&gt;
Permissions&lt;/h3&gt;
Making ad requests requires the networking permissions &lt;code&gt;INTERNET&lt;/code&gt; and &lt;code&gt;ACCESS_NETWORK_STATE&lt;/code&gt;, so these must also be declared in the manifest:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;span class=&quot;pun&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;xml version&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; encoding&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;utf-8&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;manifest&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;xmlns:android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;http://schemas.android.com/apk/res/android&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;package&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;com.company&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:versionCode&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;1&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:versionName&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;1.0&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;application&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:icon&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;@drawable/icon&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:label&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;@string/app_name&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:debuggable&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;activity&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:label&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;@string/app_name&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;BannerExample&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;action&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;android.intent.action.MAIN&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;category&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;android.intent.category.LAUNCHER&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;activity&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;com.google.ads.AdActivity&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:configChanges&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/application&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;uses-permission&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;android.permission.INTERNET&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;uses-permission&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;android.permission.ACCESS_NETWORK_STATE&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;/pre&gt;
You should now be able to rebuild your project without any errors.&lt;br /&gt;
&lt;h2 id=&quot;addadview&quot;&gt;
Adding a com.google.ads.AdView&lt;/h2&gt;
Android apps are composed of &lt;code&gt;View&lt;/code&gt; objects, Java instances the user sees as text areas, buttons and other controls. &lt;code&gt;AdView&lt;/code&gt; is simply another &lt;code&gt;View&lt;/code&gt; subclass displaying small HTML5 ads that respond to user touch.&lt;br /&gt;
Like any &lt;code&gt;View&lt;/code&gt;, an &lt;code&gt;AdView&lt;/code&gt; may be created either purely in code or largely in XML.&lt;br /&gt;
The five lines of code it takes to add a banner:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Import &lt;code&gt;com.google.ads.*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Declare an &lt;code&gt;AdView&lt;/code&gt; instance&lt;/li&gt;
&lt;li&gt;Create it, specifying a unit ID—your AdMob publisher ID&lt;/li&gt;
&lt;li&gt;Add the view to the UI&lt;/li&gt;
&lt;li&gt;Load it with an ad&lt;/li&gt;
&lt;/ul&gt;
The easiest place to do all this is in your app’s &lt;code&gt;Activity&lt;/code&gt;.&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;span class=&quot;kwd&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; com&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;google&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;ads&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.*;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;BannerExample&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;extends&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Activity&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;AdView&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; adView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;@Override&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; onCreate&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Bundle&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; savedInstanceState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;savedInstanceState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; setContentView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;layout&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;// Create the adView&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; adView &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;AdView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;AdSize&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;BANNER&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; MY_AD_UNIT_ID&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;// Lookup your LinearLayout assuming it’s been given&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;// the attribute android:id=&quot;@+id/mainLayout&quot;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;LinearLayout&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; layout &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;LinearLayout&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;findViewById&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;mainLayout&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;// Add the adView to it&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; layout&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;addView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;adView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;// Initiate a generic request to load it with an ad&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; adView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loadAd&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;new&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;AdRequest&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;());&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;@Override&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;public&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; onDestroy&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;adView &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &amp;nbsp; adView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;destroy&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;super&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;onDestroy&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;/pre&gt;
&lt;div class=&quot;warning&quot;&gt;
&lt;b&gt;Warning:&lt;/b&gt; Make sure you&#39;re in test mode during development to avoid being disabled for clicking your own ads. See the &lt;a href=&quot;https://developers.google.com/mobile-ads-sdk/docs/bestpractices.html#testmode&quot;&gt;Best Practices guide&lt;/a&gt; for more details on enabling test ads.&lt;/div&gt;
You can download an example project containing this code &lt;a href=&quot;http://google-mobile-dev.googlecode.com/files/Android_Fundamentals.zip&quot;&gt;here&lt;/a&gt; and may alternately &lt;a href=&quot;https://developers.google.com/mobile-ads-sdk/docs/android/banner_xml.html&quot;&gt;create your banner in XML&lt;/a&gt;.&lt;br /&gt;
&lt;h2 id=&quot;result&quot;&gt;
The Result&lt;/h2&gt;
When you now run your app you should see a banner at the top of the screen:&lt;br /&gt;
&lt;img src=&quot;https://developers.google.com/mobile-ads-sdk/images/testad_android.png&quot; style=&quot;margin: 15px 0px 0px;&quot; /&gt; &lt;br /&gt;
&lt;div class=&quot;note&quot;&gt;
&lt;b&gt;Note:&lt;/b&gt; The very first time AdMob sees your publisher ID it may take up to two minutes to receive an ad. This initial two minute lag will recur every time the ID goes unused for 24 hours.&lt;/div&gt;
&lt;div class=&quot;warning&quot;&gt;
&lt;b&gt;Warning:&lt;/b&gt; All new Android apps created after October 14, 2011 will require an &lt;a href=&quot;https://developers.google.com/mobile-ads-sdk/download.html#downloadandroid&quot;&gt;AdMob SDK&lt;/a&gt; that was released on or after March 15, 2011. This corresponds to version 4.0.2+ for Android. If you downloaded the library from our &lt;a href=&quot;https://developers.google.com/mobile-ads-sdk/download.html#downloadandroid&quot;&gt;official download site&lt;/a&gt;, then you&#39;re already set. Otherwise you may have an old version of the AdMob SDK that was released prior to March 15, 2011, and your new app will not receive any ad impressions until you update your SDK.&lt;/div&gt;
&lt;div class=&quot;warning&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;warning&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;warning&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;warning&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;warning&quot;&gt;
source:&lt;/div&gt;
&lt;div class=&quot;warning&quot;&gt;
&lt;a href=&quot;https://developers.google.com/mobile-ads-sdk/docs/android/fundamentals&quot;&gt;https://developers.google.com/mobile-ads-sdk/docs/android/fundamentals&lt;/a&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2085474445939403691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2085474445939403691'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/04/android-incorporating-google-admob-ads.html' title='[Android] Incorporating Google AdMob Ads into your app'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-867626211495551335</id><published>2012-03-29T17:37:00.004+08:00</published><updated>2012-03-29T17:37:58.530+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>ComponentName</title><content type='html'>&lt;span&gt;Android软件时，常常需要打开系统设置或信息界面，来设置相关系统项或查看系统的相关信息，这时我们就可以使用以下语句来实现：（如打开“无线和网络设置”界面）&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　Intent intent = new Intent(&quot;/&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　ComponentName cm = new ComponentName(&quot;com.android.settings&quot;,&quot;com.android.settings.WirelessSettings&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　intent.setComponent(cm);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　intent.setAction(&quot;android.intent.action.VIEW&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　activity.startActivityForResult( intent , 0);&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　经过测试，使用下面字段可以在软件中直接打开相应的系统界面&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.AccessibilitySettings 辅助功能设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.ActivityPicker 选择活动&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.ApnSettings APN设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.ApplicationSettings 应用程序设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.BandMode 设置GSM/UMTS波段&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.BatteryInfo 电池信息&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.DateTimeSettings 日期和&lt;/span&gt;&lt;a href=&quot;http://www.gzbest.cn/&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #108ac6;&quot;&gt;坝上旅游网&lt;/span&gt;&lt;/a&gt;&lt;span&gt;时间设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.DateTimeSettingsSetupWizard 日期和时间设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.DevelopmentSettings 应用程序设置=》开发设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.DeviceAdminSettings 设备管理器&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.DeviceInfoSettings 关于手机&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.Display 显示——设置显示字体大小及预览&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.DisplaySettings 显示设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.DockSettings 底座设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.IccLockSettings SIM卡锁定设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.InstalledAppDetails 语言和键盘设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.LanguageSettings 语言和键盘设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.LocalePicker 选择手机语言&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.LocalePickerInSetupWizard 选择手机语言&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.ManageApplications 已下载（安装）软件列表&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.MasterClear 恢复出厂设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.MediaFormat 格式化手机闪存&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.PhysicalKeyboardSettings 设置键盘&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.PrivacySettings 隐私设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.ProxySelector 代理设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.RadioInfo 手机信息&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.RunningServices 正在运行的程序（服务）&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.SecuritySettings 位置和安全设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.Settings 系统设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.SettingsSafetyLegalActivity 安全信息&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.SoundSettings 声音设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.TestingSettings 测试——显示手机信息、电池信息、使用情况统计、Wifi information、服务信息&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.TetherSettings 绑定与便携式热点&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.TextToSpeechSettings 文字转语音设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.UsageStats 使用情况统计&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.UserDictionarySettings 用户词典&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.VoiceInputOutputSettings 语音输入与输出设置&lt;/span&gt;&lt;br /&gt;&lt;span&gt;　　com.android.settings.WirelessSettings 无线和网络设置&lt;/span&gt;&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/867626211495551335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/867626211495551335'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/03/componentname.html' title='ComponentName'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-2753308417799119222</id><published>2012-03-28T16:17:00.000+08:00</published><updated>2012-03-28T16:19:07.744+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>[android] java.lang.reflect.Method.invoke()</title><content type='html'>Ex: Class A&lt;br /&gt;
&lt;br /&gt;
public &amp;nbsp; Class &amp;nbsp; A &lt;br /&gt;
{ &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public &amp;nbsp; void &amp;nbsp; setName(String &amp;nbsp; name) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
A &amp;nbsp; a &amp;nbsp; = &amp;nbsp; new &amp;nbsp; A(); &lt;br /&gt;
Class &amp;nbsp; c &amp;nbsp; = &amp;nbsp; Class.forName( &quot;A &quot;); &lt;br /&gt;
Method &amp;nbsp; method &amp;nbsp; = &amp;nbsp; c.getMethod( &quot;setName &quot;, &amp;nbsp; new &amp;nbsp; Class[]{String.class}); &lt;br /&gt;
//從Class c中找到名為setName, 帶一個String參數的methid&lt;br /&gt;
method.invoke(a, &amp;nbsp; new &amp;nbsp; Object[]{ &quot;name &quot;}); &lt;br /&gt;
//調用a的該方法, 參數為&quot;name&quot;的String&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
以上相當於a.setName( &quot;name &quot;);</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2753308417799119222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2753308417799119222'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/03/android-javalangreflectmethodinvoke.html' title='[android] java.lang.reflect.Method.invoke()'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-2898212627219575344</id><published>2012-03-28T14:17:00.001+08:00</published><updated>2012-03-28T14:26:12.388+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>[Android] Wifi hotspot API -- JAVA Reflection</title><content type='html'>&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;There is no official API, but you can use reflection to handle it. I know some say, it&#39;s not recommended, however imho I say, screw it if Google doesn&#39;t want to provide an API for whatever reason.&lt;br /&gt;
Below is the code of an activity I used in my application, where the user can enable/disable the Wifi AP. When you enable Wifi AP, usually the regular Wifi will be turned off, so after the user disables the Wifi AP again, we&#39;ll be activating regular wifi again.&lt;br /&gt;
The code sample below is taken from one of my projects, hope you can get the logic there easily. Let me know if you have further questions.&lt;br /&gt;
Code is tested on Nexus One 2.2 (and I think also 2.3) as well as on Samsung Galaxy S (2.2).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;package&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; com&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;myapp&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;activity&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;ProgressDialog&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Context&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WifiConfiguration&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;net&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WifiManager&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;AsyncTask&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;os&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Bundle&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;View&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WindowManager&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; android&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;widget&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Button&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;import&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; java&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;reflect&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Method&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WifiAP&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;extends&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;BaseActivity&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;// boolean mIsWifiEnabled = false;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;final&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_UNKNOWN &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;final&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_DISABLING &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;final&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_DISABLED &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;final&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_ENABLING &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;final&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_ENABLED &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;static&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;final&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_FAILED &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;4&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;final&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;[]&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_STATE_TEXTSTATE &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;[]&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;DISABLING&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;DISABLED&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;ENABLING&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;ENABLED&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;FAILED&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;};&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WifiManager&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; onCreate&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Bundle&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; icicle&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;super&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;icicle&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setContentView&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;layout&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; getWindow&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;addFlags&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WindowManager&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;LayoutParams&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;FLAG_DISMISS_KEYGUARD&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WindowManager&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;LayoutParams&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;FLAG_KEEP_SCREEN_ON&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WindowManager&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;LayoutParams&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;FLAG_DIM_BEHIND&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wifi &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WifiManager&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getSystemService&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Context&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_SERVICE&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; onResume&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;super&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;onResume&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; updateStatusDisplay&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; toggleWifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;View&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; v&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; wifiApIsOn &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLED &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLING&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SetWifiAPTask&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(!&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifiApIsOn&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;execute&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; close&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;View&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; v&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; wifiApIsOn &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLED &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLING&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifiApIsOn&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SetWifiAPTask&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;execute&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; finish&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;/**&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;* Endable/disable wifi&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;* @param enabled&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;* @return WifiAP state&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; setWifiApEnabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; enabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Log&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;WifiAP&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;*** setWifiApEnabled CALLED **** &quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; enabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;enabled &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getConnectionInfo&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setWifiEnabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Thread&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;1500&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Exception&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;//int duration = Toast.LENGTH_LONG;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;//String toastText = &quot;MobileAP status: &quot;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; state &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_UNKNOWN&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setWifiEnabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Method&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; method1 &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getMethod&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;setWifiApEnabled&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WifiConfiguration&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; method1&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; enabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;com&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;// true&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Method&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; method2 &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getMethod&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;getWifiApState&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; state &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Integer&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; method2&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Exception&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Log&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_SERVICE&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getMessage&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;());&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class=&quot;com&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;// toastText += &quot;ERROR &quot; + e.getMessage();&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(!&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; loopMax &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;while&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loopMax&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_DISABLING&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLED&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_FAILED&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Thread&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;500&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loopMax&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;--;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Exception&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setWifiEnabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; loopMax &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;10&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;while&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loopMax&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLING&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_DISABLED&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_FAILED&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;))&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Thread&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;500&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;loopMax&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;--;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Exception&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; state&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; state &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; WIFI_AP_STATE_UNKNOWN&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Method&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; method2 &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getMethod&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;getWifiApState&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; state &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Integer&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; method2&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;wifi&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Exception&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Log&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;WifiAP&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;getWifiAPState.state &quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;==-&lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;UNKNOWN&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_STATE_TEXTSTATE&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;state&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;]));&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; state&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;private&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; updateStatusDisplay&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLED &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;||&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; getWifiAPState&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()==&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;WIFI_AP_STATE_ENABLING&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Button&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;findViewById&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;btnWifiToggle&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)).&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setText&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;Turn off&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; findViewById&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;bg&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setBackgroundResource&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;drawable&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;bg_wifi_on&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;else&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Button&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;findViewById&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;btnWifiToggle&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)).&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setText&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;Turn on&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; findViewById&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;bg&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setBackgroundResource&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;R&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;drawable&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;bg_wifi_off&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;class&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SetWifiAPTask&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;extends&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;AsyncTask&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; mMode&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; mFinish&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;public&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;SetWifiAPTask&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; mode&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;boolean&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; finish&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mMode &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; mode&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mFinish &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; finish&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;ProgressDialog&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; d &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;ProgressDialog&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;WifiAP&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;this&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; onPreExecute&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;super&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;onPreExecute&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setTitle&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;Turning WiFi AP &quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;mMode&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;?&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;on&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;off&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setMessage&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&quot;...please wait a moment.&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;show&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; onPostExecute&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; aVoid&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;super&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;onPostExecute&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;aVoid&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;dismiss&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;IllegalArgumentException&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; e&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{};&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; updateStatusDisplay&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;mFinish&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; finish&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;();&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;lit&quot;&gt;&lt;span style=&quot;color: maroon;&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;protected&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; doInBackground&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;Void&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;...&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;params&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setWifiApEnabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;mMode&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;&lt;span style=&quot;color: darkblue;&quot;&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
出處:&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/7048922/android-2-3-wifi-hotspot-api&quot;&gt;http://stackoverflow.com/questions/7048922/android-2-3-wifi-hotspot-api&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2898212627219575344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2898212627219575344'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/03/android-wifi-hotspot-api-java.html' title='[Android] Wifi hotspot API -- JAVA Reflection'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-8839242758703799562</id><published>2012-03-28T14:08:00.000+08:00</published><updated>2012-03-28T14:08:22.435+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>[Android] Android Tethering API (froyo or above) --JAVA Reflection</title><content type='html'>&lt;h3 class=&quot;post-title entry-title&quot;&gt;&lt;a href=&quot;http://tjandroid.blogspot.com/2010/12/enabledisable-usb-tethering.html&quot;&gt;&lt;span style=&quot;color: #7d181e;&quot;&gt;Android Tethering API (froyo or above)&lt;/span&gt;&lt;/a&gt; &lt;/h3&gt;&lt;div class=&quot;post-header&quot;&gt;&lt;div class=&quot;post-header-line-1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;post-body entry-content&quot;&gt;ConnectivityManager class has tethering API methods but those methods are not visible in SDK.&lt;br /&gt;
But tethering methods exists in ConnectivityManager class and they works properly.&lt;br /&gt;
I used java reflection the standard java feature.&lt;br /&gt;
For using those methods, do as following.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Get ConnectivityManager class&lt;/b&gt;&lt;br /&gt;
Object obj = getSystemService(Context.CONNECTIVITY_SERVICE);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Find &quot;tether&quot; method on the object&lt;/b&gt;&lt;br /&gt;
Method m = obj.getClass().getDeclaredMethod(&quot;tether&quot;, String.class);&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Invoke that method:&lt;/b&gt;&amp;nbsp;When invoke the method send tethering interface usually &#39;usb0&#39;&lt;br /&gt;
m.invoke(obj, &quot;usb0&quot;)&lt;br /&gt;
&lt;br /&gt;
If you want to turn off the tethering connection, you simply invoke the &quot;untether&quot; method in this way.&lt;br /&gt;
&lt;br /&gt;
I hope this information helps you.&lt;/div&gt;&lt;div class=&quot;post-body entry-content&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;post-body entry-content&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;post-body entry-content&quot;&gt;出處:&lt;/div&gt;&lt;div class=&quot;post-body entry-content&quot;&gt;&lt;a href=&quot;http://tjandroid.blogspot.com/2010/12/enabledisable-usb-tethering.html&quot;&gt;http://tjandroid.blogspot.com/2010/12/enabledisable-usb-tethering.html&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;post-body entry-content&quot;&gt;&amp;nbsp;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8839242758703799562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8839242758703799562'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/03/android-android-tethering-api-froyo-or.html' title='[Android] Android Tethering API (froyo or above) --JAVA Reflection'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-8180034389371920869</id><published>2012-03-28T11:47:00.000+08:00</published><updated>2012-03-28T11:47:57.686+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>[android] disable/enable data connection -- JAVA Reflection</title><content type='html'>Starting from &#39;FROYO&#39; you can use the &lt;strong&gt;IConnectivityManager.setMobileDataEnabled()&lt;/strong&gt; method. It&#39;s hidden in API, but can be accessed with &lt;strong&gt;reflection&lt;/strong&gt;. &lt;a href=&quot;http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/net/ConnectivityManager.java#376&quot;&gt;http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/net/ConnectivityManager.java#376&lt;/a&gt;&lt;br /&gt;
With this method you can change the system setting: &#39;Settings -&amp;gt; Wireless &amp;amp; network -&amp;gt; Mobile network settings -&amp;gt; &lt;strong&gt;Data Enabled&lt;/strong&gt;&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Code example:&lt;br /&gt;
&lt;pre class=&quot;default prettyprint&quot;&gt;&lt;code&gt;&lt;span class=&quot;kwd&quot;&gt;private&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; setMobileDataEnabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Context&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; context&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;boolean&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; enabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;ConnectivityManager&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; conman &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;ConnectivityManager&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; context&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getSystemService&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Context&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;CONNECTIVITY_SERVICE&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; conmanClass &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;forName&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;conman&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;());&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Field&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; iConnectivityManagerField &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; conmanClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getDeclaredField&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;mService&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; iConnectivityManagerField&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setAccessible&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Object&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; iConnectivityManager &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; iConnectivityManagerField&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;conman&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; iConnectivityManagerClass &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Class&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;forName&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;iConnectivityManager&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;().&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getName&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;());&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;final&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Method&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; setMobileDataEnabledMethod &lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; iConnectivityManagerClass&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;getDeclaredMethod&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;&quot;setMobileDataEnabled&quot;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot;&gt;Boolean&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;TYPE&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp; &amp;nbsp; setMobileDataEnabledMethod&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;setAccessible&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;
&amp;nbsp;
&amp;nbsp; &amp;nbsp; setMobileDataEnabledMethod&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;invoke&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;iConnectivityManager&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; enabled&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;default prettyprint&quot;&gt;&lt;code&gt;&lt;span class=&quot;pln&quot;&gt;&lt;br /&gt;
&amp;nbsp;&lt;/span&gt;&lt;/code&gt;Also you need the &lt;strong&gt;CHANGE_NETWORK_STATE&lt;/strong&gt; permission.&lt;br /&gt;
&lt;pre class=&quot;default prettyprint&quot;&gt;&lt;code&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;uses-permission&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt; &lt;/span&gt;&lt;span class=&quot;atn&quot;&gt;android:name&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;atv&quot;&gt;&quot;android.permission.CHANGE_NETWORK_STATE&quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;Needless to say that this approach might not work in future android versions. But I guess that applications such as &#39;3G watchdog&#39;, &#39;APNdroid&#39; or &#39;DataLock&#39; work this way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
出處&lt;a href=&quot;http://stackoverflow.com/questions/3644144/how-to-disable-mobile-data-on-android&quot;&gt;http://stackoverflow.com/questions/3644144/how-to-disable-mobile-data-on-android&lt;/a&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8180034389371920869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8180034389371920869'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/03/android-disableenable-data-connection.html' title='[android] disable/enable data connection -- JAVA Reflection'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-7232224850925390811</id><published>2012-03-28T11:34:00.002+08:00</published><updated>2012-03-28T11:35:12.888+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>JAVA Reflection</title><content type='html'>&amp;nbsp; Reflection 是 Java 程式開發語言的特徵之一，它允許營運中的 Java 程式對自身進行檢查，或者說搜尋 Java 類中各成員的名稱並顯示出來。&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; 考慮下面這個簡單的例子，讓我們看看 reflection 是如何工作的。&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;&lt;div class=&quot;codeHeader&quot;&gt;&lt;b&gt;DumpMethods.java&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeHeader&quot;&gt;&lt;/div&gt;&lt;div class=&quot;codeContent&quot;&gt;&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; java.lang.reflect.*;

&lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; class DumpMethods {

    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; void main(&lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; args[]) {
        &lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; {
            &lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt; c = &lt;span class=&quot;code-object&quot;&gt;Class&lt;/span&gt;.forName(args[0]);
            Method m[] = c.getDeclaredMethods();
            &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; (&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; i = 0; i &amp;lt; m.length; i++)
                &lt;span class=&quot;code-object&quot;&gt;System&lt;/span&gt;.out.println(m[i].toString());
        } &lt;span class=&quot;code-keyword&quot;&gt;catch&lt;/span&gt; (Throwable e) {
            &lt;span class=&quot;code-object&quot;&gt;System&lt;/span&gt;.err.println(e);
        }
    }
}&lt;/pre&gt;&lt;pre class=&quot;code-java&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class=&quot;code-java&quot;&gt;按如下語句執行︰
java DumpMethods java.util.Stack
它的結果輸出為︰
public java.lang.Object java.util.Stack.push(java.lang.Object)
public synchronized java.lang.Object java.util.Stack.pop()
public synchronized java.lang.Object java.util.Stack.peek()
public boolean java.util.Stack.empty()
public synchronized int java.util.Stack.search(java.lang.Object)
這樣就列出了java.util.Stack 類的各方法名以及它們的限制符和返回類型。
這個程式使用 Class.forName 載入指定的類，然後調用 getDeclaredMethods 來獲取這個類中定義了的方法列表。
java.lang.reflect.Methods 是用來描述某個類中單個方法的一個類。&lt;/pre&gt;&lt;pre class=&quot;code-java&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class=&quot;code-java&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class=&quot;code-java&quot;&gt;出處:&lt;/pre&gt;&lt;pre class=&quot;code-java&quot;&gt;&lt;a href=&quot;http://www.javaworld.com.tw/confluence/display/J2SE/Reflection&quot;&gt;http://www.javaworld.com.tw/confluence/display/J2SE/Reflection&lt;/a&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/7232224850925390811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/7232224850925390811'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/03/java-reflection.html' title='JAVA Reflection'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-3118294440809795712</id><published>2012-02-25T15:15:00.000+08:00</published><updated>2012-02-25T15:15:01.757+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Learning"/><title type='text'>Activity的生命週期</title><content type='html'>&lt;a href=&quot;http://www.moke.tw/wordpress/computer/advanced/253&quot; id=&quot;post-253&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Android開發筆記－Activity的生命週期&quot;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.moke.tw/wordpress/computer/advanced/253&quot; id=&quot;post-253&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link to Android開發筆記－Activity的生命週期&quot;&gt;Activity的生命週期&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;
&lt;br /&gt;
內容說明：Activity的相關應用整理與生命週期說明&lt;br /&gt;
資料來源：&lt;a href=&quot;http://developer.android.com/guide/topics/fundamentals/activities.html&quot; target=&quot;_blank&quot;&gt;Android Developers&lt;/a&gt;&lt;br /&gt;
&lt;span id=&quot;more-253&quot;&gt;&lt;/span&gt;&lt;br /&gt;
Activity是讓我們進行某個功能時的畫面，它的產生是採取堆疊制的，越晚出現的畫面放在最上面，一旦最後出現的畫面被關閉，就會開啟倒數第二個畫面，即是我們在操作Android手機時，若按下&quot;返回&quot;鍵，就會回到上一個畫面的意思。&lt;br /&gt;
&lt;br /&gt;
Activity的生命週期如圖所示：&lt;br /&gt;
&lt;img alt=&quot;&quot; src=&quot;https://lh3.googleusercontent.com/_SAlWJ_xow1Y/TW3GEYm4OqI/AAAAAAAACfE/1g0co8Ro6rw/s640/activity_lifecycle.png&quot; /&gt;&lt;br /&gt;
&lt;strong&gt;onCreate()&lt;/strong&gt;&lt;br /&gt;
當activity第一次被啟動時呼叫。此時系統會建立activity的畫面，並且可以透過Bundle等物件進行初始化設定（參考「&lt;a href=&quot;http://www.moke.tw/wordpress/computer/advanced/231&quot; target=&quot;_blank&quot;&gt;Activity間互相傳值&lt;/a&gt;」）。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;onStart()&lt;/strong&gt;&lt;br /&gt;
讓activity能被使用者看見。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;onResume()&lt;/strong&gt;&lt;br /&gt;
將activity移到堆疊的最上層，讓使用者可以和activity互動。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;onPause()&lt;/strong&gt;&lt;br /&gt;
當有簡訊、電話、Toast、AlertDialog等另外一個activity進行時，進入onPause()的狀態，停止對螢幕的存取能力。如果畫面沒有轉移，則回到onResume()；若畫面轉移到新的activity時，則進入onStop()。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;onStop()&lt;/strong&gt;&lt;br /&gt;
當使用者看不見此activity的畫面時產生。如果這個activity無法透過返回鍵回復，則進入onDestroy()；反之則繼續停留在Stop狀態，當使用者返回此頁面時，則進入onRestart()。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;onRestart()&lt;/strong&gt;&lt;br /&gt;
重新啟動Stop狀態的activity。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;onDestroy()&lt;/strong&gt;&lt;br /&gt;
當activity被銷毀時執行。銷毀的原因有幾種：activity不會再被使用、程式呼叫finish()、系統因記憶體不足而銷毀Stop程序。要確認activity是否被銷毀可使用 &lt;a href=&quot;http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29&quot; target=&quot;_blank&quot;&gt;isFinishing()&lt;/a&gt; 方法。&lt;br /&gt;
這些控制生命週期的方法可以在Eclipse選單 Source &amp;gt; Override/Implement Methods 中找到。&lt;br /&gt;
在正常情況下，記憶會保存使用者輸入的資料，但是在記憶體不足時，系統會銷毀Stop狀態的activity，此時使用者輸入的資料會消失。此外， 若是系統設定在程式運行中改變（例如螢幕方向、鍵盤狀態和語言），則activity會立即銷毀並重建（執行onDestroy()後接著執行 onCreate()）。&lt;br /&gt;
&lt;br /&gt;
因此如果我們寫的程式不希望使用者輸入的資料因為種種原因而消失，則必需要在onPause()的時候將資料儲存起來，並且在onCreate()將資料讀出，重新顯示在畫面上。</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/3118294440809795712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/3118294440809795712'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/activity.html' title='Activity的生命週期'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/_SAlWJ_xow1Y/TW3GEYm4OqI/AAAAAAAACfE/1g0co8Ro6rw/s72-c/activity_lifecycle.png" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-2215706266109158591</id><published>2012-02-03T16:20:00.003+08:00</published><updated>2012-02-03T16:21:14.752+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>File System和MTD技术</title><content type='html'>&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;本節介紹File System和MTD技術&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一 FS&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;熟知的FS有ext2,3,4.但是這些都是針對磁盤設備的。而ES中一般的存儲設備為Flash，由於Flash的特殊性：&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Flash存儲按照Block  size進行劃分，而一個BLS一般有幾十K。（對比磁盤的一個簇才512個字節）。這麼大的BLS有什麼壞處呢？很明顯，擦除一個BL就需要花費很長的時間了。&lt;/span&gt;  &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;另外，FLASH操作，一次必須針對一個BL，也就是如果我想修改一個字節的話，也必須先擦掉128K。這不是想死嗎？&lt;/span&gt;  &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;FLASH每個BL擦寫次數是有限的，例如2百萬次？如果每次都操作同一個BL的話，很快這個BL就會死掉。&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;所以，針對FLASH的特性，整出了一個Journaling Flash File  System(JFFS2，第二版)。它的特點就是：&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;損耗均衡，也就是每次擦寫都不會停留在一個BL上。例如BL1上寫一個文件，那麼再來一個新文件的時候，FS就不會選擇BL1了，而是選擇BL2。這個技術叫weal  leveling:損耗均衡&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;（apt-get install  mtd-tools，下載不少好工具，另外，可見往flash設備寫log，可能會導致flash短命喔）&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;一些偽文件系統：proc/sysfs，systool工具用來分析sysfs。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ES中常用的FS還有ramfs/rootfs/tmpfs，都是基於內存的FS。這個和前面講的initramfs有什麼關係？實際上這些是基於Initramfs的。&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;這裡要解釋一下幾個比如容易混淆的東西：&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ram  disk:這個是一個基於ram的disk，用來模擬block設備的，所以它是建立在一個虛擬的BLOCK設備上的，至於上面的FS用什麼，無所謂.這樣就引起效率等的問題。畢竟你的read等操作還是要傳遞到驅動的，並且如果該設備上構造了一個EXT2  FS的話，還得有相應的ext2-FS模塊。麻煩..&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;ramfs：這是一個基於內存的FS，而不是一個基於真實設備的FS。ramfs的特點就是用戶可以死勁寫內存，直到把系統內存搞空。&lt;/span&gt;  &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;為了控制一下上面這個缺點，引出了tmpfs，可以指定tmpfs的size。（這個又好像和真實設備有點類似，因為真實設備的存儲空間也是有限的）&lt;/span&gt;  &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;rootfs是一種特殊的ramfs或者tmpfs（看LK中是否啟用了tmpfs），另外，rootfs是不能被umount的&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;下面介紹一下如何利用mount  loop創建一個虛擬的基於文件的BLOCK設備。&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;先創建一個全是0的文件，利用dd命令：dd if=/dev/zero  of=../fstest bs=1024 count=512 這個解釋如下：從if中拷貝數據到of,每次拷貝字節為1024，拷貝總次數為512.  各位可用十六制工具看看，生成的文件裡邊全是0X00&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;在這個文件中創建FS，mkfs.ext2fs  ../fstest。現在，FS就存在於這個文件了。其實FS也就是一些組織結構，例如superblock,inode等信息&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;如何把這個帶有FS信息的文件掛載呢？其實也就是如何把這個文件當做一個Block  device呢？利用mount的loop選項，mount -t ext2 -o loop fstest  /tmp/。這樣這個文件就被當做一個虛擬Block設備掛載到tmp了。&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;二 MTD技術&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;MTD全稱是Memory Technology  Device，內存技術設備？實際上是一個虛擬設備驅動層，類似Virtual File System。它提供標準API給那些操作Raw Flash的device  driver。那麼Flash device和普通的Block device的區別是什麼呢？&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;普通的BLD只有兩種操作：read和write&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;而Flash  Device有三種操作：read，write和erase，另外，還需要一種wear leveling算法來做損耗均衡&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;這裡要重點指出的是：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: red; font-size: 16px;&quot;&gt;SD/MMC卡、CF（Compact  Flash）卡、USB Flash等並不是MTD設備，因為這些設備中已經有一個內置的Flash Translation  Layer，這個layer處理erase、wear leveling事情了（這個TL應該是固件中支持的）。所以這些設備直接當做普通的Block  Device使用&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;（上面的描述還是沒能說清楚MTD到底是怎麼用的，以後會結合源碼分析一下）&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;2.1 內核中啟用MTD支持&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;這個很簡單，make  menuconfig的時候打開就行了，有好幾個選項。&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://hi.csdn.net/attachment/201109/22/0_1316656911DbKf.gif&quot; /&gt;&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;圖1 LK中MTD支持的配置選項&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;其中：&lt;/div&gt;&lt;ul&gt;&lt;li&gt; &lt;div align=&quot;left&quot;&gt;MTC_CHAR和MTD_BLOCK用來支持CHAR模式和BLOCK模式讀寫MTD設備。這個和普通的char以及block設備意思一樣&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;最後兩個是在內核中設置一個MTD test驅動。8192K用來設置總大小，第二個128用來設置block  size。就是在內核中搞了一個虛擬的Flash設備，用作測試&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div align=&quot;left&quot;&gt;ES中又如何配置MTD及其相關的東西呢？&lt;/div&gt;&lt;ul&gt;&lt;li&gt; &lt;div align=&quot;left&quot;&gt;為Flash  Disk設置分區（也可以整個Device就一個分區。BTW，我一直沒徹底搞清楚分區到底是想幹什麼，這個可能是歷史原因啦....）&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;設置Flash的類型以及location。Flash設備分為NOR和NAND，本節最後會簡單介紹下二者的區別。&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;為Flash芯片選擇合適的driver&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;為LK配置driver&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div align=&quot;left&quot;&gt;下面先看看分區的設置&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;可對Flash分區，這裡有一些稍微重要的內容：如何把Flash分區的信息傳遞給LK呢？有兩種方法：&lt;/div&gt;&lt;ul&gt;&lt;li&gt; &lt;div align=&quot;left&quot;&gt;將整個device的分區情況存在一個BLock中，這樣BootLoader啟動的時候，根據這個BLock中的內容建立相應信息等。好像只有Red  Boot支持。所以叫RedBoot Partition Table。另外，LK可以識別這種分區，通過CFI（Command Flash  Interface）讀取這個分區的信息。&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;Kernel Command Line  Partitioning:通過Kernel啟動的時候傳入參數，不過KL必須配置一下。Command格式如下：&lt;/div&gt;&lt;div align=&quot;center&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://hi.csdn.net/attachment/201109/22/0_1316656941o1Dz.gif&quot; /&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div align=&quot;center&quot;&gt;圖2 &lt;/div&gt;&lt;div align=&quot;left&quot;&gt;再看看Driver的Mapping，也就是將MTD和對應的Flash Driver配對...&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;kernel/drivers/mtd/maps......，以後要分析&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;Flash芯片本身的Driver呢？&lt;/div&gt;&lt;div&gt;kernel/drivers/mtd/chips，目前比較流行的是CFI接口&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;三 一些參考資料和補充知識&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.linux-mtd.infradead.org/&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;http://www.linux-mtd.infradead.org/&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;MTD的本意是：&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;We&#39;re working on a generic Linux subsystem  for memory devices, especially Flash devices.&lt;br /&gt;
The aim of the system is to  make it simple to provide a driver for new hardware, by providing a generic  interface between the hardware drivers and the upper layers of the  system.&lt;br /&gt;
Hardware drivers need to know nothing about the storage formats used,  such as FTL, FFS2, etc., but will only need to provide simple routines for read,  write and erase. Presentation of the device&#39;s contents to the user in an  appropriate form will be handled by the upper layers of the system.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;MTD overview&lt;br /&gt;
MTD subsystem (stands for  Memory Technology Devices) provides an abstraction layer for raw flash devices.  It makes it possible to use the same API when working with different flash types  and technologies, e.g. NAND, OneNAND, NOR, AG-AND, ECC&#39;d NOR, etc.&lt;br /&gt;
MTD  subsystem does not deal with block devices like MMC, eMMC, SD, CompactFlash,  etc. These devices are not raw flashes but they have a Flash Translation layer  inside, which makes them look like block devices. These devices are the subject  of the Linux block subsystem, not MTD. Please, refer to this FAQ section for a  short list of the main differences between block and MTD devices. And the raw  flash vs. FTL devices UBIFS section discusses this in more details.&lt;br /&gt;
MTD  subsystem has the following interfaces.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;MTD character  devices - usually referred to as /dev/mtd0, /dev/mtd1, and so on. These  character devices provide I/O access to the raw flash. They support a number of  ioctl calls for erasing eraseblocks, marking them as bad or checking if an  eraseblock is bad, getting information about MTD devices, etc.&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt; /dev/mtdx竟然是char device！！&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;The sysfs interface is relatively newer and it  provides full information about each MTD device in the system. This interface is  easily extensible and developers are encouraged to use the sysfs interface  instead of older ioctl or /proc/mtd interfaces, when possible.&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;The /proc/mtd proc file system file provides  general MTD information. This is a legacy interface and the sysfs interface  provides more information.&lt;br /&gt;
MTD subsystem supports bare NAND flashes with  software and hardware ECC, OneNAND flashes, CFI (Common Flash Interface) NOR  flashes, and other flash types.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Additionally, MTD supports legacy FTL/NFTL  &quot;translation layers&quot;, M-Systems&#39; DiskOnChip 2000 and Millennium chips, and  PCMCIA flashes (pcmciamtd driver). But the corresponding drivers are very old  and not maintained very much.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;MTD Block Driver:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;The mtdblock driver available in the MTD is  an archaic tool which emulates block devices on top of MTD devices. It does not  even have bad eraseblock handling, so it is not really usable with NAND flashes.  And it works by caching a whole flash erase block in RAM, modifying it as  requested, then erasing the whole block and writing back the modified. This  means that mtdblock does not try to do any optimizations, and that you will lose  lots of data in case of power cuts. And last, but not least, mtdblock does not  do any wear-leveling.&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Often people consider  mtdblock as general FTL layer and try to use block-based file systems on top of  bare flashes using mtdblock. This is wrong in most cases. In other words,  please, do not use mtdblock unless you know exactly what you are  doing.&lt;/span&gt;There is also a read-only version of this driver which doesn&#39;t  have the capacity to do the caching and erase/writeback, mainly for use with  uCLinux where the extra RAM requirement was considered too large&lt;/span&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;/div&gt;&lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;These are the modules which  provide interfaces that can be used directly from userspace. The user modules  currently planned include:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt; &lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Raw character access: &lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;A character device which allows direct access to the  underlying memory. Useful for creating filesystems on the devices, before using  some of the translation drivers below, or for raw storage on  infrequently-changed flash, or RAM devices.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Raw block access ：A block device  driver which allows you to pretend that the flash is a normal device with  sensible sector size. &lt;span style=&quot;color: red;&quot;&gt;It actually works by caching  a whole flash erase block in RAM, modifying it as requested, then erasing the  whole block and writing back the modified data.&lt;/span&gt;This allows you to use  normal filesystems on flash parts. Obviously it&#39;s not particularly robust when  you are writing to it - you lose a whole erase block&#39;s worth of data if your  read/modify/erase/rewrite cycle actually goes read/modify/erase/poweroff. But  for development, and for setting up filesystems which are actually going to be  mounted read-only in production units, it should be fine.&amp;nbsp;There is also a  read-only version of this driver which doesn&#39;t have the capacity to do the  caching and erase/writeback, mainly for use with uCLinux where the extra RAM  requirement was considered too large.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Flash Translation Layer  (FTL)：NFTL，Block device drivers which implement an FTL/NFTL filesystem on the  underlying memory device. FTL is fully functional. NFTL is currently working for  both reading and writing, but could probably do with some more field testing  before being used on production systems.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt; &lt;div align=&quot;left&quot;&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Journalling Flash File System,  v2：This provides a filesystem directly on the flash, rather than emulating a  block device. For more information, see sources.redhat.com.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;MTD hardware device drivers&lt;br /&gt;
&lt;br /&gt;
These  provide physical access to memory devices, and are not used directly - they are  accessed through the user modules above.&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;&lt;br /&gt;
On-board memory：Many PC chipsets are incapable of  correctly caching system memory above 64M or 512M. A driver exists which allows  you to use this memory with the linux-mtd system.&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;PCMCIA devices：PCMCIA flash (not CompactFlash  but real flash) cards are now supported by the pcmciamtd driver in CVS.&lt;/span&gt;  &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Common Flash Interface (CFI) onboard NOR  flash：This is a common solution and is well-tested and supported, most often  using JFFS2 or cramfs file systems.&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Onboard NAND flash：NAND flash is rapidly  overtaking NOR flash due to its larger size and lower cost; JFFS2 support for  NAND flash is approaching production quality.&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;M-Systems&#39; DiskOnChip 2000 and  Millennium：&lt;/span&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;The DiskOnChip 2000, Millennium  and Millennium Plus devices should be fully supported, using their native NFTL  and INFTL &#39;translation layers&#39;. Support for JFFS2 on DiskOnChip 2000 and  Millennium is also operational although lacking proper support for bad block  handling.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;這裡牽扯到NOR和NAND，那麼二者有啥區別呢？&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;Beside the different silicon cell design, the  most important difference between NAND and NOR Flash is the bus interface. NOR  Flash is connected to a address / data bus direct like other memory devices as  SRAM etc. NAND Flash uses a multiplexed I/O Interface with some additional  control pins. NAND flash is a sequential access device appropriate for mass  storage applications, while NOR flash is a random access device appropriate for  code storage application. NOR Flash can be used for code storage and code  execution. Code stored on NAND Flash can&#39;t be executed from there. It must be  loaded into RAM memory and executed from there.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;NOR可以直接和CPU相連，就好像內存一樣。NAND不可以，因為NAND還需要別的一些I/O控制接口。所以NAND更像磁盤，而NOR更像內存&lt;/span&gt;  &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;NOR比NAND貴，並且，NAND支持順序讀取，而NOR支持隨機讀取。&lt;/span&gt;  &lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 16px;&quot;&gt;所以，NOR中可存儲代碼，這樣CPU直接讀取就在其中運行。NAND不可以（主要還是因為CPU取地址的時候不能直接找到NAND）&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2215706266109158591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2215706266109158591'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/file-systemmtd.html' title='File System和MTD技术'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-8509052969269480326</id><published>2012-02-03T10:16:00.003+08:00</published><updated>2012-02-03T10:17:20.010+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>Polling, Interrupt-driven I/O, DMA(Direct Memory Access)</title><content type='html'>三種將資料在I/O間傳送的方法有&lt;br /&gt;
1. Polling&lt;br /&gt;
2. Interrupt-driven I/O&lt;br /&gt;
3. DMA(Direct Memory Access)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Polling&lt;/strong&gt;：最簡單的方式讓I/O device與CPU溝通。I/O  device只要將information放進status  register，CPU會週期性的檢查並取得information來得知需要服務的device。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Interrupt-driven I/O&lt;/strong&gt;：利用interrupt的機制，當一個I/O  device需要服務時，會發出interrupt來通知CPU。一個I/O interrupt對於指令的執行是asynchronous，Control  unit需要在執行一個新指令時檢查是否有pending I/O  interrupt。I/O&amp;nbsp;interrupt也會傳達更多訊息，如哪個device發出的interrupt和它的priority。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;DMA(Direct Memory Access)&lt;/strong&gt;：提供一個device controller，讓I/O  device能夠直接在記憶體做資料的傳輸，不需要CPU的參與。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;u&gt;DMA transfer的三個步驟&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;
1. CPU要初始化DMA controller，包括提供I/O  device的名稱、執行何種運算、記憶體位置以及所要傳送的bytes數。&lt;br /&gt;
&lt;br /&gt;
2.  DMA開始運作。如果request需要多於一次的transfer在bus上，DMA unit會產生下一個memory  address和初始下一次的transfer。&lt;br /&gt;
&lt;br /&gt;
3. 一旦DMA transfer完成，DMA  controller發出一個interrupt給CPU。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;height: 165px; width: 547px;&quot;&gt;&lt;caption&gt;優缺點比較&lt;/caption&gt; &lt;tbody&gt;
&lt;tr&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;&amp;nbsp;Polling&lt;/td&gt; &lt;td&gt;&amp;nbsp;Interrupt-driven I/O&lt;/td&gt; &lt;td&gt;DMA&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;優點&lt;/td&gt; &lt;td&gt;簡單容易執行，可利用軟體來更改CPU polling的順序&lt;/td&gt; &lt;td&gt;不用浪費許多時間在polling上面&lt;/td&gt; &lt;td&gt;適用於高速裝置&lt;br /&gt;
不用浪費許多時間在polling上面&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;缺點&lt;/td&gt; &lt;td&gt;因為CPU速度遠快於I/O device，會浪費許多時間在polling上&lt;br /&gt;
不適合high-bandwidth devices&lt;/td&gt; &lt;td&gt;需要有interrupt signals和interrupt service routine存在&lt;br /&gt;
不適合high-bandwidth&amp;nbsp;devices&lt;/td&gt; &lt;td&gt;需要有DMA controller&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8509052969269480326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8509052969269480326'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/polling-interrupt-driven-io-dmadirect.html' title='Polling, Interrupt-driven I/O, DMA(Direct Memory Access)'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-6104782164969732838</id><published>2012-02-02T16:57:00.000+08:00</published><updated>2012-02-02T16:57:05.076+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>u-boot common/main.c</title><content type='html'>&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;接下来我们主要分析&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;main_loop()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;common/main.c:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;void main_loop (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifndef CFG_HUSH_PARSER&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static char lastcommand[CFG_CBSIZE] = { 0, };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int len;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int rc = 1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int flag;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#if defined(CONFIG_BOOTDELAY) &amp;amp;&amp;amp; (CONFIG_BOOTDELAY &amp;gt;= 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *s;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int bootdelay;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_PREBOOT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *p;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOTCOUNT_LIMIT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long bootcount = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long bootlimit = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char *bcs;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char bcs_set[16];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /* CONFIG_BOOTCOUNT_LIMIT */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#if defined(CONFIG_VFD) &amp;amp;&amp;amp; defined(VFD_TEST_LOGO)&amp;nbsp;&amp;nbsp; /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulong bmp = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* default bitmap */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern int trab_vfd (ulong bitmap);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_MODEM_SUPPORT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (do_mdm_init)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bmp = 1;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* alternate bitmap */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; trab_vfd (bmp);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&amp;nbsp; /* CONFIG_VFD &amp;amp;&amp;amp; VFD_TEST_LOGO */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOTCOUNT_LIMIT&amp;nbsp;&amp;nbsp; /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bootcount = bootcount_load();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bootcount++;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bootcount_store (bootcount);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sprintf (bcs_set, &quot;%lu&quot;, bootcount);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; setenv (&quot;bootcount&quot;, bcs_set);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bcs = getenv (&quot;bootlimit&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bootlimit = bcs ? simple_strtoul (bcs, NULL, 10) : 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /* CONFIG_BOOTCOUNT_LIMIT */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_MODEM_SUPPORT /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug (&quot;DEBUG: main_loop:&amp;nbsp;&amp;nbsp; do_mdm_init=%d/n&quot;, do_mdm_init);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (do_mdm_init) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uchar *str = strdup(getenv(&quot;mdm_cmd&quot;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setenv (&quot;preboot&quot;, str);&amp;nbsp; /* set or delete definition */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (str != NULL)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; free (str);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mdm_init(); /* wait for modem connection */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&amp;nbsp; /* CONFIG_MODEM_SUPPORT */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_VERSION_VARIABLE /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern char version_string[];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setenv (&quot;ver&quot;, version_string);&amp;nbsp; /* set version variable */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /* CONFIG_VERSION_VARIABLE */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CFG_HUSH_PARSER /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; u_boot_hush_start ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_AUTO_COMPLETE /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; install_auto_complete();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_PREBOOT /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((p = getenv (&quot;preboot&quot;)) != NULL) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_AUTOBOOT_KEYED /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int prev = disable_ctrlc(1);&amp;nbsp;&amp;nbsp; /* disable Control C checking */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifndef CFG_HUSH_PARSER /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run_command (p, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parse_string_outer(p, FLAG_PARSE_SEMICOLON |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLAG_EXIT_FROM_LOOP);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_AUTOBOOT_KEYED /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disable_ctrlc(prev);&amp;nbsp;&amp;nbsp; /* restore Control C checking */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /* CONFIG_PREBOOT */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;/**/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#if defined(CONFIG_BOOTDELAY) &amp;amp;&amp;amp; (CONFIG_BOOTDELAY &amp;gt;= 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; s = getenv (&quot;bootdelay&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug (&quot;### main_loop entered: bootdelay=%d/n/n&quot;, bootdelay);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_BOOT_RETRY_TIME&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; init_cmd_timeout ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif /* CONFIG_BOOT_RETRY_TIME */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOTCOUNT_LIMIT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (bootlimit &amp;amp;&amp;amp; (bootcount &amp;gt; bootlimit)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf (&quot;Warning: Bootlimit (%u) exceeded. Using altbootcmd./n&quot;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (unsigned)bootlimit);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s = getenv (&quot;altbootcmd&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /* CONFIG_BOOTCOUNT_LIMIT */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s = getenv (&quot;bootcmd&quot;);&amp;nbsp; /*smdk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;下这个环境变量是空的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; debug (&quot;### main_loop: bootcmd=/&quot;%s/&quot;/n&quot;, s ? s : &quot;&amp;lt;UNDEFINED&amp;gt;&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (bootdelay &amp;gt;= 0 &amp;amp;&amp;amp; s &amp;amp;&amp;amp; !abortboot (bootdelay)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_AUTOBOOT_KEYED&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int prev = disable_ctrlc(1);&amp;nbsp;&amp;nbsp; /* disable Control C checking */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifndef CFG_HUSH_PARSER&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run_command (s, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parse_string_outer(s, FLAG_PARSE_SEMICOLON |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLAG_EXIT_FROM_LOOP);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_AUTOBOOT_KEYED&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disable_ctrlc(prev);&amp;nbsp;&amp;nbsp; /* restore Control C checking */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_MENUKEY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (menukey == CONFIG_MENUKEY) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s = getenv(&quot;menucmd&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (s) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifndef CFG_HUSH_PARSER&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run_command (s, 0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parse_string_outer(s, FLAG_PARSE_SEMICOLON |&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FLAG_EXIT_FROM_LOOP);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /* CONFIG_MENUKEY */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&amp;nbsp; /* CONFIG_BOOTDELAY */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_AMIGAONEG3SE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern void video_banner(void);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; video_banner();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Main &lt;st1:place w:st=&quot;on&quot;&gt;Loop&lt;/st1:place&gt; for Monitor Command Processing&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;最核心的就是下面这个死循环了&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CFG_HUSH_PARSER&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; parse_file_outer();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* This point is never reached */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOT_RETRY_TIME&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rc &amp;gt;= 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Saw enough of a valid command to&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * restart the timeout.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reset_cmd_timeout();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; len = readline (CFG_PROMPT);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag = 0;&amp;nbsp;&amp;nbsp; /* assume no special flags for now */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (len &amp;gt; 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strcpy (lastcommand, console_buffer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (len == 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag |= CMD_FLAG_REPEAT;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOT_RETRY_TIME&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (len == -2) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* -2 means timed out, retry autoboot&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (&quot;/nTimed out waiting for command/n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_RESET_TO_RETRY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Reinit board to run initialization code again */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do_reset (NULL, 0, 0, NULL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* retry autoboot */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (len == -1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (&quot;&amp;lt;INTERRUPT&amp;gt;/n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = run_command (lastcommand, flag);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rc &amp;lt;= 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* invalid command or not repeatable, forget it */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lastcommand[0] = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /*CFG_HUSH_PARSER*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;该函数比较长，但核心就是不停的从串口获取命令并解析执行此命令，&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;这个功能就在函数尾部的那个死循环里，&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt; &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;我们重点就是分析这个循环。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;先看&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;readline()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;common/main.c:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;/****************************************************************************/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;* Prompt for input and read a line.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;* If&amp;nbsp; CONFIG_BOOT_RETRY_TIME is defined and retry_time &amp;gt;= 0,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;* time out when time goes past endtime (timebase time in ticks).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;* Return:&amp;nbsp; number of read characters&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1 if break&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -2 if timed out&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;* &lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;上面的注释说的很清楚了，就是提示用户输入命令，并读取这个命令&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;int readline (const char *const prompt)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp; *p = console_buffer;&amp;nbsp;&amp;nbsp; /* console_buffer &lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;是个全局变量&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* buffer index&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int plen = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* prompt length&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int col;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* output column cnt&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char&amp;nbsp;&amp;nbsp;&amp;nbsp; c;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* print prompt */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (prompt) { /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;如果要输出提示符，则输出&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; plen = strlen (prompt);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (prompt);&amp;nbsp; //&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;前面分析过了&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; col = plen;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOT_RETRY_TIME&amp;nbsp; /*sdmk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!tstc()) {&amp;nbsp; /* while no incoming data */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (retry_time &amp;gt;= 0 &amp;amp;&amp;amp; get_ticks() &amp;gt; endtime)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (-2);&amp;nbsp;&amp;nbsp;&amp;nbsp; /* timed out */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WATCHDOG_RESET();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Trigger watchdog, if needed */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_SHOW_ACTIVITY /*sdmk2410&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;没定义&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!tstc()) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern void show_activity(int arg);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; show_activity(0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = getc();&amp;nbsp; /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;从串口获取用户输入的命令&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Special character handling&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;下面这个&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;就是处理不同的字符了&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &#39;/r&#39;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Enter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &#39;/n&#39;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *p = &#39;/0&#39;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (&quot;/r/n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (p - console_buffer);&amp;nbsp; /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;输入结束&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &#39;/0&#39;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* nul&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&amp;nbsp; /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;忽略，继续&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x03:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ^C - break*//*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;呵呵，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;linux&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;下的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;ctrl+c&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;功能&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console_buffer[0] = &#39;/0&#39;;&amp;nbsp; /* discard input */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return (-1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x15:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ^U - erase line */ /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;删除&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (col &amp;gt; plen) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (erase_seq);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --col;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p = console_buffer;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x17:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ^W - erase word *//*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;删除&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p=delete_char(console_buffer, p, &amp;amp;col, &amp;amp;n, plen);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((n &amp;gt; 0) &amp;amp;&amp;amp; (*p != &#39; &#39;)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p=delete_char(console_buffer, p, &amp;amp;col, &amp;amp;n, plen);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x08:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* ^H&amp;nbsp; - backspace */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case 0x&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;7&quot; tcsc=&quot;0&quot; unitname=&quot;F&quot; w:st=&quot;on&quot;&gt;7F&lt;/st1:chmetcnv&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;st1:state w:st=&quot;on&quot;&gt;&lt;st1:place w:st=&quot;on&quot;&gt;DEL&lt;/st1:place&gt;&lt;/st1:state&gt; - backspace */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p=delete_char(console_buffer, p, &amp;amp;col, &amp;amp;n, plen);/*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;删除&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;获取常规字符&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Must be a normal character then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (n &amp;lt; CFG_CBSIZE-2) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (c == &#39;/t&#39;) {&amp;nbsp;&amp;nbsp; /* expand TABs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_AUTO_COMPLETE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* if auto completion triggered just continue */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;/*&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;自动补全功能，熟悉&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;linux&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;的肯定知道&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*p = &#39;/0&#39;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cmd_auto_complete(prompt, console_buffer, &amp;amp;n, &amp;amp;col)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p = console_buffer + n; /* reset */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; continue;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (tab_seq+(col&amp;amp;07));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col += 8 - (col&amp;amp;07);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++col;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* echo input&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; putc (c);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *p++ = c;/*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;把字符保存在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;buffer&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;中&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ++n;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Buffer full&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; putc (&#39;/a&#39;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;上面这个函数就是提示用户输入，然后一直等待用户输入，指到用户输入完成&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;, &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;然后获取用户数据，并存入全局变量&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;console_buffer&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;中。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;再来回顾下那个&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;for&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-fareast-language: ZH-CN; mso-hansi-font-family: Arial;&quot;&gt;循环&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt; mso-fareast-language: ZH-CN;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;common/main.c:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;void main_loop (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;……&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CFG_HUSH_PARSER&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; parse_file_outer();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* This point is never reached */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (;;) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOT_RETRY_TIME&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rc &amp;gt;= 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Saw enough of a valid command to&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * restart the timeout.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reset_cmd_timeout();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; len = readline (CFG_PROMPT); /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;获取用户下的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;command*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag = 0;&amp;nbsp;&amp;nbsp; /* assume no special flags for now */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (len &amp;gt; 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strcpy (lastcommand, console_buffer);&amp;nbsp; /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;把&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;command&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;存入&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;lastcommand&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;中&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (len == 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag |= CMD_FLAG_REPEAT;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#ifdef CONFIG_BOOT_RETRY_TIME&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (len == -2) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* -2 means timed out, retry autoboot&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (&quot;/nTimed out waiting for command/n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# ifdef CONFIG_RESET_TO_RETRY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Reinit board to run initialization code again */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do_reset (NULL, 0, 0, NULL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* retry autoboot */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (len == -1)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts (&quot;&amp;lt;INTERRUPT&amp;gt;/n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = run_command (lastcommand, flag); /*&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;执行&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;command*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rc &amp;lt;= 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* invalid command or not repeatable, forget it */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lastcommand[0] = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;#endif /*CFG_HUSH_PARSER*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;background: white; line-height: 19.5pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;OK&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;！核心中的核心就是&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;run_command&lt;/span&gt;&lt;span style=&quot;color: #333333; font-size: 10.5pt; mso-ascii-font-family: Arial; mso-bidi-font-family: Arial; mso-hansi-font-family: Arial;&quot;&gt;函数了，一猜就知道是用户执行所有用户下达命令的函数。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;color: #333333; font-family: Arial; font-size: 10.5pt;&quot;&gt;Let’s go&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/6104782164969732838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/6104782164969732838'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/u-boot-commonmainc.html' title='u-boot common/main.c'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-503914685741667825</id><published>2012-02-02T16:42:00.006+08:00</published><updated>2012-02-02T16:53:46.087+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>bootloader概述（转）</title><content type='html'>&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;引导加载程序是系 统加电后运行的第一段软件代码。回忆一下&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; PC &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的体系结构我们可以知道，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;PC &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;机中的引导加载程序由&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; BIOS(&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;其本质就是一段固件程序&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;)&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;和位于硬盘&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; MBR &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; OS Boot Loader&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;（比如，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;LILO &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; GRUB &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;等）一起组成。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;BIOS &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;在完成硬件检测和资源分配后，将硬盘&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; MBR &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;读到系统的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; RAM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中，然后将控制权交给&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; OS Boot Loader&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的主要运行任务就是将内核映象从硬盘上读到&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; RAM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中，然后跳转到内核的入口点去运行，也即开始启动操作系统。&lt;/span&gt;&lt;br /&gt;
&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;而在嵌入式系统中， 通常并没有像&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; BIOS &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;那样的固件程序（注，有的嵌入式&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;也会内嵌一段短小的启动程序），因此整个系统的加载启动任务就完全由&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;来完成。比如在一个基于&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; ARM9 core &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的嵌入式系统中，系统在上电或复位时通常都从地址&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; 0x00000000 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;处开始执行，而在这个地址处安排的通常就是系统的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;程序。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;本文将从&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;的概念、&lt;span lang=&quot;EN-US&quot;&gt;Boot Loader &lt;/span&gt;的主要任务、&lt;span lang=&quot;EN-US&quot;&gt;Boot Loader &lt;/span&gt;的框架结构以及&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;的安装等四个方面来讨论嵌入式系统的&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader&lt;/span&gt;。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的概念&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;简单地说，&lt;span lang=&quot;EN-US&quot;&gt;Boot Loader &lt;/span&gt;就是在操作系统内核运行之前运行的一段小程序。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;通过这段小程序，我们可以初始化硬件设备、建立内存空间的映射图，从而将系统的软硬件环境带到一个合适的状态，以便为最终调用操作系统内核准备好正确的环境。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;通 常，&lt;span lang=&quot;EN-US&quot;&gt;Boot Loader &lt;/span&gt;是严重地依赖于硬件而实现的，特别是在嵌入式世界。因此，在嵌入式世界里建立一个通用的&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;几乎是不可能的。尽管如此，我们仍然可以对&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;归纳出一些通用的概念来，以指导用户特定的&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;设计与实现。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;1. Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;所支持的&lt;span lang=&quot;EN-US&quot;&gt; CPU &lt;/span&gt;和嵌入式板&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;每种不同的&lt;span lang=&quot;EN-US&quot;&gt; CPU &lt;/span&gt;体系结构都有不同的&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader&lt;/span&gt;。有些&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;也支持多种体系结构的&lt;span lang=&quot;EN-US&quot;&gt; CPU&lt;/span&gt;，比如&lt;span lang=&quot;EN-US&quot;&gt; U-Boot &lt;/span&gt;就同时支持&lt;span lang=&quot;EN-US&quot;&gt; ARM &lt;/span&gt;体系结构和&lt;span lang=&quot;EN-US&quot;&gt;MIPS &lt;/span&gt;体系结构。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;除了依赖于&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的体系结构外，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;实际上也依赖于具体的嵌入式板级设备的配置。这也就是说，对于两块不同的嵌入式板而言，即使它们是基于同一种&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;而构建的，要想让运行在一块板子上的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;程序也能运行在另一块板子上，通常也都需要修改&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的源程序。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;2. Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的安装媒介（&lt;span lang=&quot;EN-US&quot;&gt;Installation Medium&lt;/span&gt;）&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;系 统加电或复位后，所有的&lt;span lang=&quot;EN-US&quot;&gt; CPU &lt;/span&gt;通常都从某个由&lt;span lang=&quot;EN-US&quot;&gt; CPU &lt;/span&gt;制造商预先安排的地址上取指令。比如，基于&lt;span lang=&quot;EN-US&quot;&gt; ARM7TDMI core &lt;/span&gt;的&lt;span lang=&quot;EN-US&quot;&gt; CPU &lt;/span&gt;在复位时通常都从地址&lt;span lang=&quot;EN-US&quot;&gt; 0x00000000 &lt;/span&gt;取它的第一条指令。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;而基于&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;构建的嵌入式系统通常都有某种类型的固态存储设备&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;(&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;比如：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;ROM&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;、&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;EEPROM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;或&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; FLASH &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;等&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;)&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;被映射到这个预先安排的地址上。因此在系统加电后，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;将首先执行&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;程序。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;3. &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;用来控制&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的设备或机制&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;主机和目标机之间一般通过串口建立连接，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;软件在执行时通常会通过串口来进行&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; I/O&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;，比如：输出打印信息到串口，从串口读取用户控制字符等。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;4. Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的启动过程是单阶段（&lt;span lang=&quot;EN-US&quot;&gt;Single Stage&lt;/span&gt;）还是多阶段（&lt;span lang=&quot;EN-US&quot;&gt;Multi-Stage&lt;/span&gt;）&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;通 常多阶段的&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;能提供更为复杂的功能，以及更好的可移植性。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;从固态存储设备上启动的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;大多都是&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; 2 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;阶段的启动过程，也即启动过程可以分为&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; stage 1 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; stage 2 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;两部分。而至于在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; stage 1 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; stage 2 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;具体完成哪些任务将在下面讨论。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;5. Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的操作模式&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; (Operation Mode)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;大多数&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;都包含两种不同的操作模式：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&quot;&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;启动加载&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&quot;&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;模式和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&quot;&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;下载&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&quot;&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;模式，这种区别仅对于开发人员才有意义。但从最终用户的角度看，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的作用就是用来加载操作系统，而并不存在所谓的启动加载模式与下载工作模式的区别。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;启动加载（&lt;span lang=&quot;EN-US&quot;&gt;Boot loading&lt;/span&gt;）模式：&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;这 种模式也称为&lt;span lang=&quot;EN-US&quot;&gt;&quot;&lt;/span&gt;自主&lt;span lang=&quot;EN-US&quot;&gt;&quot;&lt;/span&gt;（&lt;span lang=&quot;EN-US&quot;&gt;Autonomous&lt;/span&gt;）模式。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;也即&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;从目标机上的某个固态存储设备上将操作系统加载到&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; RAM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中运行，整个过程并没有用户的介入。这种模式是&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的正常工作模式，因此在嵌入式产品发布的时侯，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;显然必须工作在这种模式下。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;下载（&lt;span lang=&quot;EN-US&quot;&gt;Downloading&lt;/span&gt;）模式：&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;在这种模式下，目标机 上的&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;将通过串口连接或网络连接等通信手段从主机（&lt;span lang=&quot;EN-US&quot;&gt;Host&lt;/span&gt;）下载文件，比如：下载内核映像和根文件系统映像等。从主机下载的文件通常首先被&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;保存到目标机的&lt;span lang=&quot;EN-US&quot;&gt; RAM &lt;/span&gt;中，然后再被&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;写到目标机上的&lt;span lang=&quot;EN-US&quot;&gt;FLASH &lt;/span&gt;类固态存储设备中。&lt;span lang=&quot;EN-US&quot;&gt;Boot Loader &lt;/span&gt;的这种模式通常在第一次安装内核与根文件系统时被使用；此外，以后的系统更新也会使用&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;的这种工作模式。工作于这种模式下的&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;通常都会向它的终端用户提供一个简单的命令行接口。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;像&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Blob &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;或&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; U-Boot &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;等这样功能强大的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;通常同时支持这两种工作模式，而且允许用户在这两种工作模式之间进行切换。比如，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;U-boot &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;在启动时处于正常的启动加载模式，但是它会延时&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; 10 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;秒等待终端用户按下任意键而将&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; U-boot&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;切换到下载模式。如果在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; 10 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;秒内没有用户按键，则&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; U-boot &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;继续启动&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Linux &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;内核。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;6. BootLoader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;与主机之间进行文件传输所用的通信设备及协议&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;最 常见的情况就是，目标机上的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;通过串口与主机之间进行文件传输，传输协议通常是&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; xmodem&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;／&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;ymodem&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;／&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;zmodem &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;协议中的一种。但是，串口传输的速度是有限的，因此通过以太网连接并借助&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; TFTP &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;协议（或者&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;NFS&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;协议）来下载文件是个更好的选择。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;此外，在论及这个话题时，主机方所用的软件也要考虑。比如，在通过以太网连接和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; TFTP &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;协议（或者&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;NFS&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;协议）来下载文件时，主机方必须有一个软件用来的提供&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; TFTP&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;（或者&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;NFS&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;） 服务。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的主要任务与典型结构框架&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;从操作系统的角度看，&lt;span lang=&quot;EN-US&quot;&gt;Boot Loader &lt;/span&gt;的总目标就是正确地调用内核来执行。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;另 外，由于&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;的实现依赖于&lt;span lang=&quot;EN-US&quot;&gt; CPU &lt;/span&gt;的体系结构，因此大多数&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;都分为&lt;span lang=&quot;EN-US&quot;&gt; stage1 &lt;/span&gt;和&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;两大部分。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;依赖于&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;体系结构的代码，比如设备初始化代码等，通常都放在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; stage1 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中，而且通常都用汇编语言来实现，以达到短小精悍的目的。而&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; stage2 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;则通常用&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;C&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;语言来实现，这样可以实现给复杂的功能，而且代码会具有更好的可读性和可移植性。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的&lt;span lang=&quot;EN-US&quot;&gt; stage1 &lt;/span&gt;通常包括以下步骤&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;以执行的先后顺序&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;：&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;硬件设备初始化。      &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;为加载&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;的&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;准备&lt;span lang=&quot;EN-US&quot;&gt; RAM &lt;/span&gt;空间。 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;拷贝&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;的&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;到&lt;span lang=&quot;EN-US&quot;&gt; RAM &lt;/span&gt;空间中。 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;设置好堆栈。      &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;跳转到&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;的&lt;span lang=&quot;EN-US&quot;&gt; C &lt;/span&gt;入口点。 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;通常包括以下步骤&lt;span lang=&quot;EN-US&quot;&gt;(&lt;/span&gt;以执行的先后顺序&lt;span lang=&quot;EN-US&quot;&gt;)&lt;/span&gt;：&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;初始化本阶段要使用到的硬件设备。 &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;检测系统内存映射&lt;span lang=&quot;EN-US&quot;&gt;(memory map)&lt;/span&gt;。 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;将&lt;span lang=&quot;EN-US&quot;&gt; kernel &lt;/span&gt;映像和根文件系统映像从&lt;span lang=&quot;EN-US&quot;&gt; flash &lt;/span&gt;上读到&lt;span lang=&quot;EN-US&quot;&gt; RAM &lt;/span&gt;空间中。 &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;为内核设置启动参数。 &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;调用内核。      &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的&lt;span lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 新細明體;&quot;&gt;stage1&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;基本的硬件初始化&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;这是&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;一开始就执行的操作，其目的是为&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;的执行以及随后的&lt;span lang=&quot;EN-US&quot;&gt; kernel &lt;/span&gt;的执行准备好一些基本的硬件环境。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;它通常包括以下步骤（以执行的先后顺序）：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;1&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;． &lt;b&gt;屏蔽所有的中断。&lt;/b&gt;为中断提供服务通常是&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; OS &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;设备驱动程序的责任，因此在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的执行全过程中可以不必响应任何中断。中断屏蔽可以通过写&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的中断屏蔽寄存器或状态寄存器（比如&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; ARM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPSR &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;寄存器）来完成。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;2&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;． &lt;b&gt;设置&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的速度和时钟频率。&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;3&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;． &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;RAM &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;初始化。&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;包括正确地设置系统的内存控制器的功能寄存器以及各内存库控制寄存器等。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;4.&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;关闭&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;内部指令／数据&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; cache&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;拷贝&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; stage2 &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;到&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; RAM &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;拷贝时要确定两点：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;(1) stage2 &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;的可执行映象在固态存储设备的存放起始地址和终止地址；&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;(2) RAM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;空间的起始地址。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;设置堆栈指针&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; sp&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;堆栈指针的设置是为了执行&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; C &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;语言代码作好准备。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;跳转到&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;的&lt;span lang=&quot;EN-US&quot;&gt; C &lt;/span&gt;入口点&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;在上述一切都就绪后，就可以跳转到&lt;span lang=&quot;EN-US&quot;&gt; Boot Loader &lt;/span&gt;的&lt;span lang=&quot;EN-US&quot;&gt; stage2 &lt;/span&gt;去执行了。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;比如，在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; ARM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;系统中，这可以通过修改&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; PC &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;寄存器为合适的地址来实现。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的&lt;span lang=&quot;EN-US&quot;&gt; stage2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;stage2 &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的代码通常用&lt;span lang=&quot;EN-US&quot;&gt; C &lt;/span&gt;语言来实现，以便于实现更复杂的功能和取得更好的代码可读性和可移植性。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;但是与普通&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; C &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;语言应用程序不同的是，在编译和链接&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; boot loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;这样的程序时，我们不能使用&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; glibc &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;库中的任何支持函数。其原因是显而易见的。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;初始化本阶段要使用到的硬件设备&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;这通常包括：初始化至少一个串口，以便和终端用户进行&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; I/O &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;输出信息。设备初始化完成后，可以输出一些打印信息，程序名字字符串、版本号等。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;加载内核映像&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;从&lt;span lang=&quot;EN-US&quot;&gt;nor flash&lt;/span&gt;或&lt;span lang=&quot;EN-US&quot;&gt;nand flash&lt;/span&gt;（需要编写&lt;span lang=&quot;EN-US&quot;&gt;nand flash&lt;/span&gt;裸驱动）上将内核映像拷贝到&lt;span lang=&quot;EN-US&quot;&gt;RAM&lt;/span&gt;中&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;设置内核的启动参数&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;应该说，在将内核映像拷贝到&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; RAM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;空间中后，就可以准备启动&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Linux &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;内核了。但是在调用内核之前，应该作一步准备工作，即：设置&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Linux &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;内核的启动参数。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Linux 2.4.x &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;以后的内核都期望以标记列表&lt;span lang=&quot;EN-US&quot;&gt;(tagged list)&lt;/span&gt;的形式来传递启动参数。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;启动参数标记列表以标记&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; ATAG_CORE &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;开始，以标记&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; ATAG_NONE &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;结束。每个标记由标识被传递参数的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; tag_header &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;结构以及随后的参数值数据结构来组成。数据结构&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; tag &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; tag_header &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;定义在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Linux &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;内核源码的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;include/asm/setup.h &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;头文件中。在嵌入式&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Linux &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;系统中，通常需要由&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;设置的常见启动参数有：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;ATAG_CORE&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;、&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;ATAG_MEM&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;、&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;ATAG_CMDLINE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;调用内核&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Boot Loader &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;调用&lt;span lang=&quot;EN-US&quot;&gt; Linux &lt;/span&gt;内核的方法是直接跳转到内核的第一条指令处，也即直接跳转到&lt;span lang=&quot;EN-US&quot;&gt; MEM_START&lt;/span&gt;＋&lt;span lang=&quot;EN-US&quot;&gt;0x8000 &lt;/span&gt;地址处。&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;在跳转时，下列条件要满足：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;1&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;．&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; CPU &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;寄存器的设置：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;R0&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;＝&lt;span lang=&quot;EN-US&quot;&gt;0&lt;/span&gt;； &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;R1&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;＝机器类型&lt;span lang=&quot;EN-US&quot;&gt; ID&lt;/span&gt;；关于&lt;span lang=&quot;EN-US&quot;&gt;      Machine Type Number&lt;/span&gt;，可以参见 &lt;b&gt;&lt;span lang=&quot;EN-US&quot;&gt;linux/arch/arm/tools/mach-types&lt;/span&gt;。&lt;/b&gt;      &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;R2&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;＝启动参数标记列表在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; RAM &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;中起始基地址； &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;．&lt;span lang=&quot;EN-US&quot;&gt; CPU &lt;/span&gt;模式：&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;必须禁止中断（&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;IRQs&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;FIQs&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;）； &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;CPU &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;必须&lt;span lang=&quot;EN-US&quot;&gt; SVC &lt;/span&gt;模式； &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;．&lt;span lang=&quot;EN-US&quot;&gt; Cache &lt;/span&gt;和&lt;span lang=&quot;EN-US&quot;&gt; MMU &lt;/span&gt;的设置：&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;MMU &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;必须关闭； &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;指令&lt;span lang=&quot;EN-US&quot;&gt; Cache &lt;/span&gt;可以打开也可以关闭； &lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;数据&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Cache &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;必须关闭； &lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;如果用&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; C &lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;语言，可以像下列示例代码这样来调用内核：&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm;&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 細明體; mso-bidi-font-family: 細明體; mso-font-kerning: 0pt;&quot;&gt;void (*theKernel)(int zero, int arch, u32 params_addr) = (void (*)(int,   int, u32))KERNEL_RAM_BASE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 細明體; mso-bidi-font-family: 細明體; mso-font-kerning: 0pt;&quot;&gt;……&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 細明體; mso-bidi-font-family: 細明體; mso-font-kerning: 0pt;&quot;&gt;theKernel(0, ARCH_NUMBER, (u32) kernel_params_start);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 細明體; mso-bidi-font-family: 細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;注：到此为止，绝大多数内容均来源于&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;a href=&quot;http://scyz.spaces.live.com/mmm2009-09-01_09.47/#author&quot;&gt;&lt;span lang=&quot;ZH-CN&quot;&gt;詹荣开&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;所著&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;“&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;嵌入式系统&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Boot Loader &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;技术内幕&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;”&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;，只作了少量修改，可视为对该文的转载&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;下表显示的是几种不同的&lt;span lang=&quot;EN-US&quot;&gt;bootloader&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;MsoNormalTable&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Bootloader&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Monitor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;描述&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;x86&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;ARM&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;PowerPC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;LILO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;Linux&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;磁盘引导程序&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;GRUB&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;GNU&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的&lt;span lang=&quot;EN-US&quot;&gt; LILO&lt;/span&gt;替代程序&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Loadlin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;从&lt;span lang=&quot;EN-US&quot;&gt; DOS&lt;/span&gt;引导&lt;span lang=&quot;EN-US&quot;&gt;   Linux&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;ROLO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;从&lt;span lang=&quot;EN-US&quot;&gt; ROM&lt;/span&gt;引导&lt;span lang=&quot;EN-US&quot;&gt;   Linux&lt;/span&gt;而不需要&lt;span lang=&quot;EN-US&quot;&gt; BIOS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;Etherboot&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;通过以太网卡启动&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt; Linux&lt;/span&gt;&lt;span lang=&quot;ZH-CN&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;系统的固件&lt;/span&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;LinuxBIOS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;完全替代&lt;span lang=&quot;EN-US&quot;&gt; BUIS&lt;/span&gt;的&lt;span lang=&quot;EN-US&quot;&gt; Linux&lt;/span&gt;引导程序&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;BLOB&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;LART&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;等硬件平台的引导程序&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;否&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;U-boot&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;通用引导程序&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;tr&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 75.75pt;&quot; width=&quot;101&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;RedBoot&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 133.5pt;&quot; width=&quot;178&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;基于&lt;span lang=&quot;EN-US&quot;&gt; eCos&lt;/span&gt;的引导程序&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 29.25pt;&quot; width=&quot;39&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style=&quot;padding: 0cm 0cm 0cm 0cm; width: 54.75pt;&quot; width=&quot;73&quot;&gt;   &lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;是&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;X86&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;的工作站和服务器上一般使用&lt;span lang=&quot;EN-US&quot;&gt; LILO&lt;/span&gt;和&lt;span lang=&quot;EN-US&quot;&gt;GRUB&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;ARM&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;处理器的芯片商很多，所以每种芯片的开发板都有自己的&lt;span lang=&quot;EN-US&quot;&gt;Bootloader&lt;/span&gt;。结果&lt;span lang=&quot;EN-US&quot;&gt;ARM bootloader&lt;/span&gt;也变得多种多样。早有为&lt;span lang=&quot;EN-US&quot;&gt;ARM720&lt;/span&gt;处理器的开发板编写的固件，后来又有了&lt;span lang=&quot;EN-US&quot;&gt;armboot&lt;/span&gt;，以及&lt;span lang=&quot;EN-US&quot;&gt;StrongARM&lt;/span&gt;平台的&lt;span lang=&quot;EN-US&quot;&gt;blob&lt;/span&gt;， 还有&lt;span lang=&quot;EN-US&quot;&gt;S&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;2410&lt;/span&gt;处理器开发板上的&lt;span lang=&quot;EN-US&quot;&gt;vivi&lt;/span&gt;等。现在&lt;span lang=&quot;EN-US&quot;&gt;armboot&lt;/span&gt;已经并入了&lt;span lang=&quot;EN-US&quot;&gt;U-Boot&lt;/span&gt;，所以&lt;span lang=&quot;EN-US&quot;&gt;U-Boot&lt;/span&gt;也支持&lt;span lang=&quot;EN-US&quot;&gt;ARM/XSCALE&lt;/span&gt;平台。&lt;span lang=&quot;EN-US&quot;&gt;U- Boot&lt;/span&gt;已经成为&lt;span lang=&quot;EN-US&quot;&gt;ARM&lt;/span&gt;平台事实上的标准&lt;span lang=&quot;EN-US&quot;&gt;Bootloader&lt;/span&gt;。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;PowerPC&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;平台的处理器有标准的&lt;span lang=&quot;EN-US&quot;&gt;Bootloader&lt;/span&gt;，就是&lt;span lang=&quot;EN-US&quot;&gt;ppcboot&lt;/span&gt;。&lt;span lang=&quot;EN-US&quot;&gt;PPCBOOT&lt;/span&gt;在合并&lt;span lang=&quot;EN-US&quot;&gt;armboot&lt;/span&gt;等之后，创建了&lt;span lang=&quot;EN-US&quot;&gt;U-Boot&lt;/span&gt;，成为各种体系结构开发板的通用引导程序。&lt;span lang=&quot;EN-US&quot;&gt;U-Boot&lt;/span&gt;仍然是&lt;span lang=&quot;EN-US&quot;&gt; PowerPC&lt;/span&gt;平台的主要&lt;span lang=&quot;EN-US&quot;&gt;Bootloader&lt;/span&gt;。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;MIPS&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;公司开发的&lt;span lang=&quot;EN-US&quot;&gt; YAMON&lt;/span&gt;是标准的&lt;span lang=&quot;EN-US&quot;&gt;Bootloader&lt;/span&gt;，也有许多&lt;span lang=&quot;EN-US&quot;&gt; MIPS&lt;/span&gt;芯片商为自己的开发板写了&lt;span lang=&quot;EN-US&quot;&gt;Bootloader&lt;/span&gt;。现在，&lt;span lang=&quot;EN-US&quot;&gt;U-Boot&lt;/span&gt;也已经支持&lt;span lang=&quot;EN-US&quot;&gt; MIPS&lt;/span&gt;平台。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;SH&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-bidi-font-family: 新細明體; mso-font-kerning: 0pt;&quot;&gt;平台的标准&lt;span lang=&quot;EN-US&quot;&gt; Bootloader&lt;/span&gt;是&lt;span lang=&quot;EN-US&quot;&gt;sh-boot&lt;/span&gt;。&lt;span lang=&quot;EN-US&quot;&gt;Redboot&lt;/span&gt;在这种平台上也很好用。&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span lang=&quot;EN-US&quot; style=&quot;font-family: 新細明體; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: 新細明體; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW;&quot;&gt;M68K&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: 新細明體; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW;&quot;&gt;平台没有标准的&lt;span lang=&quot;EN-US&quot;&gt;Bootloader&lt;/span&gt;。&lt;span lang=&quot;EN-US&quot;&gt;Redboot&lt;/span&gt;和&lt;span lang=&quot;EN-US&quot;&gt;U-boot&lt;/span&gt;能够支持&lt;span lang=&quot;EN-US&quot;&gt; m68k&lt;/span&gt;系列的系统。&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: 新細明體; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: 新細明體; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: 新細明體; font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-font-family: 新細明體; mso-bidi-language: AR-SA; mso-fareast-language: ZH-TW;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/503914685741667825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/503914685741667825'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/bootloader.html' title='bootloader概述（转）'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-8775723525623630126</id><published>2012-02-02T10:22:00.018+08:00</published><updated>2012-02-22T15:25:13.708+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>u-boot &amp; kernel bring up工作紀錄</title><content type='html'>&lt;b&gt;一、U-Boot&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;u-boot主要帶起cpu, flash, ram, lan(tftp), 每個案子需求不同&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;1. 新增&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; (1) 在include中新增&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;product_info.h &amp;nbsp;=&amp;gt; 定義用來記錄product_info的structure&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; (2) 在include/configs中新增&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; dsr250n_common.h &amp;nbsp;=&amp;gt; 定義dsr250n的資訊, 如ram, memory等...(利用公板的版本修改)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. lib_arm/board.c&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;(1) &amp;nbsp;include &amp;nbsp;product_info.h, 並把product_info儲存在ram中.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;(2)&amp;nbsp;利用eth_init() 去&amp;nbsp;init ethernet &amp;nbsp; (board\cavium\cns3000\cns3xxx_gsw.c)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. common/main.c&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;(1) 於void main_loop (void) 中增加&amp;nbsp;len = readline (CFG_PROMPT_DSR250N);&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (CFG_PROMPT_DSR250N&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&amp;nbsp;=&amp;nbsp;&quot;DSR-250N # &quot;, &amp;nbsp;用於顯示u-boot console的提示文字)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4. add u-boot commands&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; (1) common\cmd_nvedit.c&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;include&amp;nbsp;product_info.h,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;add :&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;do_printpd, &amp;nbsp;do_getpd,&amp;nbsp;do_setpd,&amp;nbsp;do_savepd&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;(2) common\cmd_misc.c&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;include &quot;../board/cavium/cns3000/cns3xxx_phy.h&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;include &quot;../board/cavium/cns3000/cns3xxx_symbol.h&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; add:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;do_phyread,&amp;nbsp;do_phywrite,&amp;nbsp;do_phyreadbypage,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;do_phywritebypage,&amp;nbsp;do_GPIOCtrl,&amp;nbsp;test_wps_button_cmd,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;test_reset_button_cmd,&amp;nbsp;do_testled&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;(3) common\cmd_mem.c&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 加入新的do_mem_mtest&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;5.&amp;nbsp;board\cavium\cns3000\&lt;/b&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;(1) vega.c&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 宣告&amp;nbsp;gpioA_dir,&amp;nbsp;gpioA_set,&amp;nbsp;gpioA_get,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gpioB_dir,&amp;nbsp;gpioB_set,&amp;nbsp;gpioB_get&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 並設定gpioA與gpioB的初始值&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; (2) cns3xxx_switch_type.h &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 參考公板去更改define的value&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; (3) cns3xxx_phy.h&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;參考公板去更改define的value&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; (4)&amp;nbsp;cns3xxx_phy.c&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;add bcm53128_init_internal_phy等init function,&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(5)&amp;nbsp;cns3xxx_gsw.c&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;avoid hw auto polling issue (hardward的bug)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - disable hw auto polling before enable MDC/MDIO&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - this is workaround solution&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;6. 修改Makefile&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;二、Kernel&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;1.&amp;nbsp;drivers\mtd\maps\cns3xxx-flash.c&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; 定義U-boot,&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;U-boot env,&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;kernel,&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;Cavium env, MD的size與offset&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;2. drivers\gpio\cns3xxx-gpio.c&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; (1)&amp;nbsp;#include &amp;lt;mach/gpio.h&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; (2) EXPORT_SYMBOL(cns3xxx_gpio_set_value); &amp;nbsp;=&amp;gt;讓其他module使用 &amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; (3) 把kernel對gpio的改動mark掉 =&amp;gt; 保留boot code的設定&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;3.&amp;nbsp;\arch\arm\configs&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; 增加dsr250n_defconfig與dsr150n_defconfig (參考公板)&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;4.&amp;nbsp;mkbootpImage.sh&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; makefile&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;5. baudrate&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rootfs/etc/inittab&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;6. kernel\linux-2.6.31.1\arch\arm\mach-cns3xxx\pcie.c&lt;/strong&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; pcie1 init</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8775723525623630126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8775723525623630126'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/u-boot-bring-up.html' title='u-boot &amp; kernel bring up工作紀錄'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-2783098778267037192</id><published>2012-02-01T16:22:00.001+08:00</published><updated>2012-02-01T16:34:39.696+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>u-boot 2008.10 board.c分析</title><content type='html'>&lt;div class=&quot;cnt&quot; id=&quot;blog_text&quot;&gt;&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* (C) Copyright 2002-2006&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Wolfgang Denk, DENX Software Engineering, wd@denx.de.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* (C) Copyright 2002&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Sysgo Real-Time Solutions, GmbH &amp;lt;www.elinos.com&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Marius Groeger &amp;lt;mgroeger@sysgo.de&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* See file CREDITS for list of people who contributed to this&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* project.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* This program is free software; you can redistribute it and/or&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* modify it under the terms of the GNU General Public License as&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* published by the Free Software Foundation; either version 2 of&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* the License, or (at your option) any later version.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* This program is distributed in the hope that it will be useful,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* GNU General Public License for more details.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* You should have received a copy of the GNU General Public License&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* along with this program; if not, write to the Free Software&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;* Foundation, Inc., 59 Temple Place, Suite 330, Boston,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* MA 02111-1307 &lt;st1:country-region w:st=&quot;on&quot;&gt;&lt;st1:place w:st=&quot;on&quot;&gt;USA&lt;/st1:place&gt;&lt;/st1:country-region&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* To match the U-Boot user interface on ARM platforms to the U-Boot&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* standard (as on PPC platforms), some messages with debug character&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* are removed from the default U-Boot build.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Define DEBUG here if you want additional info as shown below&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* printed upon startup:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* U-Boot code: &lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;0&quot; tcsc=&quot;0&quot; unitname=&quot;F&quot; w:st=&quot;on&quot;&gt;00F&lt;/st1:chmetcnv&gt;00000 -&amp;gt; &lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;0&quot; tcsc=&quot;0&quot; unitname=&quot;F&quot; w:st=&quot;on&quot;&gt;00F&lt;/st1:chmetcnv&gt;&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;774 BSS: -&amp;gt; 00FC3274&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* IRQ Stack: 00ebff&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;7&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;7c&lt;/st1:chmetcnv&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* FIQ Stack: 00ebef&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;7&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;7c&lt;/st1:chmetcnv&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;common.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;command.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;malloc.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;devices.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;version.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;net.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;serial.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;nand.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;onenand_uboot.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_DRIVER_SMC91111&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &quot;../drivers/net/smc91111.h&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_DRIVER_LAN&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;91&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;91C&lt;/st1:chmetcnv&gt;96&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &quot;../drivers/net/lan&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;91&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;91c&lt;/st1:chmetcnv&gt;96.h&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;DECLARE_GLOBAL_DATA_PTR;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ulong monitor_flash_len;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_HAS_DATAFLASH&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern int AT&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;91&quot; tcsc=&quot;0&quot; unitname=&quot;F&quot; w:st=&quot;on&quot;&gt;91F&lt;/st1:chmetcnv&gt;_DataflashInit(void);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern void dataflash_print_info(void);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifndef CONFIG_IDENT_STRING&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#define CONFIG_IDENT_STRING &quot;&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;const char version_string[] =&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;U_BOOT_VERSION&quot; (&quot; __DATE__ &quot; - &quot; __TIME__ &quot;)&quot;CONFIG_IDENT_STRING;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_DRIVER_CS8900&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern void cs8900_get_enetaddr (uchar * addr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_DRIVER_RTL8019&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern void rtl8019_get_enetaddr (uchar * addr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_HARD_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;) || \&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;defined(CONFIG_SOFT_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#include &amp;lt;i&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2c&lt;/st1:chmetcnv&gt;.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Begin and End of memory area for malloc(), and current &quot;brk&quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static ulong mem_malloc_start = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static ulong mem_malloc_end = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static ulong mem_malloc_brk = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void mem_malloc_init (ulong dest_addr)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;mem_malloc_start = dest_addr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;mem_malloc_end = dest_addr + CFG_MALLOC_LEN;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;mem_malloc_brk = mem_malloc_start;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;memset ((void *) mem_malloc_start, 0,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mem_malloc_end - mem_malloc_start);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void *sbrk (ptrdiff_t increment)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ulong old = mem_malloc_brk;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ulong new = old + increment;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if ((new &amp;lt; mem_malloc_start) || (new &amp;gt; mem_malloc_end)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;return (NULL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;mem_malloc_brk = new;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;return ((void *) old);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/************************************************************************&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Coloured LED functionality&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;************************************************************************&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* May be supplied by boards if desired&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline __coloured_LED_init (void) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline coloured_LED_init (void) __attribute__((weak, alias(&quot;__coloured_LED_init&quot;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline __red_LED_on (void) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline red_LED_on (void) __attribute__((weak, alias(&quot;__red_LED_on&quot;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline __red_LED_off(void) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline red_LED_off(void)&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;__attribute__((weak, alias(&quot;__red_LED_off&quot;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline __green_LED_on(void) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline green_LED_on(void) __attribute__((weak, alias(&quot;__green_LED_on&quot;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline __green_LED_off(void) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline green_LED_off(void)__attribute__((weak, alias(&quot;__green_LED_off&quot;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline __yellow_LED_on(void) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline yellow_LED_on(void)__attribute__((weak, alias(&quot;__yellow_LED_on&quot;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline __yellow_LED_off(void) {}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void inline yellow_LED_off(void)__attribute__((weak, alias(&quot;__yellow_LED_off&quot;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/************************************************************************&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Init Utilities&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;************************************************************************&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Some of this code should be moved into the core functions,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* or dropped completely,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* but let&#39;s get it working (again) first...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static int init_baudrate (void)&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化全局&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;据&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;中波特率的值&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;char tmp[64]; /* long enough for environment variables */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;int i = getenv_r (&quot;baudrate&quot;, tmp, sizeof (tmp));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;gd-&amp;gt;bd-&amp;gt;bi_baudrate = gd-&amp;gt;baudrate = (i &amp;gt; 0)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;? (int) simple_strtoul (tmp, NULL, 10)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;: CONFIG_BAUDRATE;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;return (0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static int display_banner (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*by hugerat,phase 1 -----------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;# if defined(CONFIG_rat2440_LED)&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;S&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;24X0_GPIO * const gpio = S&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;24X0_GetBase_GPIO();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;gpio-&amp;gt;GPBDAT = 0x100; //hugerat&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;在串口初始化和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化完成，串口&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;出信息之前，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;LED1&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;、&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;LED2&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;、&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;LED3?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;亮起！&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*-------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*by hugerat,phase 2-------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if !defined(CONFIG_rat2440_LED)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;S&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;24X0_GPIO * const gpio = S&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;24X0_GetBase_GPIO();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*--------------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;printf (&quot;\n\n%s\n\n&quot;, version_string);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;debug (&quot;U-Boot code: %08lX -&amp;gt; %08lX BSS: -&amp;gt; %08lX\n&quot;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;_armboot_start, _bss_start, _bss_end);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_MODEM_SUPPORT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;debug (&quot;Modem Support enabled\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_USE_IRQ&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;debug (&quot;IRQ Stack: %08lx\n&quot;, IRQ_STACK_START);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;debug (&quot;FIQ Stack: %08lx\n&quot;, FIQ_STACK_START);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;return (0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* WARNING: this code looks &quot;cleaner&quot; than the PowerPC version, but&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* has the disadvantage that you either get nothing, or everything.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* On PowerPC, you might see &quot;DRAM: &quot; before the system hangs - which&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* gives a simple yet clear indication which part of the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* initialization if failing.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static int display_dram_config (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;int i;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef DEBUG&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts (&quot;RAM Configuration:\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for(i=0; i&amp;lt;CONFIG_NR_DRAM_BANKS; i++) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;printf (&quot;Bank #%d: %08lx &quot;, i, gd-&amp;gt;bd-&amp;gt;bi_dram[i].start);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;print_size (gd-&amp;gt;bd-&amp;gt;bi_dram[i].size, &quot;\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ulong size = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for (i=0; i&amp;lt;CONFIG_NR_DRAM_BANKS; i++) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;size += gd-&amp;gt;bd-&amp;gt;bi_dram[i].size;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts(&quot;DRAM: &quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;print_size(size, &quot;\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;return (0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifndef CFG_NO_FLASH&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static void display_flash_config (ulong size)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts (&quot;Flash: &quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;print_size (size, &quot;\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CFG_NO_FLASH */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_HARD_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;) || defined(CONFIG_SOFT_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static int init_func_i&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2c&lt;/st1:chmetcnv&gt; (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts (&quot;I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;:&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;i&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2c&lt;/st1:chmetcnv&gt;_init (CFG_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;_SPEED, CFG_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;_SLAVE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts (&quot;ready\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;return (0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Breathe some life into the board...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* Initialize a serial port as console, and carry out some hardware&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* tests.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* The first part of initialization is running from Flash memory;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* its main purpose is to initialize the RAM so that we&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* can relocate the monitor code to RAM.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* All attempts to come up with a &quot;common&quot; initialization sequence&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* that works for all boards and architectures failed: some of the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* requirements are just _too_ different. To get rid of the resulting&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* mess of board dependent #ifdef&#39;ed code we now make the whole&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* initialization sequence configurable to the user.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* The requirements for any new initalization function is simple: it&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* receives a pointer to the &quot;global data&quot; structure as it&#39;s only&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* argument, and returns an integer return code, where 0 means&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* &quot;continue&quot; and != 0 means &quot;fatal error, hang the system&quot;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;typedef int (init_fnc_t) (void);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;int print_cpuinfo (void); /* test-only */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;init_fnc_t *init_sequence[] = {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;cpu_init, /* basic cpu dependent setup CPU&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;的基本&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;置&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt; cpu/arm920t/cpu.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;/*&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;分配&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;IRQ&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ansi-language: FR; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;，&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;FIQ?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;底地址&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ansi-language: FR; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;，&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;由于&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;有定&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?CONFIG_USE_IRQ,&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;所以相&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;于空&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;board_init, /* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;基本的板&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;相&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;配置&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- board/smdk2410/smdk2410.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;interrupt_init, /* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化例外&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;理&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- cpu/arm920t/s&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3c&lt;/st1:chmetcnv&gt;24x0/interrupt.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;2410&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;PWM timer 4,&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;使其能自&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?????&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;值，恒定的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;生&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;中&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;信&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;，但是中&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;被屏蔽了用不上。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;env_init,&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;/* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;境&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;量&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- common/env_flash.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;指定&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;境&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;的地址。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;default_environment&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;是默&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;境&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;???&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;置&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;init_baudrate, /* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化波特率&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;置&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- lib_arm/board.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;serial_init, /* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;串口通&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;置&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- cpu/arm920t/s&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3c&lt;/st1:chmetcnv&gt;24x0/serial.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;根据&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;bd&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;中波特率值和&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;pclk,?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;置串口寄存器&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;console_init_f, /* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;控制台初始化&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;段&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;1 -- common/console.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;/*&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;由于&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;准&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;????&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;有初始化&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ansi-language: FR; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;（&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;gd-&amp;gt;flags &amp;amp; GD_FLG_DEVINIT=0&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ansi-language: FR; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;），&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;控制台使用串口作&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;控制台&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;display_banner, /* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;打印&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;u-boot&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;信息&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- lib_arm/board.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_DISPLAY_CPUINFO)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;print_cpuinfo, /* display cpu info (and speed) */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_DISPLAY_BOARDINFO)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;checkboard, /* display board info */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_HARD_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;) || defined(CONFIG_SOFT_I&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2C&lt;/st1:chmetcnv&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;init_func_i&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;2&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;2c&lt;/st1:chmetcnv&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;dram_init,&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;/* &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;配置可用的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;RAM -- board/smdk2410/smdk2410.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;display_dram_config, /* ?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;示&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;RAM&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;的配置大小&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- lib_arm/board.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;NULL,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void start_armboot (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;init_fnc_t **init_fnc_ptr; //??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化指&lt;/span&gt;&lt;span lang=&quot;FR&quot;&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;char *s;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if !defined(CFG_NO_FLASH) || defined (CONFIG_VFD) || defined(CONFIG_LCD)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ulong size;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_VFD) || defined(CONFIG_LCD)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;unsigned long addr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* Pointer is writable since we allocated a register for it */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;// ?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;全局&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;据&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;行地址分配，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;_armboot_start?0x&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;F&quot; w:st=&quot;on&quot;&gt;3f&lt;/st1:chmetcnv&gt;000000,CFG_MALLOC_LEN&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;是堆大小＋&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;境&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;据&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;大小，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;config/smdk2410.h&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;中&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;CFG_MALLOC_LEN&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;大小定&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;??192KB.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* compiler optimization barrier needed for GCC &amp;gt;= 3.4 */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;__asm__ __volatile__(&quot;&quot;: : :&quot;memory&quot;);//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;分配&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;空&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;memset ((void*)gd, 0, sizeof (gd_t));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;gd-&amp;gt;bd = (bd_t*)((char*)gd - sizeof(bd_t));//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;分配板子&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;据&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?bd&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;首地址。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;???&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;合&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;start.s&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;中&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;的分配&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;memset (gd-&amp;gt;bd, 0, sizeof (bd_t)); //&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;分配板子&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;据&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?bd&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;首地址。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;gd-&amp;gt;flags |= GD_FLG_RELOC;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;monitor_flash_len = _bss_start - _armboot_start;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if ((*init_fnc_ptr)() != 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;hang (); //??&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;信息&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;出函&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化函&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifndef CFG_NO_FLASH&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;配置可用的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Flash?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* configure available FLASH banks */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;size = flash_init (); //&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;配置可用的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Flash?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;用&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;board/smdk2410/flash.c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;display_flash_config (size);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CFG_NO_FLASH */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_VFD //&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;把&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;???????&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;置在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;bss_end&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;后面&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;# ifndef PAGE_SIZE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;define PAGE_SIZE 4096&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;* reserve memory for VFD display (always full pages)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* bss_end is defined in the board-specific linker script */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;addr = (_bss_end + (PAGE_SIZE - 1)) &amp;amp; ~(PAGE_SIZE - 1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;size = vfd_setmem (addr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;gd-&amp;gt;fb_base = addr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CONFIG_VFD */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_LCD&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* board init may have inited fb_base */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if (!gd-&amp;gt;fb_base) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;# ifndef PAGE_SIZE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;define PAGE_SIZE 4096&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;# endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;* reserve memory for LCD display (always full pages)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* bss_end is defined in the board-specific linker script *//* ?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;示&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;RAM&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;的配置大小&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt; -- lib_arm/board.c */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;addr = (_bss_end + (PAGE_SIZE - 1)) &amp;amp; ~(PAGE_SIZE - 1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;size = lcd_setmem (addr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;gd-&amp;gt;fb_base = addr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CONFIG_LCD */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* armboot_start is defined in the board-specific linker script */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;mem_malloc_init (_armboot_start - CFG_MALLOC_LEN);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;置&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;heap?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;，供&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;malloc&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;使用。下面的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;量和函&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;定&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;lib_arm/board.c&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_CMD_NAND)&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//nand flash&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts (&quot;NAND: &quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;nand_init(); /* go init the NAND */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_CMD_ONENAND) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;onenand_init();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_HAS_DATAFLASH&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;AT&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;91&quot; tcsc=&quot;0&quot; unitname=&quot;F&quot; w:st=&quot;on&quot;&gt;91F&lt;/st1:chmetcnv&gt;_DataflashInit();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;dataflash_print_info();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* initialize environment */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;env_relocate (); //&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;境&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;量&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_VFD&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* must do this after the framebuffer is allocated */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;drv_vfd_init();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CONFIG_VFD */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_SERIAL_MULTI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;serial_initialize(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* IP Address */&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;gd-&amp;gt;bd-&amp;gt;bi_ip_addr = getenv_IPaddr (&quot;ipaddr&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* MAC Address */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;int i;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;ulong reg;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;char *s, *e;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;char tmp[64];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;i = getenv_r (&quot;ethaddr&quot;, tmp, sizeof (tmp));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;s = (i &amp;gt; 0) ? tmp : NULL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for (reg = 0; reg &amp;lt; 6; ++reg) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;gd-&amp;gt;bd-&amp;gt;bi_enetaddr[reg] = s ? simple_strtoul (s, &amp;amp;e, 16) : 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (s)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;s = (*e) ? e + 1 : e;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化相&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;网&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;???&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;，填&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?IP&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;、&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;MAC&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;地址&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_HAS_ETH1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;i = getenv_r (&quot;eth1addr&quot;, tmp, sizeof (tmp));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;s = (i &amp;gt; 0) ? tmp : NULL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for (reg = 0; reg &amp;lt; 6; ++reg) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;gd-&amp;gt;bd-&amp;gt;bi_enet1addr[reg] = s ? simple_strtoul (s, &amp;amp;e, 16) : 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (s)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;s = (*e) ? e + 1 : e;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;devices_init (); /* get the devices list going. &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;外&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;???&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化定&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;于&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;common/devices.c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_CMC_PU2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;load_sernum_ethaddr ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CONFIG_CMC_PU2 */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;jumptable_init ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;console_init_r (); /* fully init console as a device &lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;后期控制台初始化&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_MISC_INIT_R)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* miscellaneous platform dependent initialisations */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;misc_init_r ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* enable exceptions */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;enable_interrupts ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* Perform network card initialisation if necessary */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_DRIVER_TI_EMAC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern void davinci_eth_set_mac_addr (const u_int8_t *addr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if (getenv (&quot;ethaddr&quot;)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;davinci_eth_set_mac_addr(gd-&amp;gt;bd-&amp;gt;bi_enetaddr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_DRIVER_CS8900&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;cs8900_get_enetaddr (gd-&amp;gt;bd-&amp;gt;bi_enetaddr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_DRIVER_SMC91111) || defined (CONFIG_DRIVER_LAN&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;91&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;91C&lt;/st1:chmetcnv&gt;96)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if (getenv (&quot;ethaddr&quot;)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;smc_set_mac_addr(gd-&amp;gt;bd-&amp;gt;bi_enetaddr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CONFIG_DRIVER_SMC91111 || CONFIG_DRIVER_LAN&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;91&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;91C&lt;/st1:chmetcnv&gt;96 */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* Initialize from environment */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if ((s = getenv (&quot;loadaddr&quot;)) != NULL) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;load_addr = simple_strtoul (s, NULL, 16);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_CMD_NET)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if ((s = getenv (&quot;bootfile&quot;)) != NULL) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;copy_filename (BootFile, s, sizeof (BootFile));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef BOARD_LATE_INIT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;board_late_init ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_CMD_NET)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_NET_MULTI)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts (&quot;Net:&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;eth_initialize(gd-&amp;gt;bd); //bd&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;中已&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?IP&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;MAC&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;已&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;初始化&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_RESET_PHY_R)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;debug (&quot;Reset Ethernet PHY\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;reset_phy();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*by hugerat,phase 1---------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#if defined(CONFIG_rat2440_LED) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;S&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;24X0_GPIO * const gpio = S&lt;st1:chmetcnv hasspace=&quot;False&quot; negative=&quot;False&quot; numbertype=&quot;1&quot; sourcevalue=&quot;3&quot; tcsc=&quot;0&quot; unitname=&quot;C&quot; w:st=&quot;on&quot;&gt;3C&lt;/st1:chmetcnv&gt;24X0_GetBase_GPIO();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*---------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*by hugerat,phase 1-------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;# if defined(CONFIG_rat2440_LED)&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;gpio-&amp;gt;GPBDAT = 0x0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;在&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;入命令提示符之前，四&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?LED?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;同&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;font-family: 新細明體; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;;&quot;&gt;亮起！&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/*-------------------------------------*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* main_loop() can return to retry autoboot, if so just run it again. */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for (;;) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;main_loop ();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* NOTREACHED - no way out of command loop except booting */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;void hang (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;puts (&quot;### ERROR ### Please RESET the board ###\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for (;;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_MODEM_SUPPORT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static inline void mdm_readline(char *buf, int bufsiz);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* called from main loop (common/main.c) */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern void dbg(const char *fmt, ...);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;int mdm_init (void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;FR&quot;&gt;char env_str[16];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;char *init_str;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;int i;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern char console_buffer[];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern void enable_putc(void);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;extern int hwflow_onoff(int);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;enable_putc(); /* enable serial_putc() */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#ifdef CONFIG_HWFLOW&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;init_str = getenv(&quot;mdm_flow_control&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if (init_str &amp;amp;&amp;amp; (strcmp(init_str, &quot;rts/cts&quot;) == 0))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;hwflow_onoff (1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;hwflow_onoff(-1);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for (i = 1;;i++) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;sprintf(env_str, &quot;mdm_init%d&quot;, i);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if ((init_str = getenv(env_str)) != NULL) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;serial_puts(init_str);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;serial_puts(&quot;\n&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;for(;;) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;mdm_readline(console_buffer, CFG_CBSIZE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dbg(&quot;ini%d: [%s]&quot;, i, console_buffer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if ((strcmp(console_buffer, &quot;OK&quot;) == 0) ||&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;(strcmp(console_buffer, &quot;ERROR&quot;) == 0)) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dbg(&quot;ini%d: cmd done&quot;, i);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;break;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;} else /* in case we are originating call ... */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if (strncmp(console_buffer, &quot;CONNECT&quot;, 7) == 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dbg(&quot;ini%d: connect&quot;, i);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;} else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;break; /* no init string - stop modem init */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;udelay(100000);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;udelay(100000);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* final stage - wait for connect */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for(;i &amp;gt; 1;) { /* if &#39;i&#39; &amp;gt; 1 - wait for connection&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;message from modem */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;mdm_readline(console_buffer, CFG_CBSIZE);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;dbg(&quot;ini_f: [%s]&quot;, console_buffer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;if (strncmp(console_buffer, &quot;CONNECT&quot;, 7) == 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;dbg(&quot;ini_f: connected&quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;return 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* &#39;inline&#39; - We have to do it fast */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;static inline void mdm_readline(char *buf, int bufsiz)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;char c;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;char *p;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;int n;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;n = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;p = buf;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;for(;;) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;c = serial_getc();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;/* dbg(&quot;(%c)&quot;, c); */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;switch(c) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;case &#39;\r&#39;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;break;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;case &#39;\n&#39;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*p = &#39;\0&#39;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;default:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;if(n++ &amp;gt; bufsiz) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*p = &#39;\0&#39;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;return; /* sanity check */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;*p = c;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;p++;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;break;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;span lang=&quot;EN-US&quot;&gt;#endif /* CONFIG_MODEM_SUPPORT */&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
出處:http://hi.baidu.com/wellalone/blog/item/337364af001368054a36d6f6.html</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2783098778267037192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2783098778267037192'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/u-boot-200810-boardc.html' title='u-boot 2008.10 board.c分析'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-2749793337032510374</id><published>2012-02-01T11:39:00.005+08:00</published><updated>2012-02-01T11:55:44.519+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>make 參數</title><content type='html'>&lt;span a=&quot;undefined&quot; c=&quot;4&quot; id=&quot;result_box&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; wf=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; xf=&quot;下面列舉了所有GNU make 3.80版的參數定義。&quot;&gt;&lt;span a=&quot;undefined&quot; c=&quot;4&quot; id=&quot;result_box&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; wf=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; xf=&quot;下面列舉了所有GNU make 3.80版的參數定義。&quot;&gt;下面列舉了所有GNU make 3.80版的參數定義。&lt;/span&gt;&lt;span title=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; wf=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; xf=&quot;其它Linux版本和產商的make大同小異，不過其它產商的make的具體參數還是請參考各自的產品文檔。

&quot;&gt;其它Linux版本和產商的make大同小異，不過其它產商的make的具體參數還是請參考各自的產品文檔。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; wf=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; xf=&quot;其它Linux版本和產商的make大同小異，不過其它產商的make的具體參數還是請參考各自的產品文檔。

&quot;&gt;&lt;br /&gt;
&lt;span title=&quot;“-m”&quot; wf=&quot;“-m”&quot; xf=&quot;“-m”
&quot;&gt;“-m”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span title=&quot;这两个参数的作用是忽略和其它版本make的兼容性。&quot; wf=&quot;这两个参数的作用是忽略和其它版本make的兼容性。&quot; xf=&quot;這兩個參數的作用是忽略和其它版本make的兼容性。

&quot;&gt;這兩個參數的作用是忽略和其它版本make的兼容性。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-B”&quot; wf=&quot;“-B”&quot; xf=&quot;“-B”
&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-B”&quot; wf=&quot;“-B”&quot; xf=&quot;“-B”
&quot;&gt;“&lt;/span&gt;&lt;span title=&quot;“-B”&quot; wf=&quot;“-B”&quot; xf=&quot;“-B”
&quot;&gt;-B”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–always-make”&quot; wf=&quot;“–always-make”&quot; xf=&quot;“–always-make”
&quot;&gt;“&lt;/span&gt;&lt;span title=&quot;“–always-make”&quot; wf=&quot;“–always-make”&quot; xf=&quot;“–always-make”
&quot;&gt;–always-make”&lt;/span&gt;&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;認為所有的目標都需要更新（重編譯）。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;&lt;/span&gt;&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;“-C”&lt;br /&gt;
&lt;span title=&quot;“–directory=”&quot; wf=&quot;“–directory=”&quot; xf=&quot;“–directory=”
&quot;&gt;“–directory=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;指定读取makefile的目录。&quot; wf=&quot;指定读取makefile的目录。&quot; xf=&quot;指定讀取makefile的目錄。&quot;&gt;指定讀取makefile的目錄。&lt;/span&gt;&lt;span title=&quot;如果有多个“-C”参数，make的解释是后面的路径以前面的作为相对路径，并以最后的目录作为被指定目录。&quot; wf=&quot;如果有多个“-C”参数，make的解释是后面的路径以前面的作为相对路径，并以最后的目录作为被指定目录。&quot; xf=&quot;如果有多個“-C”參數，make的解釋是後面的路徑以前面的作為相對路徑，並以最後的目錄作為被指定目錄。&quot;&gt;如果有多個“-C”參數，make的解釋是後面的路徑以前面的作為相對路徑，並以最後的目錄作為被指定目錄。&lt;/span&gt;&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;&lt;br /&gt;
&lt;span title=&quot;输出make的调试信息。&quot; wf=&quot;输出make的调试信息。&quot; xf=&quot;輸出make的調試信息。&quot;&gt;輸出make的調試信息。&lt;/span&gt;&lt;span title=&quot;它有几种不同的级别可供选择，如果没有参数，那就是输出最简单的调试信息。&quot; wf=&quot;它有几种不同的级别可供选择，如果没有参数，那就是输出最简单的调试信息。&quot; xf=&quot;它有幾種不同的級別可供選擇，如果沒有參數，那就是輸出最簡單的調試信息。&quot;&gt;它有幾種不同的級別可供選擇，如果沒有參數，那就是輸出最簡單的調試信息。&lt;/span&gt;&lt;span title=&quot;下面是的取值：&quot; wf=&quot;下面是的取值：&quot; xf=&quot;下面是的取值：
&quot;&gt;下面是的取值：&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;a —— 也就是all，输出所有的调试信息。&quot; wf=&quot;a —— 也就是all，输出所有的调试信息。&quot; xf=&quot;a —— 也就是all，輸出所有的調試信息。 &quot;&gt;a —— 也就是all，輸出所有的調試信息。 &lt;/span&gt;&lt;span title=&quot;（会非常的多）&quot; wf=&quot;（会非常的多）&quot; xf=&quot;（會非常的多）
&quot;&gt;（會非常的多）&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;b —— 也就是basic，只输出简单的调试信息。&quot; wf=&quot;b —— 也就是basic，只输出简单的调试信息。&quot; xf=&quot;b —— 也就是basic，只輸出簡單的調試信息。&quot;&gt;b —— 也就是basic，只輸出簡單的調試信息。&lt;/span&gt;&lt;span title=&quot;即输出不需要重编译的目标。&quot; wf=&quot;即输出不需要重编译的目标。&quot; xf=&quot;即輸出不需要重編譯的目標。
&quot;&gt;即輸出不需要重編譯的目標。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;v —— 也就是verbose，在b选项的级别之上。&quot; wf=&quot;v —— 也就是verbose，在b选项的级别之上。&quot; xf=&quot;v —— 也就是verbose，在b選項的級別之上。&quot;&gt;v —— 也就是verbose，在b選項的級別之上。&lt;/span&gt;&lt;span title=&quot;输出的信息包括哪个makefile被解析，不需要被重编译的依赖文件（或是依赖目标）等。&quot; wf=&quot;输出的信息包括哪个makefile被解析，不需要被重编译的依赖文件（或是依赖目标）等。&quot; xf=&quot;輸出的信息包括哪個makefile被解析，不需要被重編譯的依賴文件（或是依賴目標）等。
&quot;&gt;輸出的信息包括哪個makefile被解析，不需要被重編譯的依賴文件（或是依賴目標）等。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;i —— 也就是implicit，输出所以的隐含规则。&quot; wf=&quot;i —— 也就是implicit，输出所以的隐含规则。&quot; xf=&quot;i —— 也就是implicit，輸出所以的隱含規則。
&quot;&gt;i —— 也就是implicit，輸出所以的隱含規則。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;j —— 也就是jobs，输出执行规则中命令的详细信息，如命令的PID、返回码等。&quot; wf=&quot;j —— 也就是jobs，输出执行规则中命令的详细信息，如命令的PID、返回码等。&quot; xf=&quot;j —— 也就是jobs，輸出執行規則中命令的詳細信息，如命令的PID、返回碼等。
&quot;&gt;j —— 也就是jobs，輸出執行規則中命令的詳細信息，如命令的PID、返回碼等。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; wf=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; xf=&quot;下面列舉了所有GNU make 3.80版的參數定義。&quot;&gt;&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; wf=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; xf=&quot;其它Linux版本和產商的make大同小異，不過其它產商的make的具體參數還是請參考各自的產品文檔。

&quot;&gt;&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;“-d”&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span title=&quot;相当于“–debug=a”。&quot; wf=&quot;相当于“–debug=a”。&quot; xf=&quot;相當於“–debug=a”。

&quot;&gt;相當於“–debug=a”。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;相当于“–debug=a”。&quot; wf=&quot;相当于“–debug=a”。&quot; xf=&quot;相當於“–debug=a”。

&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span title=&quot;“-e”&quot; wf=&quot;“-e”&quot; xf=&quot;“-e”
&quot;&gt;“-e”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–environment-overrides”&quot; wf=&quot;“–environment-overrides”&quot; xf=&quot;“–environment-overrides”
&quot;&gt;“–environment-overrides”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;指明环境变量的值覆盖makefile中定义的变量的值。&quot; wf=&quot;指明环境变量的值覆盖makefile中定义的变量的值。&quot; xf=&quot;指明環境變量的值覆蓋makefile中定義的變量的值。

&quot;&gt;&amp;nbsp; 指明環境變量的值覆蓋makefile中定義的變量的值。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;指明环境变量的值覆盖makefile中定义的变量的值。&quot; wf=&quot;指明环境变量的值覆盖makefile中定义的变量的值。&quot; xf=&quot;指明環境變量的值覆蓋makefile中定義的變量的值。

&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span title=&quot;“-f=”&quot; wf=&quot;“-f=”&quot; xf=&quot;“-f=”
&quot;&gt;“-f=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–file=”&quot; wf=&quot;“–file=”&quot; xf=&quot;“–file=”
&quot;&gt;“&lt;/span&gt;&lt;span title=&quot;“–file=”&quot; wf=&quot;“–file=”&quot; xf=&quot;“–file=”
&quot;&gt;–file=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–makefile=”&quot; wf=&quot;“–makefile=”&quot; xf=&quot;“–makefile=”
&quot;&gt;“–makefile=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;指定需要执行的makefile。&quot; wf=&quot;指定需要执行的makefile。&quot; xf=&quot;指定需要執行的makefile。

&quot;&gt;&amp;nbsp; 指定需要執行的makefile。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;&lt;span title=&quot;“-h”&quot; wf=&quot;“-h”&quot; xf=&quot;“-h”
&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-h”&quot; wf=&quot;“-h”&quot; xf=&quot;“-h”
&quot;&gt;“-h”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–help”&quot; wf=&quot;“–help”&quot; xf=&quot;“–help”
&quot;&gt;“–help”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;显示帮助信息。&quot; wf=&quot;显示帮助信息。&quot; xf=&quot;顯示幫助信息。

&quot;&gt;顯示幫助信息。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-i”&quot; wf=&quot;“-i”&quot; xf=&quot;“-i”
&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-i”&quot; wf=&quot;“-i”&quot; xf=&quot;“-i”
&quot;&gt;“-i”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–ignore-errors”&quot; wf=&quot;“–ignore-errors”&quot; xf=&quot;“–ignore-errors”
&quot;&gt;“&lt;/span&gt;&lt;span title=&quot;“–ignore-errors”&quot; wf=&quot;“–ignore-errors”&quot; xf=&quot;“–ignore-errors”
&quot;&gt;–ignore-errors”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span title=&quot;在执行时忽略所有的错误。&quot; wf=&quot;在执行时忽略所有的错误。&quot; xf=&quot;在執行時忽略所有的錯誤。

&quot;&gt;在執行時忽略所有的錯誤。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-I&quot; wf=&quot;“-I&quot; xf=&quot;“-I

&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-I&quot; wf=&quot;“-I&quot; xf=&quot;“-I

&quot;&gt;“-I&lt;/span&gt;&lt;span title=&quot;”&quot; wf=&quot;”&quot; xf=&quot;”
&quot;&gt;”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–include-dir=”&quot; wf=&quot;“–include-dir=”&quot; xf=&quot;“–include-dir=”
&quot;&gt;“–include-dir=”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span title=&quot;指定一个被包含makefile的搜索目标。&quot; wf=&quot;指定一个被包含makefile的搜索目标。&quot; xf=&quot;指定一個被包含makefile的搜索目標。&quot;&gt;指定一個被包含makefile的搜索目標。&lt;/span&gt;&lt;span title=&quot;可以使用多个“-I”参数来指定多个目录。&quot; wf=&quot;可以使用多个“-I”参数来指定多个目录。&quot; xf=&quot;可以使用多個“-I”參數來指定多個目錄。

&quot;&gt;可以使用多個“-I”參數來指定多個目錄。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;可以使用多个“-I”参数来指定多个目录。&quot; wf=&quot;可以使用多个“-I”参数来指定多个目录。&quot; xf=&quot;可以使用多個“-I”參數來指定多個目錄。

&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;可以使用多个“-I”参数来指定多个目录。&quot; wf=&quot;可以使用多个“-I”参数来指定多个目录。&quot; xf=&quot;可以使用多個“-I”參數來指定多個目錄。

&quot;&gt;“-j []”&lt;br /&gt;
&lt;span title=&quot;“–jobs[=]”&quot; wf=&quot;“–jobs[=]”&quot; xf=&quot;“–jobs[=]”
&quot;&gt;“–jobs[=]”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;指同时运行命令的个数。&quot; wf=&quot;指同时运行命令的个数。&quot; xf=&quot;指同時運行命令的個數。&quot;&gt;指同時運行命令的個數。&lt;/span&gt;&lt;span title=&quot;如果没有这个参数，make运行命令时能运行多少就运行多少。&quot; wf=&quot;如果没有这个参数，make运行命令时能运行多少就运行多少。&quot; xf=&quot;如果沒有這個參數，make運行命令時能運行多少就運行多少。&quot;&gt;如果沒有這個參數，make運行命令時能運行多少就運行多少。&lt;/span&gt;&lt;span title=&quot;如果有一个以上的“-j”参数，那么仅最后一个“-j”才是有效的。&quot; wf=&quot;如果有一个以上的“-j”参数，那么仅最后一个“-j”才是有效的。&quot; xf=&quot;如果有一個以上的“-j”參數，那麼僅最後一個“-​​j”才是有效的。 &quot;&gt;如果&amp;nbsp; 有一個以上的“-j”參數，那麼僅最後一個“-​​j”才是有效的。 &lt;/span&gt;&lt;span title=&quot;（注意这个参数在MS-DOS中是无用的）&quot; wf=&quot;（注意这个参数在MS-DOS中是无用的）&quot; xf=&quot;（注意這個參數在MS-DOS中是無用的）

&quot;&gt;（注意這個參數在MS-DOS中是無用的）&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;可以使用多个“-I”参数来指定多个目录。&quot; wf=&quot;可以使用多个“-I”参数来指定多个目录。&quot; xf=&quot;可以使用多個“-I”參數來指定多個目錄。

&quot;&gt;&lt;br /&gt;
&lt;span title=&quot;（注意这个参数在MS-DOS中是无用的）&quot; wf=&quot;（注意这个参数在MS-DOS中是无用的）&quot; xf=&quot;（注意這個參數在MS-DOS中是無用的）

&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span title=&quot;“-k”&quot; wf=&quot;“-k”&quot; xf=&quot;“-k”
&quot;&gt;“-k”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–keep-going”&quot; wf=&quot;“–keep-going”&quot; xf=&quot;“–keep-going”
&quot;&gt;“–keep-going”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;出错也不停止运行。&quot; wf=&quot;出错也不停止运行。&quot; xf=&quot;出錯也不停止運行。&quot;&gt;出錯也不停止運行。&lt;/span&gt;&lt;span title=&quot;如果生成一个目标失败了，那么依赖于其上的目标就不会被执行了。&quot; wf=&quot;如果生成一个目标失败了，那么依赖于其上的目标就不会被执行了。&quot; xf=&quot;如果生成一個目標失敗了，那麼依賴於其上的目標就不會被執行了。

&quot;&gt;如果生成一個目標失敗了，那麼依賴於其上的目標就不會被執行了。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span title=&quot;如果生成一个目标失败了，那么依赖于其上的目标就不会被执行了。&quot; wf=&quot;如果生成一个目标失败了，那么依赖于其上的目标就不会被执行了。&quot; xf=&quot;如果生成一個目標失敗了，那麼依賴於其上的目標就不會被執行了。

&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span title=&quot;“-l ”&quot; wf=&quot;“-l ”&quot; xf=&quot;“-l ”
&quot;&gt;“-l ”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–load-average[=&quot; wf=&quot;“–load-average[=&quot; xf=&quot;“–load-average[=
&quot;&gt;“–load-average[=&lt;/span&gt;&lt;span title=&quot;“—max-load[=]”&quot; wf=&quot;“—max-load[=]”&quot; xf=&quot;“—max-load[=]”
&quot;&gt;“—max-load[=]”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;指定make运行命令的负载。&quot; wf=&quot;指定make运行命令的负载。&quot; xf=&quot;指定make運行命令的負載。

&quot;&gt;指定make運行命令的負載。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-n”&quot; wf=&quot;“-n”&quot; xf=&quot;“-n”
&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-n”&quot; wf=&quot;“-n”&quot; xf=&quot;“-n”
&quot;&gt;“-n”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–just-print”&quot; wf=&quot;“–just-print”&quot; xf=&quot;“–just-print”
&quot;&gt;“–just-print”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–dry-run”&quot; wf=&quot;“–dry-run”&quot; xf=&quot;“–dry-run”
&quot;&gt;“–dry-run”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–recon”&quot; wf=&quot;“–recon”&quot; xf=&quot;“–recon”
&quot;&gt;“–recon”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;僅輸出執行過程中的命令序列，但並不執行。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;“-o ”&lt;br /&gt;
&lt;span title=&quot;“–old-file=”&quot; wf=&quot;“–old-file=”&quot; xf=&quot;“–old-file=”
&quot;&gt;“–old-file=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–assume-old=”&quot; wf=&quot;“–assume-old=”&quot; xf=&quot;“–assume-old=”
&quot;&gt;“–assume-old=”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; wf=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; xf=&quot;不重新生成的指定的，即使這個目標的依賴文件新於它。

&quot;&gt;不重新生成的指定的，即使這個目標的依賴文件新於它。&lt;/span&gt;&lt;/span&gt;&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;&lt;span title=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; wf=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; xf=&quot;不重新生成的指定的，即使這個目標的依賴文件新於它。

&quot;&gt;“-p”&lt;br /&gt;
&lt;span title=&quot;“–print-data-base”&quot; wf=&quot;“–print-data-base”&quot; xf=&quot;“–print-data-base”
&quot;&gt;“–print-data-base”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;输出makefile中的所有数据，包括所有的规则和变量。&quot; wf=&quot;输出makefile中的所有数据，包括所有的规则和变量。&quot; xf=&quot;輸出makefile中的所有數據，包括所有的規則和變量。&quot;&gt;輸出makefile中的所有數據，包括所有的規則和變量。&lt;/span&gt;&lt;span title=&quot;这个参数会让一个简单的makefile都会输出一堆信息。&quot; wf=&quot;这个参数会让一个简单的makefile都会输出一堆信息。&quot; xf=&quot;這個參數會讓一個簡單的makefile都會輸出一堆信息。&quot;&gt;這個參數會讓一個簡單的makefile都會輸出一堆信息。&lt;/span&gt;&lt;span title=&quot;如果你只是想输出信息而不想执行makefile，你可以使用“make -qp”命令。&quot; wf=&quot;如果你只是想输出信息而不想执行makefile，你可以使用“make -qp”命令。&quot; xf=&quot;如果你只是想輸出信息而不想執行makefile，你可以使用“make -qp”命令。&quot;&gt;如果你只是想輸出信息而不想執行makefile，你可以使用“make -qp”命令。&lt;/span&gt;&lt;span title=&quot;如果你想查看执行makefile前的预设变量和规则，你可以使用“make –p –f /dev/null”。&quot; wf=&quot;如果你想查看执行makefile前的预设变量和规则，你可以使用“make –p –f /dev/null”。&quot; xf=&quot;如果你想查看執行makefile前的預設變量和規則，你可以使用“make –p –f /dev/null”。&quot;&gt;如果你想查看執行makefile前的預設變量和規則，你可以使用“make –p –f /dev/null”。&lt;/span&gt;&lt;span title=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; wf=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; xf=&quot;這個參數輸出的信息會包含著你的makefile文件的文件名和行號，所以，用這個參數來調試你的makefile會是很有用的，特別是當你的環境變量很複雜的時候。

&quot;&gt;這個參數輸出的信息會包含著你的makefile文件的文件名和行號，所以，用這個參數來調試你的makefile會是很有用的，特別是當你的環境變量很複雜的時候。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;&lt;span title=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; wf=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; xf=&quot;不重新生成的指定的，即使這個目標的依賴文件新於它。

&quot;&gt;&lt;span title=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; wf=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; xf=&quot;這個參數輸出的信息會包含著你的makefile文件的文件名和行號，所以，用這個參數來調試你的makefile會是很有用的，特別是當你的環境變量很複雜的時候。

&quot;&gt;“-q”&lt;br /&gt;
&lt;span title=&quot;“–question”&quot; wf=&quot;“–question”&quot; xf=&quot;“–question”
&quot;&gt;“–question”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span title=&quot;不运行命令，也不输出。&quot; wf=&quot;不运行命令，也不输出。&quot; xf=&quot;不運行命令，也不輸出。&quot;&gt;不運行命令，也不輸出。&lt;/span&gt;&lt;span title=&quot;仅仅是检查所指定的目标是否需要更新。&quot; wf=&quot;仅仅是检查所指定的目标是否需要更新。&quot; xf=&quot;僅僅是檢查所指定的目標是否需要更新。&quot;&gt;僅僅是檢查所指定的目標是否需要更新。&lt;/span&gt;&lt;span title=&quot;如果是0则说明要更新，如果是2则说明有错误发生。&quot; wf=&quot;如果是0则说明要更新，如果是2则说明有错误发生。&quot; xf=&quot;如果是0則說明要更新，如果是2則說明有錯誤發生。

&quot;&gt;如果是0則說明要更新，如果是2則說明有錯誤發生。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;&lt;span title=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; wf=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; xf=&quot;不重新生成的指定的，即使這個目標的依賴文件新於它。

&quot;&gt;&lt;span title=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; wf=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; xf=&quot;這個參數輸出的信息會包含著你的makefile文件的文件名和行號，所以，用這個參數來調試你的makefile會是很有用的，特別是當你的環境變量很複雜的時候。

&quot;&gt;&lt;span title=&quot;“-r”&quot; wf=&quot;“-r”&quot; xf=&quot;“-r”
&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-r”&quot; wf=&quot;“-r”&quot; xf=&quot;“-r”
&quot;&gt;“-r”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–no-builtin-rules”&quot; wf=&quot;“–no-builtin-rules”&quot; xf=&quot;“–no-builtin-rules”
&quot;&gt;“–no-builtin-rules”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;禁止make使用任何隐含规则。&quot; wf=&quot;禁止make使用任何隐含规则。&quot; xf=&quot;禁止make使用任何隱含規則。

&quot;&gt;禁止make使用任何隱含規則。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;禁止make使用任何隐含规则。&quot; wf=&quot;禁止make使用任何隐含规则。&quot; xf=&quot;禁止make使用任何隱含規則。

&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;禁止make使用任何隐含规则。&quot; wf=&quot;禁止make使用任何隐含规则。&quot; xf=&quot;禁止make使用任何隱含規則。

&quot;&gt;“-R”&lt;br /&gt;
&lt;span title=&quot;“–no-builtin-variabes”&quot; wf=&quot;“–no-builtin-variabes”&quot; xf=&quot;“–no-builtin-variabes”
&quot;&gt;“–no-builtin-variabes”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; wf=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; xf=&quot;禁止make使用任何作用於變量上的隱含規則。

&quot;&gt;禁止make使用任何作用於變量上的隱含規則。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; wf=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; xf=&quot;下面列舉了所有GNU make 3.80版的參數定義。&quot;&gt;&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; wf=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; xf=&quot;其它Linux版本和產商的make大同小異，不過其它產商的make的具體參數還是請參考各自的產品文檔。

&quot;&gt;&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;&lt;span title=&quot;可以使用多个“-I”参数来指定多个目录。&quot; wf=&quot;可以使用多个“-I”参数来指定多个目录。&quot; xf=&quot;可以使用多個“-I”參數來指定多個目錄。

&quot;&gt;&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;&lt;span title=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; wf=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; xf=&quot;不重新生成的指定的，即使這個目標的依賴文件新於它。

&quot;&gt;&lt;span title=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; wf=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; xf=&quot;這個參數輸出的信息會包含著你的makefile文件的文件名和行號，所以，用這個參數來調試你的makefile會是很有用的，特別是當你的環境變量很複雜的時候。

&quot;&gt;&lt;span title=&quot;禁止make使用任何隐含规则。&quot; wf=&quot;禁止make使用任何隐含规则。&quot; xf=&quot;禁止make使用任何隱含規則。

&quot;&gt;&lt;span title=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; wf=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; xf=&quot;禁止make使用任何作用於變量上的隱含規則。

&quot;&gt;“-s”&lt;br /&gt;
&lt;span title=&quot;“–silent”&quot; wf=&quot;“–silent”&quot; xf=&quot;“–silent”
&quot;&gt;“–silent”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–quiet”&quot; wf=&quot;“–quiet”&quot; xf=&quot;“–quiet”
&quot;&gt;“–quiet”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;在命令运行时不输出命令的输出。&quot; wf=&quot;在命令运行时不输出命令的输出。&quot; xf=&quot;在命令運行時不輸出命令的輸出。

&quot;&gt;在命令運行時不輸出命令的輸出。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; wf=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; xf=&quot;下面列舉了所有GNU make 3.80版的參數定義。&quot;&gt;&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; wf=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; xf=&quot;其它Linux版本和產商的make大同小異，不過其它產商的make的具體參數還是請參考各自的產品文檔。

&quot;&gt;&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;&lt;span title=&quot;可以使用多个“-I”参数来指定多个目录。&quot; wf=&quot;可以使用多个“-I”参数来指定多个目录。&quot; xf=&quot;可以使用多個“-I”參數來指定多個目錄。

&quot;&gt;&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;&lt;span title=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; wf=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; xf=&quot;不重新生成的指定的，即使這個目標的依賴文件新於它。

&quot;&gt;&lt;span title=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; wf=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; xf=&quot;這個參數輸出的信息會包含著你的makefile文件的文件名和行號，所以，用這個參數來調試你的makefile會是很有用的，特別是當你的環境變量很複雜的時候。

&quot;&gt;&lt;span title=&quot;禁止make使用任何隐含规则。&quot; wf=&quot;禁止make使用任何隐含规则。&quot; xf=&quot;禁止make使用任何隱含規則。

&quot;&gt;&lt;span title=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; wf=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; xf=&quot;禁止make使用任何作用於變量上的隱含規則。

&quot;&gt;&lt;span title=&quot;在命令运行时不输出命令的输出。&quot; wf=&quot;在命令运行时不输出命令的输出。&quot; xf=&quot;在命令運行時不輸出命令的輸出。

&quot;&gt;“-S”&lt;br /&gt;
&lt;span title=&quot;“–no-keep-going”&quot; wf=&quot;“–no-keep-going”&quot; xf=&quot;“–no-keep-going”
&quot;&gt;“–no-keep-going”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–stop”&quot; wf=&quot;“–stop”&quot; xf=&quot;“–stop”
&quot;&gt;“–stop”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;取消“-k”选项的作用。&quot; wf=&quot;取消“-k”选项的作用。&quot; xf=&quot;取消“-k”選項的作用。&quot;&gt;取消“-k”選項的作用。&lt;/span&gt;&lt;span title=&quot;因为有些时候，make的选项是从环境变量“MAKEFLAGS”中继承下来的。&quot; wf=&quot;因为有些时候，make的选项是从环境变量“MAKEFLAGS”中继承下来的。&quot; xf=&quot;因為有些時候，make的選項是從環境變量“MAKEFLAGS”中繼承下來的。&quot;&gt;因為有些時候，make的選項是從環境變量“MAKEFLAGS”中繼承下來的。&lt;/span&gt;&lt;span title=&quot;所以你可以在命令行中使用这个参数来让环境变量中的“-k”选项失效。&quot; wf=&quot;所以你可以在命令行中使用这个参数来让环境变量中的“-k”选项失效。&quot; xf=&quot;所以你可以在命令行中使用這個參數來讓環境變量中的“-k”選項失效。

&quot;&gt;所以你可以在命令行中使用這個參數來讓環境變量中的“-k”選項失效。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;禁止make使用任何隐含规则。&quot; wf=&quot;禁止make使用任何隐含规则。&quot; xf=&quot;禁止make使用任何隱含規則。

&quot;&gt;&lt;span title=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; wf=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; xf=&quot;禁止make使用任何作用於變量上的隱含規則。

&quot;&gt;&lt;span title=&quot;在命令运行时不输出命令的输出。&quot; wf=&quot;在命令运行时不输出命令的输出。&quot; xf=&quot;在命令運行時不輸出命令的輸出。

&quot;&gt;&lt;span title=&quot;“-t”&quot; wf=&quot;“-t”&quot; xf=&quot;“-t”
&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-t”&quot; wf=&quot;“-t”&quot; xf=&quot;“-t”
&quot;&gt;“-t”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–touch”&quot; wf=&quot;“–touch”&quot; xf=&quot;“–touch”
&quot;&gt;“–touch”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&lt;span title=&quot;相当于UNIX的touch命令，只是把目标的修改日期变成最新的，也就是阻止生成目标的命令运行。&quot; wf=&quot;相当于UNIX的touch命令，只是把目标的修改日期变成最新的，也就是阻止生成目标的命令运行。&quot; xf=&quot;相當於UNIX的touch命令，只是把目標的修改日期變成最新的，也就是阻止生成目標的命令運行。

&quot;&gt;相當於UNIX的touch命令，只是把目標的修改日期變成最新的，也就是阻止生成目標的命令運行。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-v”&quot; wf=&quot;“-v”&quot; xf=&quot;“-v”
&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“-v”&quot; wf=&quot;“-v”&quot; xf=&quot;“-v”
&quot;&gt;“-v”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–version”&quot; wf=&quot;“–version”&quot; xf=&quot;“–version”
&quot;&gt;“–version”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;输出make程序的版本、版权等关于make的信息。&quot; wf=&quot;输出make程序的版本、版权等关于make的信息。&quot; xf=&quot;輸出make程序的版本、版權等關於make的信息。

&quot;&gt;&amp;nbsp;輸出make程序的版本、版權等關於make的信息。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;输出make程序的版本、版权等关于make的信息。&quot; wf=&quot;输出make程序的版本、版权等关于make的信息。&quot; xf=&quot;輸出make程序的版本、版權等關於make的信息。

&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; wf=&quot;下面列举了所有GNU make 3.80版的参数定义。&quot; xf=&quot;下面列舉了所有GNU make 3.80版的參數定義。&quot;&gt;&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; wf=&quot;其它Linux版本和产商的make大同小异，不过其它产商的make的具体参数还是请参考各自的产品文档。&quot; xf=&quot;其它Linux版本和產商的make大同小異，不過其它產商的make的具體參數還是請參考各自的產品文檔。

&quot;&gt;&lt;span title=&quot;认为所有的目标都需要更新（重编译）。&quot; wf=&quot;认为所有的目标都需要更新（重编译）。&quot; xf=&quot;認為所有的目標都需要更新（重編譯）。

&quot;&gt;&lt;span title=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; wf=&quot;如：“make –C ~hchen/test –C prog”等价于“make –C ~hchen/test/prog”。&quot; xf=&quot;如：“make –C ~hchen/test –C prog”等價於“make –C ~hchen/test/prog”。

&quot;&gt;&lt;span title=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; wf=&quot;m —— 也就是makefile，输出make读取makefile，更新makefile，执行makefile的信息。&quot; xf=&quot;m —— 也就是makefile，輸出make讀取makefile，更新makefile，執行makefile的信息。

&quot;&gt;&lt;span title=&quot;可以使用多个“-I”参数来指定多个目录。&quot; wf=&quot;可以使用多个“-I”参数来指定多个目录。&quot; xf=&quot;可以使用多個“-I”參數來指定多個目錄。

&quot;&gt;&lt;span title=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; wf=&quot;仅输出执行过程中的命令序列，但并不执行。&quot; xf=&quot;僅輸出執行過程中的命令序列，但並不執行。

&quot;&gt;&lt;span title=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; wf=&quot;不重新生成的指定的，即使这个目标的依赖文件新于它。&quot; xf=&quot;不重新生成的指定的，即使這個目標的依賴文件新於它。

&quot;&gt;&lt;span title=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; wf=&quot;这个参数输出的信息会包含着你的makefile文件的文件名和行号，所以，用这个参数来调试你的makefile会是很有用的，特别是当你的环境变量很复杂的时候。&quot; xf=&quot;這個參數輸出的信息會包含著你的makefile文件的文件名和行號，所以，用這個參數來調試你的makefile會是很有用的，特別是當你的環境變量很複雜的時候。

&quot;&gt;&lt;span title=&quot;禁止make使用任何隐含规则。&quot; wf=&quot;禁止make使用任何隐含规则。&quot; xf=&quot;禁止make使用任何隱含規則。

&quot;&gt;&lt;span title=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; wf=&quot;禁止make使用任何作用于变量上的隐含规则。&quot; xf=&quot;禁止make使用任何作用於變量上的隱含規則。

&quot;&gt;&lt;span title=&quot;在命令运行时不输出命令的输出。&quot; wf=&quot;在命令运行时不输出命令的输出。&quot; xf=&quot;在命令運行時不輸出命令的輸出。

&quot;&gt;&lt;span title=&quot;输出make程序的版本、版权等关于make的信息。&quot; wf=&quot;输出make程序的版本、版权等关于make的信息。&quot; xf=&quot;輸出make程序的版本、版權等關於make的信息。

&quot;&gt;“-w”&lt;br /&gt;
&lt;span title=&quot;“–print-directory”&quot; wf=&quot;“–print-directory”&quot; xf=&quot;“–print-directory”
&quot;&gt;“–print-directory”&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span title=&quot;输出运行makefile之前和之后的信息。&quot; wf=&quot;输出运行makefile之前和之后的信息。&quot; xf=&quot;輸出運行makefile之前和之後的信息。&quot;&gt;輸出運行makefile之前和之後的信息。&lt;/span&gt;&lt;span title=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; wf=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; xf=&quot;這個參數對於跟踪嵌套式調用make時很有用。

&quot;&gt;這個參數對於跟踪嵌套式調用make時很有用。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; wf=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; xf=&quot;這個參數對於跟踪嵌套式調用make時很有用。

&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;输出make程序的版本、版权等关于make的信息。&quot; wf=&quot;输出make程序的版本、版权等关于make的信息。&quot; xf=&quot;輸出make程序的版本、版權等關於make的信息。

&quot;&gt;&lt;span title=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; wf=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; xf=&quot;這個參數對於跟踪嵌套式調用make時很有用。

&quot;&gt;“–no-print-directory”&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span title=&quot;禁止“-w”选项。&quot; wf=&quot;禁止“-w”选项。&quot; xf=&quot;禁止“-w”選項。

&quot;&gt;禁止“-w”選項。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;禁止“-w”选项。&quot; wf=&quot;禁止“-w”选项。&quot; xf=&quot;禁止“-w”選項。

&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;输出make程序的版本、版权等关于make的信息。&quot; wf=&quot;输出make程序的版本、版权等关于make的信息。&quot; xf=&quot;輸出make程序的版本、版權等關於make的信息。

&quot;&gt;&lt;span title=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; wf=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; xf=&quot;這個參數對於跟踪嵌套式調用make時很有用。

&quot;&gt;&lt;span title=&quot;禁止“-w”选项。&quot; wf=&quot;禁止“-w”选项。&quot; xf=&quot;禁止“-w”選項。

&quot;&gt;“-W ”&lt;br /&gt;
&lt;span title=&quot;“–what-if=”&quot; wf=&quot;“–what-if=”&quot; xf=&quot;“–what-if=”
&quot;&gt;“–what-if=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–new-file=”&quot; wf=&quot;“–new-file=”&quot; xf=&quot;“–new-file=”
&quot;&gt;“–new-file=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;“–assume-file=”&quot; wf=&quot;“–assume-file=”&quot; xf=&quot;“–assume-file=”
&quot;&gt;“–assume-file=”&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;假定目标需要更新，如果和“-n”选项使用，那么这个参数会输出该目标更新时的运行动作。&quot; wf=&quot;假定目标需要更新，如果和“-n”选项使用，那么这个参数会输出该目标更新时的运行动作。&quot; xf=&quot;假定目標需要更新，如果和“-n”選項使用，那麼這個參數會輸出該目標更新時的運行動作。&quot;&gt;假定目標需要更新，如果和“-n”選項使用，那麼這個參數會輸出該目標更新時的運行動作。&lt;/span&gt;&lt;span title=&quot;如果没有“-n”那么就像运行UNIX的“touch”命令一样，使得的修改时间为当前时间。&quot; wf=&quot;如果没有“-n”那么就像运行UNIX的“touch”命令一样，使得的修改时间为当前时间。&quot; xf=&quot;如果沒有“-n”那麼就像運行UNIX的“touch”命令一樣，使得的修改時間為當前時間。

&quot;&gt;如果沒有“-n”那麼就像運行UNIX的“touch”命令一樣，使得的修改時間為當前時間。&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;如果没有“-n”那么就像运行UNIX的“touch”命令一样，使得的修改时间为当前时间。&quot; wf=&quot;如果没有“-n”那么就像运行UNIX的“touch”命令一样，使得的修改时间为当前时间。&quot; xf=&quot;如果沒有“-n”那麼就像運行UNIX的“touch”命令一樣，使得的修改時間為當前時間。

&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span title=&quot;输出make程序的版本、版权等关于make的信息。&quot; wf=&quot;输出make程序的版本、版权等关于make的信息。&quot; xf=&quot;輸出make程序的版本、版權等關於make的信息。

&quot;&gt;&lt;span title=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; wf=&quot;这个参数对于跟踪嵌套式调用make时很有用。&quot; xf=&quot;這個參數對於跟踪嵌套式調用make時很有用。

&quot;&gt;&lt;span title=&quot;禁止“-w”选项。&quot; wf=&quot;禁止“-w”选项。&quot; xf=&quot;禁止“-w”選項。

&quot;&gt;&lt;span title=&quot;如果没有“-n”那么就像运行UNIX的“touch”命令一样，使得的修改时间为当前时间。&quot; wf=&quot;如果没有“-n”那么就像运行UNIX的“touch”命令一样，使得的修改时间为当前时间。&quot; xf=&quot;如果沒有“-n”那麼就像運行UNIX的“touch”命令一樣，使得的修改時間為當前時間。

&quot;&gt;“–warn-undefined-variables”&lt;br /&gt;
&lt;span title=&quot;只要make发现有未定义的变量，那么就输出警告信息。&quot; wf=&quot;只要make发现有未定义的变量，那么就输出警告信息。&quot; xf=&quot;只要make發現有未定義的變量，那麼就輸出警告信息。&quot;&gt;只要make發現有未定義的變量，那麼就輸出警告信息。&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;只要make发现有未定义的变量，那么就输出警告信息。&quot; wf=&quot;只要make发现有未定义的变量，那么就输出警告信息。&quot; xf=&quot;只要make發現有未定義的變量，那麼就輸出警告信息。&quot;&gt;出處: http://www.ha97.com/961.html&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2749793337032510374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/2749793337032510374'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/02/make.html' title='make 參數'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-5054417919374934163</id><published>2012-01-30T17:00:00.006+08:00</published><updated>2012-02-02T17:33:34.629+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>U-Boot 啟動流程與架構</title><content type='html'>&lt;span a=&quot;undefined&quot; c=&quot;4&quot; id=&quot;result_box&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;u-boot系統啟動流程&quot; wf=&quot;u-boot系统启动流程&quot; xf=&quot;u-boot系統啟動流程



&quot;&gt;&lt;strong&gt;u-boot系統啟動流程&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;大多數bootloader都分為stage1和stage2兩大部分，u-boot也不例外。&quot; wf=&quot;大多数bootloader都分为stage1和stage2两大部分，u-boot也不例外。&quot; xf=&quot;大多數bootloader都分為stage1和stage2兩大部分，u-boot也不例外。&quot;&gt;大多數bootloader都分為stage1和stage2兩大部分，u-boot也不例外。&lt;/span&gt;&lt;span title=&quot;依賴於CPU體系結構的代碼(如設備初始化代碼等) 通常都放在stage1，且可以用彙編語言來實現，而stage2則通常用C語言來實現，這樣可以實現複雜的功能，而且有更&quot; wf=&quot;依赖于CPU体系结构的代码(如设备初始化代码等) 通常都放在stage1，且可以用汇编语言来实现，而stage2则通常用C语言来实现，这样可以实现复杂的功能，而且有更&quot; xf=&quot;依賴於CPU體系結構的代碼(如設備初始化代碼等) 通常都放在stage1，且可以用彙編語言來實現，而stage2則通常用C語言來實現，這樣可以實現複雜的功能，而且有更&quot;&gt;依賴於CPU體系結構的代碼(如設備初始化代碼等) 通常都放在stage1，且可以用彙編語言來實現，而stage2則通常用C語言來實現，這樣可以實現複雜的功能，而且有更&lt;/span&gt;&lt;span title=&quot;好的可讀性和移植性。&quot; wf=&quot;好的可读性和移植性。&quot; xf=&quot;好的可讀性和移植性。



&quot;&gt;好的可讀性和移植性。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;stage1 (start.s代碼結構)&quot; wf=&quot;stage1 (start.s代码结构)&quot; xf=&quot;　　stage1 (start.s代碼結構)

&quot;&gt;&lt;strong&gt;stage1 (start.s代碼結構)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;u-boot的stage1代碼通常放在start.s文件中，它用彙編語言寫成，其主要代碼部分如下:&quot; wf=&quot;u-boot的stage1代码通常放在start.s文件中，它用汇编语言写成，其主要代码部分如下:&quot; xf=&quot;u-boot的stage1代碼通常放在start.s文件中，它用彙編語言寫成，其主要代碼部分如下:

&quot;&gt;u-boot的stage1代碼通常放在start.s文件中，它用彙編語言寫成，其主要代碼部分如下:&lt;/span&gt;&lt;span title=&quot;(1) 定義入口由於一個可執行的Image必須有一個入口點，並且只能有一個全局入口，通常這個入口放在ROM(Flash) 的0x0地址，因此，必須通知編譯器以使其知道這個入口&quot; wf=&quot;(1) 定义入口由于一个可执行的Image必须有一个入口点，并且只能有一个全局入口，通常这个入口放在ROM(Flash) 的0x0地址，因此，必须通知编译器以使其知道这个入口&quot; xf=&quot;(1) 定義入口由於一個可執行的Image必須有一個入口點，並且只能有一個全局入口，通常這個入口放在ROM(Flash) 的0x0地址，因此，必須通知編譯器以使其知道這個入口&quot;&gt;(1) 定義入口由於一個可執行的Image必須有一個入口點，並且只能有一個全局入口，通常這個入口放在ROM(Flash) 的0x0地址，因此，必須通知編譯器以使其知道這個入口&lt;/span&gt;&lt;span title=&quot;，該工作可通過修改連接器腳本來完成。&quot; wf=&quot;，该工作可通过修改连接器脚本来完成。&quot; xf=&quot;，該工作可通過修改連接器腳本來完成。
&quot;&gt;，該工作可通過修改連接器腳本來完成。&lt;/span&gt;&lt;span title=&quot;(2) 設置異常向量(Exception Vector) 。&quot; wf=&quot;(2) 设置异常向量(Exception Vector) 。&quot; xf=&quot;(2) 設置異常向量(Exception Vector) 。
&quot;&gt;(2) 設置異常向量(Exception Vector) 。&lt;/span&gt;&lt;span title=&quot;(3) 設置CPU的速度、時鐘頻率及中斷控制寄存器。&quot; wf=&quot;(3) 设置CPU的速度、时钟频率及中断控制寄存器。&quot; xf=&quot;(3) 設置CPU的速度、時鐘頻率及中斷控制寄存器。
&quot;&gt;(3) 設置CPU的速度、時鐘頻率及中斷控制寄存器。&lt;/span&gt;&lt;span title=&quot;(4) 初始化內存控制器&quot; wf=&quot;(4) 初始化内存控制器&quot; xf=&quot;　　(4) 初始化內存控制器
&quot;&gt;　　(4) 初始化內存控制器&lt;/span&gt;&lt;span title=&quot;(5) 將ROM中的程序複製到RAM中。&quot; wf=&quot;(5) 将ROM中的程序复制到RAM中。&quot; xf=&quot;　　(5) 將ROM中的程序複製到RAM中。
&quot;&gt;　　(5) 將ROM中的程序複製到RAM中。&lt;/span&gt;&lt;span title=&quot;(6) 初始化堆棧&quot; wf=&quot;(6) 初始化堆栈&quot; xf=&quot;　　(6) 初始化堆棧
&quot;&gt;　　(6) 初始化堆棧&lt;/span&gt;&lt;span title=&quot;(7) 轉到RAM中執行，該工作可使用指令ldr pc來完成。&quot; wf=&quot;(7) 转到RAM中执行，该工作可使用指令ldr pc来完成。&quot; xf=&quot;(7) 轉到RAM中執行，該工作可使用指令ldr pc來完成。



&quot;&gt;(7) 轉到RAM中執行，該工作可使用指令ldr pc來完成。&lt;/span&gt;&lt;span title=&quot;stage2 C語言代碼部分&quot; wf=&quot;stage2 C语言代码部分&quot; xf=&quot;　　stage2 C語言代碼部分

&quot;&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;stage2 C語言代碼部分&quot; wf=&quot;stage2 C语言代码部分&quot; xf=&quot;　　stage2 C語言代碼部分

&quot;&gt;&lt;strong&gt;stage2 C語言代碼部分&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span a=&quot;undefined&quot; c=&quot;4&quot; lang=&quot;zh-TW&quot;&gt;&lt;span title=&quot;lib_arm/board.c中的start_armboot是C語言開始的函數，也是整個啟動代碼中C語言的主函數，同時還是整個u-boot(armboot) 的主函數，該函數主要完成如下操作:&quot; wf=&quot;lib_arm/board.c中的start_armboot是C语言开始的函数，也是整个启动代码中C语言的主函数，同时还是整个u-boot(armboot) 的主函数，该函数主要完成如下操作:&quot; xf=&quot;lib_arm/board.c中的start_armboot是C語言開始的函數，也是整個啟動代碼中C語言的主函數，同時還是整個u-boot(armboot) 的主函數，該函數主要完成如下操作:

&quot;&gt;lib_arm/board.c中的start_armboot是C語言開始的函數，也是整個啟動代碼中C語言的主函數，同時還是整個u-boot(armboot) 的主函數，該函數主要完成如下操作:&lt;/span&gt;&lt;span title=&quot;(1) 調用一系列的初始化函數。&quot; wf=&quot;(1) 调用一系列的初始化函数。&quot; xf=&quot;　　(1) 調用一系列的初始化函數。
&quot;&gt;　　(1) 調用一系列的初始化函數。&lt;/span&gt;&lt;span title=&quot;(2) 初始化Flash設備。&quot; wf=&quot;(2) 初始化Flash设备。&quot; xf=&quot;　　(2) 初始化Flash設備。
&quot;&gt;　　(2) 初始化Flash設備。&lt;/span&gt;&lt;span title=&quot;(3) 初始化系統內存分配函數。&quot; wf=&quot;(3) 初始化系统内存分配函数。&quot; xf=&quot;　　(3) 初始化系統內存分配函數。
&quot;&gt;　　(3) 初始化系統內存分配函數。&lt;/span&gt;&lt;span title=&quot;(4) 如果目標系統擁有NAND設備，則初始化NAND設備。&quot; wf=&quot;(4) 如果目标系统拥有NAND设备，则初始化NAND设备。&quot; xf=&quot;(4) 如果目標系統擁有NAND設備，則初始化NAND設備。
&quot;&gt;(4) 如果目標系統擁有NAND設備，則初始化NAND設備。&lt;/span&gt;&lt;span title=&quot;(5) 如果目標系統有顯示設備，則初始化該類設備。&quot; wf=&quot;(5) 如果目标系统有显示设备，则初始化该类设备。&quot; xf=&quot;(5) 如果目標系統有顯示設備，則初始化該類設備。
&quot;&gt;(5) 如果目標系統有顯示設備，則初始化該類設備。&lt;/span&gt;&lt;span title=&quot;(6) 初始化相關網絡設備，填寫IP、MAC地址等。&quot; wf=&quot;(6) 初始化相关网络设备，填写IP、MAC地址等。&quot; xf=&quot;(6) 初始化相關網絡設備，填寫IP、MAC地址等。
&quot;&gt;(6) 初始化相關網絡設備，填寫IP、MAC地址等。&lt;/span&gt;&lt;span title=&quot;(7) 進入命令循環(即整個boot的工作循環) ，接受用戶從串口輸入的命令，然後進行相應的工作。&quot; wf=&quot;(7) 进入命令循环(即整个boot的工作循环) ，接受用户从串口输入的命令，然后进行相应的工作。&quot; xf=&quot;(7) 進入命令循環(即整個boot的工作循環) ，接受用戶從串口輸入的命令，然後進行相應的工作。&quot;&gt;(7) 進入命令循環(即整個boot的工作循環) ，接受用戶從串口輸入的命令，然後進行相應的工作。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;目錄名稱&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;說明&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;board&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;包含所有已建立完成之開發板，與硬體相關之檔案，比如Makefile和u-boot.lds等都和具體開發板的硬體和地址分配有關。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;common&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;與系統架構無關的檔案，包含環境變數的設定與執行遠端控制台各種命令的處理等。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;cpu&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;CPU相關檔案，其中的子目錄都是以U-Boot所支援的CPU為名，比如有子目錄arm926ejs、mips、mpc8260和nios等，每個特定的子目錄中都包括cpu.c和interrupt.c，start.S。其中cpu.c初始化CPU、設置指令(Instruction) Cache和資料(Data) Cache等；interrupt.c設置系統的各種中斷和異常/特殊事件(Exception)，比如快速中斷、開關中斷、時鐘中斷、軟體中斷、預取中止和未定義指令等；start.S是U-Boot啟動時執行的第一個檔案，它主要是設定系統堆疊(Stack)和工作方式，為進入C程式作好前置作業。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;disk&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;磁碟驅動與分區處理(partition handling)相關的程式碼。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;doc&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;相關說明文件。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;drivers&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;各種硬體設備驅動程式(Device Driver)，比如各種網路卡、支援CFI的Flash、串列埠(Serial Port)和USB等。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;dtt&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;處理與溫度設備相關的控制。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;examples&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;一些應用範例，例如：hello_world.c、sched.c等。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;fs&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;與所支援檔案系統有關之原始程式，U-Boot現在支援cramfs、fat、fdos、jffs2和registerfs。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;include&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;檔頭定義檔(.h)，還有對各種硬體平台支援的組合語言檔(.asm)，定義系統的各種配置，包含軟體與硬體。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;lib_xxx&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;與各種不同架構相關的函式庫或程式碼。(lib_arm、lib_mips、lib_i386、lib_m68k等)。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;lib_generic&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;公用的程式庫(Library)，例如：crc32.c(CRC Check)、zlib.c(壓縮)、string.c(字串處理)等。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;net&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;處理與網絡有關之相關程式，BOOTP協定(Protocol)、TFTP協定、RARP協定和NFS檔案統的實現。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;post&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;提供Power On Self Test功能。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;rtc&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;Real Time Clock驅動程式。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td width=&quot;91&quot;&gt;tools&lt;/td&gt;&lt;td valign=&quot;top&quot; width=&quot;444&quot;&gt;提供建立S-Record或U-Boot映像檔等工具程式。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCGew4WT4JOGvmu7_wtowspI6OvtNsKXKMbkfcUOe-cTPpA3Ilh2_un5KfFazjZanBWEYij-Cg5Z4MKxI7ih5FaqQAW-C1DtroS8z_odu011EpeAc4gbviNmGjbZ5HsvVjVbpEDuZssV_G/s1600/1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;468&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCGew4WT4JOGvmu7_wtowspI6OvtNsKXKMbkfcUOe-cTPpA3Ilh2_un5KfFazjZanBWEYij-Cg5Z4MKxI7ih5FaqQAW-C1DtroS8z_odu011EpeAc4gbviNmGjbZ5HsvVjVbpEDuZssV_G/s640/1.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6FTSIl2x-bMSgHCfkClcjvSQpIPwMOPviecEuSsJOyzSOCmcPBUSgAKhhCqmAh3kcurUD2pbRxzLCNQnDDDmjCPe8DFSA64IUdcUx_5C8P33UWtpnmjNj3NXdLGTHWzfr_pX84h8I-KVy/s1600/2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;432&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6FTSIl2x-bMSgHCfkClcjvSQpIPwMOPviecEuSsJOyzSOCmcPBUSgAKhhCqmAh3kcurUD2pbRxzLCNQnDDDmjCPe8DFSA64IUdcUx_5C8P33UWtpnmjNj3NXdLGTHWzfr_pX84h8I-KVy/s640/2.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-KzUn2EFZauK5zRi2nov_Ol4isk5_6ShVZJm-Zew39epyc9FC8iv0I5f8C53PYCiIj3W-KA149jnpexoNVNa1AJ7VJ8zy94eIKCR6XvfKY7e8yRg95xPTBAIS2O1gN3t2xXi-BXQC4vu6/s1600/3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;424&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-KzUn2EFZauK5zRi2nov_Ol4isk5_6ShVZJm-Zew39epyc9FC8iv0I5f8C53PYCiIj3W-KA149jnpexoNVNa1AJ7VJ8zy94eIKCR6XvfKY7e8yRg95xPTBAIS2O1gN3t2xXi-BXQC4vu6/s640/3.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/5054417919374934163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/5054417919374934163'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/01/u-boot-folders.html' title='U-Boot 啟動流程與架構'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCGew4WT4JOGvmu7_wtowspI6OvtNsKXKMbkfcUOe-cTPpA3Ilh2_un5KfFazjZanBWEYij-Cg5Z4MKxI7ih5FaqQAW-C1DtroS8z_odu011EpeAc4gbviNmGjbZ5HsvVjVbpEDuZssV_G/s72-c/1.jpg" height="72" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-1045385055351077931.post-8850568140417933236</id><published>2012-01-20T11:48:00.000+08:00</published><updated>2012-01-20T11:48:03.037+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Embedding"/><title type='text'>SVN Commit SOP</title><content type='html'>Commands: &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;svn checkout(co)-&amp;gt; check out project files from SVN server &lt;/li&gt;
&lt;li&gt;svn export -&amp;gt; check out project files from SVN server with out SVN files &lt;/li&gt;
&lt;li&gt;svn add -&amp;gt; add a file into the commit-list &lt;/li&gt;
&lt;li&gt;svn del -&amp;gt; del a file into the commit-list &lt;/li&gt;
&lt;li&gt;svn commit -&amp;gt; commit current commit-list &lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Rules: &lt;br /&gt;
1. 若有新增任何檔案, 用svn add將該檔案加入list中. &lt;br /&gt;
2. 關於先前已加入list中的檔案, 做了改動並不需要再svn add一次, 系統會自動偵測. &lt;br /&gt;
3. 用svn del去刪除任何不再需要的檔案. &lt;br /&gt;
4. 執行svn commit後, svn add與del所做的變動才會commit到server上. &lt;br /&gt;
5. 重新check out一份新的檔案再commit, 為最保險且不容易失敗的作法. &lt;br /&gt;
&lt;br /&gt;
Steps: &lt;br /&gt;
1. svn add &amp;lt;file&amp;gt; (此步驟非必要) &lt;br /&gt;
2. svn del &amp;lt;file&amp;gt; (此步驟非必要) &lt;br /&gt;
3. svn commit &lt;br /&gt;
&lt;br /&gt;
P.S. &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;After committing, please checkout again and check if the latest source code in server can competely be built without errors. &lt;/li&gt;
&lt;li&gt;DO NOT commit unnecessary files to the server, such as temp files, or the files produced in compiling process. &lt;/li&gt;
&lt;/ol&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8850568140417933236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1045385055351077931/posts/default/8850568140417933236'/><link rel='alternate' type='text/html' href='http://unknown0521.blogspot.com/2012/01/svn-commit-sop.html' title='SVN Commit SOP'/><author><name>Frost0521</name><uri>http://www.blogger.com/profile/08732807610292309512</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKriQPSNYoMvg48fy4d_qlrBm7BV6-IlE1BOi6u1ods9zaWwgw0WC5SXsm6BT51TERRkIDb7cgP69jSdNMmWRs_jpFxQd2uYisSFwd4qkM0m4j4A-i2qvbPNYKBjO2kw/s113/IMG_4770.JPG'/></author></entry></feed>