在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            U-BOOT移植心得

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


            //===================================================================
            天嵌與自己的差別分析和領悟
            先列出天嵌公司里研發(fā)人員寫的 和 我們自己(小)的最大不同:
            對比了一下,發(fā)現最大的不同在于common/main.c文件中,即在兩階段基本一樣
            不同點:(行數按天嵌版本的)
            abortboot()函數(在main_loop()中被調用)
            Ln239: printf ( “ Press Space key to Download Mode ! ” ) ;
            Ln303 :在檢測是否 a key press 時,加入了顯示LOGO程序:embedsky_tq_logo();
            main_loop()函數
            Ln 381: LCD初始化程序
            Ln481 :分支選擇 下載 OR 加載模式:if ( BootFrmNORFLASH() )
            run_command (“menu”,0 );
            else
            {
            Printf (“ Booting Linux n ”);
            run_command (“boot_zImage”,0 );
            }
            解析一下:
            前面幾點都是關于LCD和LOGO顯示的不多說(因為自己移植是沒弄到LCD的移植)
            說一下main_loop()函數中Ln481 :分支選擇 下載 OR 加載模式
            首先,run_command 這個是執(zhí)行命令函數,一看名字就知道,也是在/common/main.c中定義的
            說說最重要的“menu”和“boot_zImage”吧
            1 If從NORFLASH進行啟動,則為下載模式,則執(zhí)行menu()這個函數,在/common/cmd_menu.c中定義
            打開cmd_menu.c文件會發(fā)現,里面都是一些串口選項列表,我們打開2440電源發(fā)現的下載列表都是從 main_menu_usage()函數中打印出來的,而選擇的項又通過menu_shell()通過控制臺執(zhí)行各種我們的選項,每個選項的如何執(zhí)行過程都列得很清楚,感覺就像跑裸機時,自己按照fzb的串口控制臺弄出來一樣

            2 Else 從NANDFLASH進行啟動, 則為加載模式,進行LINUX系統(tǒng)的配置和啟動。
            在lib_arm /boot_zImage.c 文件:里的boot_zImage( )函數
            函數執(zhí)行的內容大概如下:
            1、 copy kernel image
            2、setup linux parameters
            3、get machine type
            4、GO -> call-linux

            對比后的一些感悟:
            雖說自己也跟著移植過,也能建立自己的板級支持包,能實現基本的串口控制臺,NAND OR NOR FLASH,DM9000網絡,JFFS2文件系統(tǒng)等基本功能,但比起天嵌這個,能下載 和 加載模式,還是有很多不足
            所以說,自己移植只是感覺其中的方法,領悟之后還是在天嵌的基礎上再加進一步移植吧,感覺沒必要從頭到尾都自己搞一遍,方法懂了,框架熟悉了就好


            //===================================================================
            移植過程的一個簡單舉例:
            因為移植很多都是基于smdk2410來改的,首先要對2410和2440的區(qū)別有一定了解,再者就是自己在裸機上是編寫過改外設的驅動的,這樣移植起來就比較舒服,不會說什么都跟著做,感覺很虛,學不到東西。
            就舉讓支持NANDFLASH的讀寫
            1 先是在總的宏定義頭文件中加上你外設所需的宏定義
            總的宏定義路徑為 /include /configs / XX.h/ (最后這個.h文件一般是以板的名稱命名)
            添加宏定義,如:#define CONFIG_NAND_BASE 0
            。。。 等等
            那怎么知道添加什么宏定義呢?一般來說看對外設初始化函數,和U-BOOT二階段啟動函數要用到哪些就定義哪些。。。
            2 改相應的初始化函數:如board_nand_init函數和s3c2440_hwcontrol函數
            因為U-BOOT里初始化函數基本基于2410的,而2440的NAND配置參數和它不同,需要改部分地方
            3 添加初始化函數到第二階段board_init_r處,一般來說基本外設都已添加了,看你是否定義宏來讓其編譯這函數

            移植一些規(guī)律總結:
            其實多移植幾次就會發(fā)現,UBOOT的移植修改還是遵循著一定的規(guī)律。即是先在配置頭文件中打開相關宏定義支持,在到板級初始化(一般是第二階段初始化過程)代碼中添加需要支持功能的初始化函數。
            如果初始化函數對應的板版本不兼容或不存在,就要自己編寫了。

            //===================================================================
            最后,說說U-BOOT的編譯吧
            說到編譯,建議去看《從庖丁解牛說uboot如何編譯》,說得很好。
            而說到編譯的執(zhí)行過程,建議看看
            http://hi.baidu.com/serial_story/blog/item/871fc30311670783d53f7c74.html
            《詳細分析make uboot 最后的編譯鏈接的具體執(zhí)行過程》

            最后談談編譯不通過的問題,如果是內部自己程序出錯,可以通過提示信息查出
            如果是出現ERROR一百多個,或者什么arm-linux-ld的問題,那應該是編譯器版本不兼容問題,建議換換新的版本或更舊的版本再試試。


            好,到這里算是可以繼續(xù)下一步系統(tǒng)的移植和驅動的編寫了,而最近503的肥仔說想了個有關投影儀與攝像頭的項目想做,剛好我對圖像處理這方面比較感興趣,而且覺得他創(chuàng)意很好
            可能去做了哦,GO
            頭很暈,歇幾天啦~~

            上一頁 1 2 下一頁

            關鍵詞: U-BOOT 移植 啟動過程

            評論


            相關推薦

            技術專區(qū)

            關閉