新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM9上linux系統的bootloader設計

        基于ARM9上linux系統的bootloader設計

        作者: 時間:2012-04-11 來源:網絡 收藏

        映射關系代碼如下:
        void mem_mapping_linear(void)
        { unsigned long descriptor_index, section_base, sdram_base, sdram_size;
        sdram_base=0x30000000;
        sdram_size=0x 4000000;
        for(section_base=sdram_base,descriptor_index=section_base>>
        20;Ssection_basesdram_base+sdram_size; rdescriptor_index+=1;section_base +=0x100000)
        {*(mmu_tlb_base+(descriptor_index))=(section_base>>20)| MMU_OTHER_SECDESC;}
        }

        4.3.裝載內核映像和根文件映像

        像ARM這樣的嵌入式CPU通常都是在統一的內存地址空間中尋址 Flash 等固態存儲設備的,因此從Flash上讀取數據與從 RAM單元中讀取數據用一個簡單的循環就可以完成從Flash 設備上拷貝映像的工作:

        其中count為根文件映像的大小或內核映像的大小。
        While(count){
        *dest++=*src++;//src為fash中的地址,dest為RAM中的地址
        count-=4;}

        4.4.置內核的啟動參數

        內核啟動可以從Nand Flash或Nor Flash中啟動運行,需要修改啟動命令如下:
        #ifdef CONFIG_S3C2410_NAND_BOOT
        Char Linux_cmd[]=“noinit root=/dev/bon/2 init =/Linuxrc console=tty0 console=ttys0”;
        #else
        CharLinux_cmd[]=“CharLinux_cmd[]=”noinit root=/dev/bon/3 init =/Linuxrc console=tty0 console=ttys0”;

        其中noinitrd不使用ramdisk。
        root根文件所在MTD分區。
        Init內核運行入口命令文件。
        console 內核信息控制臺,ttyS0表示串行口0。
        ttys0表示虛擬終端LCD啟動參數一般都包括root、init和console。

        5.結論

        是一項很復雜的工作,需要對硬件資源和所用的操作系統有很深的理解,在實際開發中可以根據需要簡化,去除不必要的系統功能,這樣可以大大提高程序執行的效率和穩定性。

        本文作者創新點:隨硬件不同也盡相同,但本質的原理是一樣的,本文給出了一種層次分明設計簡練較之通用的設計方法,使嵌入式工作者可以快速的了解的實現從而寫出符合需要的啟動程序。

        參考文獻
        [1] 萬永波 張根寶 田澤 楊峰,ARM的嵌入式系統Bootloader啟動流程分析, 微計算機信息, 2005年,第21卷11-2期,90頁.
        [2] 嵌入式設計與應用.鄒思軼. 北京:清華大學出版社 2002.
        [3] SUMSUANG ELECTRONICS. S3C2410X User’s Manual[Z].Republic of Korea: Sumsang,2003.
        [4] 馬學文, 朱明日, 程小輝.嵌入式系統中 Bootloader的設計與實現.計算機工程,2005年,第31卷7期,96頁.

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 明光市| 逊克县| 岳普湖县| 建阳市| 青浦区| 易门县| 龙江县| 麻城市| 正安县| 山西省| 集贤县| 松阳县| 闽清县| 禹州市| 咸宁市| 淄博市| 乳山市| 松阳县| 丹东市| 普兰店市| 当涂县| 沧州市| 革吉县| 祁阳县| 漳平市| 嘉义市| 梁山县| 怀仁县| 上林县| 绍兴市| 兴义市| 平陆县| 广州市| 马龙县| 定远县| 临颍县| 虞城县| 色达县| 察雅县| 马公市| 禄劝|