vivi的移植
vivi的結構:
CVS: Control version system,一種版本控制的工具。使用cvs,可以很方便的進行版本的控制,節約大量的時間。不過該部分並不屬於vivi核心軟件架構。
Documentation:幫助文檔。關於vivi的簡單介紹,如何進行編譯,如何booting ARM都有簡要的描述。拿到源代碼,首先應該看該文件夾,瞭解一下,它是什麼,可以如何進行操作。不過,裏面有些幫助文檔是韓語,看不懂。
Makefile Makefile.newSDK Rules.make:工程管理。Linux下用make來進行工程管理,對Makefile應該不會陌生。讀源代碼,首先了解Makefile的內容,會很有幫助。
arch: 處理器架構相關的核心代碼。這是vivi bootloader stage1的實現部分。如果要支持其他架構,也需要放到這個文件夾下面。
drivers: 通用的驅動程序。
include: 包含的頭文件
init: 初始化的核心代碼。這是vivi bootloader stage2的實現部分。
lib: 庫文件
scripts: Shell腳本。vivi提供了一種交互式配置機制,實現部分是利用shell腳本來完成的。這也是一個重要的研究內容。
test: 測試文件
util: 小工具。現在包含兩個文件,ecc.c, imagewrite.c。
第一步: 改make的編譯環境參數
試過用gcc 3.4.1版本去編譯vivi 出問題, 後來改成 gcc 2.95.3 通過, 並生成vivi燒錄文件,why?
解答:
第二步: 修改arch/s3c2410/smdk.c 主要是修改nand flash分區信息。
問題: bon分區和mtd分區, 配置smdk.c 只是mtd分區, 下面是bon分區的信息,在vivi啓動後用bon命令分區,我的開發板上配置是 0-192K(192K);192K-1216K(1M) ; 1216K-64M (62.8M).
關於bon 和mtd的區別:
1.MTD是對內存設備支持的統一接口,尤其是對flash(nand flash ,nor flash),提供FLASH設備到字符設備驅動和塊設備驅動的轉換。MTD是比較通用的,一般的嵌入式系統都會用到MTD技術。
2.bonfs是mizi公司提供的nand flash塊設備驅動,它應用範圍相對而言比較狹隘一些,因爲它只對nand flash提供支持,在vivi bootloader裏與bon分區命令相配合。
3.MTD分區和bon分區可以共存,在bon命令裏有個m選項,若帶m則表示bon分區可以和mtd分區共存,否則則不然(個人還沒用過這個參數,只是知道而已)。
bon是mizi自己搞的,和MTD是同一層的,支持它們自己的bonfs,使用前需要在vivi下用bon命令進行分區,要麼分成bon分區,要麼分成mtd分區,具體分區命令解釋請見http://www.hyesco.com/forum/dispbbs.asp?BoardID=12&ID=366,不能直接將/dev/mtdblock/3作爲/dev/bon/3
然後燒寫vivi到開發板. 基本上vivi的移植不需要改動很多東西.