<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 2440啟動代碼分析心得體會

          2440啟動代碼分析心得體會

          作者: 時間:2016-11-26 來源:網(wǎng)絡 收藏
          通過研究2440啟動代碼,發(fā)現(xiàn)這個啟動代碼壓根就沒有從nandflash復制代碼的功能,怪不得下載到nandflash沒現(xiàn)象呢!

          用偽C代碼來描述2440的正常的啟動過程。

          本文引用地址:http://www.ex-cimer.com/article/201611/321602.htm

          2440啟動函數(shù)()

          {

          復位函數(shù)();

          未定義模式函數(shù)()//這個是死循環(huán)

          SWI函數(shù)();//這個函數(shù)在其他文件中存在

          PAbt_Addr函數(shù)();//又是個死循環(huán)函數(shù)

          DAbt_Addr函數(shù)();//還是個死循環(huán)函數(shù)
          ......

          }

          復位函數(shù)()

          {

          if(關掉看門狗==1)

          關掉看門狗;

          Else

          不關;

          if(設置時鐘==1)

          設置好時鐘;

          Else

          不設置時鐘;

          If(初始化儲存控制器==1)

          初始化內(nèi)存控制器;

          Else

          不初始化儲存控制器;

          If(初始化I/O控制寄存器==1)

          初始化I/O控制寄存器;

          Else不初始化I/O控制寄存器

          If(異常中斷向量復制到IRAM==1)

          異常中斷向量到IRAM;//IRAM為0x40000000;

          Else不復制;

          配置相應模式堆棧的大??;//最后配置的是用戶模式堆棧的大小,在用戶模式下進入main函數(shù)

          main();//調(diào)用main函數(shù),這就是為什么單片機裸奔的時候需要死循環(huán)了。

          }

          其實在2440中main函數(shù)中不用死循環(huán),在執(zhí)行main函數(shù)完畢之后,相當于復位函數(shù)()已經(jīng)執(zhí)行完畢,接下來執(zhí)行的是未定義函數(shù)(),由于剛才分析未定義函數(shù)是個死循環(huán),相當于最壞的情況是,2440一直在未定義函數(shù)中停留著。當然并不希望看到這樣的情況,所以2440裸奔時,最好在main函數(shù)中構成死循環(huán)!對于51單片機來說,沒有死循環(huán)的話,這個51單片機程序會跑飛?。。?/p>

          如果想從nandflash啟動,并啟動一個系統(tǒng)的話,需要在C函數(shù)之前加入初始化nandflash函數(shù)以及從nandflash代碼復制到sdram的函數(shù)。如果再加一點其他的東西的話,一個小的bootloader就完成啦!




          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();