新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于U-BOOT的S3C44B0引導裝載程序的設計與實現

        基于U-BOOT的S3C44B0引導裝載程序的設計與實現

        作者: 時間:2012-05-21 來源:網絡 收藏


        U-boot可執(zhí)行映像


        移植前需要對存儲器的地址空間進行了解。操作系統(tǒng)內核可以通過U—BOOT下載到SDRAM中,調試完畢后可以將內核燒寫到FLASH中,在本目標板中選用的是uclinux嵌入式操作系統(tǒng),在存儲器空間的分配見圖2和圖3。其中圖2為在FLASH中的存儲器空間分布。圖3為啟動后在SDR AM中的存儲器分布。

        如圖所2示,FLASH存儲器空間大小為2M,SDRAM大小為8M。系統(tǒng)上電復位后從0x00000000地址處開始執(zhí)行代碼start.s(即第一階段),這一部分代碼運行在FLASH中。主要完成必要的寄存器設置.,中斷向量表,堆棧初始化等,并將第二階段拷貝到SDRAM地址 0x0c120000處,然后從第二階段(即跳轉到start-armboot函數)開始執(zhí)行,調用各種init函數,完成第二階段要使用的硬件設備初始化工作(主要是板級初始化),最后跳轉到main-loop函數(屬第二階段)中,負責接受用戶命令,然后將其分發(fā)給相應的處理函數[3]。

        3.U-Boot移植操作

        要得到下載到目標板的U-BOOT二進制啟動代碼,需要對下載的U-BOOT進行編譯。建立交叉編譯移植開發(fā)環(huán)境,主機端(PC)開發(fā)平臺選用linux操作系統(tǒng),使用交叉編譯工具為arm-elf-tools-20030314.sh。

        移植到新的開發(fā)板上僅需修改與硬件相關的部分即可。主要包括二個方面的移植,第一層是針對CPU的移植,第二層是針對BOARD的移植[4]。為了減少移植工作量,我們在include/config目錄下選一個和要移植的硬件相似的開發(fā)板,我們選擇了B2開發(fā)板,在board目錄下創(chuàng)建一個myboard目錄,把B2板目錄下的文件拷貝過來,修改文件名即可。

        本系統(tǒng)開發(fā)板主要由嵌入式微處理器、2MB的Flash(SST39VF160)、8MB的SDRAM(HY57V641620)、4個LED以及ARM JTAG接口組成。該開發(fā)板上與相關部分的功能框圖如圖1所示。

        U-Boot移植主要修改的文件:

        針對本文提供的主板硬件資源,從移植最小要求,能正常啟動的角度出發(fā),主要考慮修改如下文件:u-boot根目錄下的 Makefile文件,include目錄下的myboard.h頭文件,board目錄下的myboard.c文件,cpu/s3c44b0目錄下的文件。移植操作中文件修改的具體操作為:

        ⑴cpu/s3c44b0目錄下

        ◆start.s文件的修改。Start.s是匯編語言編寫的U-BOOT程序入口代碼,完成對底層硬件的初始化,這個文件的主要任務是設置處理器狀態(tài)、初始化中斷和內存時序等,并確定是否需要對整個U-BOOT代碼重定位,最終從Flash中跳轉到定位好的內存位置執(zhí)行。具體修改內容如下。

        ①設置WTCON=0x0,禁止看門狗定時器,避免處理器強行復位。

        ②設置INTMSK=0X7ffffff,禁止所有中斷。的執(zhí)行過程中不必響應任何中斷。

        ③根據嵌入式微處理器的工作主頻,修改宏CONFIG__CLOCK_SPEED,使處理器能夠正常工作,本文的目標板S3C44B0處理器工作主頻為66MHZ。

        ④設置PLLCON寄存器。PLLCON鎖相環(huán)控制寄存器中存儲有計算系統(tǒng)時鐘的相關參數,為了產生正確的系統(tǒng)時鐘,必須根據外接晶振頻率和處理器工作主頻確定各個倍頻數。

        ◆serial.c文件。這個文件初始化串口,主要是對UART相關的寄存器進行配置。串口的波特率不需要修改,直接用B2板的串口驅動即可。

        ⑵board/myboard目錄下

        ◆myboard.c文件。這個文件主要是SDRAM的驅動程序,S3C44B0提供有SDRAM控制器,與一些CPU需要UPM表編程相比,它只需進行相關寄存器的設置即可。

        ◆flash.c文件。Flash驅動程序就在這個文件中。Flash存儲器的燒寫與擦除一般不具有通用性,跟具不同型號的存儲器做出相應的修改。 Snds110嵌入式系統(tǒng)板選用的是SST39VF160,所以用snds110目錄下的flash.c替換原來的flash.c,使FLASH芯片正常工作。

        ◆memsetup.s文件。memsetup.s代碼是對存儲器空間的初始化,在start.s中被調用。修改內存映射相關參數,SDRAM的刷新速度等,根據不同嵌入式系統(tǒng)版本修改。



        關鍵詞: Bootloader U-BOOT S3C44B0

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 灌阳县| 盐池县| 十堰市| 民丰县| 渝北区| 阆中市| 青田县| 固阳县| 铁岭县| 宁海县| 灌云县| 江阴市| 平陆县| 泰安市| 潢川县| 涟源市| 武汉市| 扎赉特旗| 达日县| 若羌县| 扎囊县| 平果县| 泌阳县| 景东| 双流县| 宜兰县| 嘉峪关市| 兰坪| 宜州市| 汤原县| 财经| 南平市| 民乐县| 苍梧县| 杭锦旗| 开原市| 昆山市| 蓝山县| 景泰县| 金坛市| 禹城市|