天天看點

03-剛接觸開發闆的準備工作

 開發闆與PC機之間可以進行連接配接的接口通常有四個:序列槽、JTAG、USB、網絡接口。而如今在PC端是沒有JTAG或者接口的,是以可以使用轉接闆轉換為并口或者USB口與PC段相連。

JTAG最初是用來對晶片進行測試的,JTAG測試允許多個器件通過JTAG接口串聯在一起,形成一個JTAG鍊,能實作對各個器件分别測試。如今,JTAG接口還常用于實作ISP(In-System Programmer,在系統程式設計),對FLASH等器件進行程式設計。在2440中,當需要對NOR Flash進行燒寫時,就需要用到JTAG接口進行燒錄軟體,而當軟體是要燒錄到NAND Flash時,使用序列槽與USB接口就可以操作。這裡介紹NOR Flash、NAND Flah與SDRAAM的差別。

ROM和RAM指的都是半導體存儲器,ROM是Read Only Memory的縮寫,RAM是Random Access Memory的縮寫。ROM在系統停止供電的時候仍然可以保持資料,而RAM通常都是在掉電之後就丢失資料,典型的RAM就是計算機的記憶體。

晶片

特點

靜态RAM(Static RAM/SRAM),是目前讀寫最快的儲存設備,但是它也非常昂貴;

RAM

動态RAM(Dynamic RAM/DRAM),DRAM保留資料的時間很短,速度也比SRAM慢,但從價格上來說DRAM相比SRAM要便宜很多;

DDR RAM(Date-Rate RAM)也稱作DDR SDRAM(Synchronous Dynamic RAM),可以在一個時鐘讀寫兩次資料,這樣就使得資料傳輸速度加倍。

 目前Flash主要有兩種NOR Flash和NADN Flash。NOR Flash的讀取和SDRAM的讀取是一樣,使用者可以直接運作裝載在NOR FLASH裡面的代碼,這樣可以減少SRAM的容量進而節約了成本。NAND Flash沒有采取記憶體的随機讀取技術,它的讀取是以一次讀取一塊的形式來進行的,通常是一次讀取512個位元組,采用這種技術的Flash比較廉價。使用者不能直接運作NAND Flash上的代碼,是以衆多NAND Flash的開發闆除了使用NAND Flah以外,還有一塊小的NOR Flash來運作啟動代碼。

在2440開發闆中,通常将uboot燒寫在nor flash上作為引導程式,而linux kernel與根檔案系統燒錄在nand flash上,而這些代碼會加載到SDRAM中運作。

 一個linux檔案系統的構成可分為硬體、bootloader、核心、根檔案系統四個層次。首先要想硬體可以工作工作,需要有bootloader引導程式,它設定硬體相關參數以及軟體變量,如設定中斷變量、關閉看門狗、初始化序列槽、時鐘等硬體參數,設定堆棧等。要完成這些操作,那麼UBOOT代碼就必須上電就能自動運作,通常将這些代碼燒錄在NOR Flash中,因為NAND Flash無法運作代碼,而linux kernel、 root filesystem則燒錄到nand flash中等待bootloader引導完成加載到SDRAM中運作。

1. 使用J-link燒寫u-boot到Nor Flash

編譯uboot具體操作步驟為:

1、解壓u-boot1.1.6,進入解壓後的目錄

2、打更新檔

3、使用arm-linux-gcc3.4.5編譯器編譯

燒寫uboot:

1、JLink 的 USB 口接到電腦上,JTAG 口用排線和開發闆的 JTAG 口相連, 開發闆設為 Nor Flash 啟動并上電。

2、啟動 J-Flash, 它在“Windows 開始菜單->所有程式->SEGGER”裡面。

3、選擇菜單“File -> Open -> Open Project…”,打開CD光牒裡的 s3c2440.jflash。

4、選擇菜單“Target -> Connect”

03-剛接觸開發闆的準備工作

5、選擇菜單“File -> Open”,打開要燒寫的二進制檔案,比如 u-boot.bin,并且在“Start address”裡輸入 0。

6、選擇菜單“Target -> Auto”即可自動燒寫。

7、重新開機開發闆,啟動uboot。

2. 使用DNW和序列槽工具CRT燒寫Linux核心和根檔案系統

編譯Linux核心的步驟為:

1、解壓linux2.6.22,進入解壓後的目錄

4、這裡我是用的是TQ2440開發闆,是以韋老師的linux核心源碼不能直接使用在TQ2440開發闆上,需要對LCD和DM9000兩個驅動程式進行修改。

将TQ2440源碼\drivers_and_test\17th_dm9000c\修改好的\dm9dev9000c.c複制到linux-2.6.22.6/drivers/net目錄下;

修改其Makefile:obj-$(CONFIG_DM9000) += dm9dev9000c.o #dm9000.o

将TQ2440源碼drivers_and_test\10th_lcd\4th\lcd.c複制到linux-2.6.22.6/drivers/video目錄下,并修改其Makefile:obj-$(CONFIG_FB_S3C2410) += lcd.o #s3c2410fb.o

5、修改config_ok為.config

<code>book/home/test/1_bare_metal/1_test/linux-2.6.22.6$ cp config_ok .config</code>

6、編譯make uImage,此事可能出現錯誤:

根據提示修改這兩行Makefile:

在makefile中将416行代碼:config %config: scripts_basic outputmakefile FORCE

改為:%config: scripts_basic outputmakefile FORCE

在makefile中将1449行代碼:/ %/: prepare scripts FORCE

改為:%/: prepare scripts FORCE

再次編譯,編譯成功。

7、在序列槽界面輸入k指令下載下傳uImage,使用dnw下載下傳資料。

8、在序列槽界面輸入y指令下載下傳根檔案系統,使用dnw下載下傳資料。

9、啟動開發闆,檢視效果。

03-剛接觸開發闆的準備工作

3. 使用tftp網絡燒寫Linux核心和根檔案系統

當開發闆中安裝好uboot後,還可以使用網絡tftf下載下傳linux核心與根檔案系統,此時當tftp伺服器為win7時,要保證開發闆與PC機之間可以ping通。這裡我采用開發闆與PC機直接使用網線相連,PC機有線IP為192.168.2.20;開發闆IP為192.168.2.10。

03-剛接觸開發闆的準備工作

1、PC機tftp端設定,将需要下載下傳的核心與根檔案系統放在伺服器目錄下。

03-剛接觸開發闆的準備工作

2、開發闆進入uboot指令行界面下載下傳kernel:

tftp 30000000 uImage

mtdpart 檢視分區資訊

nand erase kernel

nand write.jffs2 30000000 kernel

3、下載下傳根檔案系統

tftp 30000000 fs_qtopia.yaffs2

nand erase root

nand write.yaffs 30000000 260000(root分區位址) 2fb6b40(大小)

4、開發闆啟動效果:

03-剛接觸開發闆的準備工作

4. 使用NFS伺服器挂載核心和根檔案系統

使用NFS下載下傳方法與tftp下載下傳方式,大緻相同,此時要確定開發闆可以和虛拟機ubuntu能ping通。同時要設定虛拟機已經開啟了nfs服務,并設定了挂載點:

1、下載下傳核心

nfs 30000000 192.168.1.123:/work/nfs_root/uImage

2、下載下傳根檔案系統

nfs 30000000 192.168.1.123:/work/nfs_root/fs_qtopia.yaffs2

nand write.yaffs 30000000 26000 2f76b40

本文轉自 夢想成大牛 51CTO部落格,原文連結:http://blog.51cto.com/yinsuifeng/2055965,如需轉載請自行聯系原作者

繼續閱讀