boot學習筆記(2)

        這裏說的BOOT其實是系統最開始的啓動代碼 XXinit.s文件。在ads的工程文件中需要把幾個文件的先後順序排好。因爲從NAND FLASH啓動時CPU將NAND FLASH的前4K拷貝到cpu自帶的SRAM中,而一般編譯出來的會大於4k。開發板上的程序上電時是從INIT.S文件開始的,然後調用nand.C的NAND FLASH 讀取程序數據到SDRAM中,讀取完畢再進行後面的程序,最後再跳到main.c中的main執行。

     BOOT的主要功能

      1.建立中斷異常向量表。系統一旦發生中斷,處理器還是會自動跳轉到0X0地址開始的異常中斷向量表。該表包含跳轉指令,具體的中斷處理有中斷處理程序完成。

      2.初始化堆棧。arm9有7種模式。用戶模式,系統模式,快速中斷模式,普通中斷模式,特權模式,中止模式,未定義模式。BOOT需要爲每一種模式建立堆棧,這需要初始化其程序狀態寄存器(SPSR)和堆棧指針。

     3.初始化硬件。對硬件的初始化通過配置特殊控制寄存器來完成包括:

   (1) 關看門狗  (WTCON)

  (2) 屏蔽所有中斷cpsr

  (3) 初始化PLL和時鐘頻率(FCLK(FOR CPU) HCLK(FOR AHB) PCLK(FOR AHP),UCLK(FOR USB))

   (4)初始化內存控制。主要通過memory contro register 設定外部數據總線的寬度,訪問週期(bankconN),定時控制信號等  (BWSCON),SDRAM的設置。

  (5)複製RW到SDRAM將ZI段清0.一個ARM數據結構有RO,RW,ZI三段組成。其中RO是代碼段,只讀的。RW是全局變量,ZI是未初始化的變量。

         image$$RO$$Base  RO起始地址

         image$$RO$$Limit   RW起始地址

         image$$RW$$Base

        image$$RW$$Limit

  (6)跳轉到C語言程序,開始第2階段初始化和系統引導。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章