UBOOT 2011-3版本分析(初步感受)
UBOOT發展到現在,架構已經發生了不少的變化。現在不少開發學習板子上都在用1.1.6版本的。不過發展到現在,UBOOT經歷了不少改進,變得越來越標準。
從版本發布的命名上來看,現在的UBOOT不再用以前版本號的方式進行描述。而采用日期的方式進行發布(例如這次最新版本命名為uboot-2011.03)。
第一次用UBOOT的時候是從uboot-2010.06入手的,沒想到那個版本之后到現在UBOOT的架構已經發生了一個結構上的新轉變,主要就是Makefile的功能更加專一化了,板子的配置被移出了Makefile,放到了一個叫做boards.cfg的文件中,文件格式如下:
??
| Target(目標) | ARCH(平臺) | CPU(芯片) | Board?name(板子名字) | Vendor(生產商) | SoC(CPU類型) | Options(功能) |
| smdk2410 | arm | arm920t | - | samsung | s3c24x0 | ? ? |
和以前的老版本比,配置更加規范化了,其實這些就是相關文件分類的一個文件夾的描述。依照這個層次關系,一些S3C24x0系列的學習開發板就可以利用這個來進行配置(比如說tq2440)。
還有一個顯著變化的地方就是修改增加了一些宏。該版本按照以前的方法組建smdk2410會報錯,主要就是幾個宏沒有定義。添加的一些宏如下:
#define????CONFIG_SYS_SDRAM_BASE????0x30000000?/*SDRAM?Bank?#1*/
#define????CONFIG_SYS_GBL_DATA_SIZE?128
#define????CONFIG_SYS_INIT_SP_ADDR????(CONFIG_SYS_SDRAM_BASE?+?SZ_4K?\
????????????-?CONFIG_SYS_GBL_DATA_SIZE)
這樣,編譯就能通過了。出錯的原因在于arm920t體系的start.S和board.c被重寫了,估計是已經修改了arm920t體系中的一些cpu板子。不過arm920t體系的cpu在UBOOT中有多種型號,可能還沒有修改到smdk2410上來。不過從宏的定義上可以看出,內存的配置和環境的配置將會更加的規范化(以CONFIG_SYS開頭的都是UBOOT中規定的專用宏,意義和重用都很明確)。
上面新增的宏定義當中CONFIG_SYS_SDRAM_BASE含義是配置板子sdram內存的基地址;CONFIG_SYS_GBL_DATA_SIZE是配置全局數據的尺寸;CONFIG_SYS_INIT_SP_ADDR配置了堆棧的地址(看來堆棧的地址小于4K啊,可能后面還要根據具體情況進行優化)。這些參數都取自其他修改過的板子的大部分板子使用的配置(其他板子也多是如此定義),應該算是默認的。
就smdk2410來說,現存的配置文件多多少少還是有些不規范,很多宏都沒有按照規范書寫,配置順序也比較亂。不過這都不是問題,畢竟還需要時間。下一步的準備就是仿造smdk2410建立自己的bootloader工程,按照規范生成一個標準的固件。
說實話,固件程序開發其實也沒啥太神秘的地方,它的主要作用就是檢測調試硬件,完成這個任務后,它就只有引導系統的作用了。tq2440自己也擴展了一個bootloader,也能引導LINUX系統。不過UBOOT是個偉大的開源項目,而且已有了相當好的規范性和知名度。作為開源軟件的受益者,我們應該繼續幫助UBOOT不斷的發展。只有UBOOT發展好了,我們的現在的學習才更有意義:)
轉載于:https://blog.51cto.com/sviews/674684
總結
以上是生活随笔為你收集整理的UBOOT 2011-3版本分析(初步感受)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Markdown 基础语法与常见问题总结
- 下一篇: 软件版本周期