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

          新聞中心

          U-BOOT移植心得

          作者: 時(shí)間:2012-08-04 來(lái)源:網(wǎng)絡(luò) 收藏


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

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

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


          //===================================================================
          移植過(guò)程的一個(gè)簡(jiǎn)單舉例:
          因?yàn)橐浦埠芏喽际腔趕mdk2410來(lái)改的,首先要對(duì)2410和2440的區(qū)別有一定了解,再者就是自己在裸機(jī)上是編寫(xiě)過(guò)改外設(shè)的驅(qū)動(dòng)的,這樣移植起來(lái)就比較舒服,不會(huì)說(shuō)什么都跟著做,感覺(jué)很虛,學(xué)不到東西。
          就舉讓支持NANDFLASH的讀寫(xiě)
          1 先是在總的宏定義頭文件中加上你外設(shè)所需的宏定義
          總的宏定義路徑為 /include /configs / XX.h/ (最后這個(gè).h文件一般是以板的名稱(chēng)命名)
          添加宏定義,如:#define CONFIG_NAND_BASE 0
          。。。 等等
          那怎么知道添加什么宏定義呢?一般來(lái)說(shuō)看對(duì)外設(shè)初始化函數(shù),和U-BOOT二階段啟動(dòng)函數(shù)要用到哪些就定義哪些。。。
          2 改相應(yīng)的初始化函數(shù):如board_nand_init函數(shù)和s3c2440_hwcontrol函數(shù)
          因?yàn)閁-BOOT里初始化函數(shù)基本基于2410的,而2440的NAND配置參數(shù)和它不同,需要改部分地方
          3 添加初始化函數(shù)到第二階段board_init_r處,一般來(lái)說(shuō)基本外設(shè)都已添加了,看你是否定義宏來(lái)讓其編譯這函數(shù)

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

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

          最后談?wù)劸幾g不通過(guò)的問(wèn)題,如果是內(nèi)部自己程序出錯(cuò),可以通過(guò)提示信息查出
          如果是出現(xiàn)ERROR一百多個(gè),或者什么arm-linux-ld的問(wèn)題,那應(yīng)該是編譯器版本不兼容問(wèn)題,建議換換新的版本或更舊的版本再試試。


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

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁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); })();