u-boot-2011.06雖然支持一些常見的開發板,但如果u-boot-2011.06不支持我們手上的開發板,那就要找到與我們的開發板最接近的u-boot-2011.06所支持的開發板,在這個開發板的基礎上進行移植。u-boot-2011.06所支持的smdk2410開發板是最接近我的開發板的,所以我就在該此基礎上進行修改、移植。
在移植之前,我們還需要安裝、配置eldk,用于編譯u-boot。下面我們就先介紹一下eldk的安裝與配置:
1.下載eldk
在ftp://ftp.denx.de/pub/eldk/選擇任一版本的eldk并下載,我選擇的是eldk4.2版本的arm-2008-11-24.iso文件。把該文件下載到/home/zhaocj/download/目錄下。
2.在root權限下安裝eldk
創建掛載點:
mkdir /mnt/dvdrom
掛載光驅:
mount –o loop /home/zhaocj/download/arm-2008-11-24.iso/mnt/dvdrom
安裝eldk:
cd /mnt/dvdrom
./install –d /opt/eldk4.2/
這樣eldk就安裝到了/opt/eldk4.2目錄下。
3.設置環境變量
cd ~
gedit .bashrc
在最后添加如下內容:
export CROSS_COMPILE=arm-linux-
export PATH=/opt/eldk4.2/bin: /opt/eldk4.2/usr/bin:$PATH
保存并退出,然后執行:
source .bashrc
重啟電腦就完成了eldk的安裝。
下面就介紹u-boot-2011.06的移植,在這里我把我的開發板命名為gq2440:
1.下載u-boot
在ftp://ftp.denx.de/pub/u-boot/下載目前最新的u-boot版本(即u-boot-2011.06.tar.bz2)到我的用戶主目錄下。
2.解壓u-boot
cd ~
把u-boot-2011.06解壓到當前目錄下
tar –xvjf u-boot-2011.06.tar.bz2
cd u-boot-2011.06
3.在u-boot中添加我的開發板信息
emacs boards.cfg
打開boards.cfg文件,在第70行(smdk2410 arm arm920t – samsung s3c24x0)的下面添加一行,內容如下:
gq2440 arm arm920t – samsung s3c24x0
保存并退出。
4.通過復制的方式添加我的開發板頭文件
cp include/configs/smdk2410.h include/configs/gq2440.h
5.通過復制的方式添加我的開發板文件夾
cp –r board/samsung/smdk2410 board/samsung/gq2440
更改文件名
mv board/samsung/gq2440/smdk2410.c board/samsung/gq2440/gq2440.c
修改Makefile文件
emacs board/samsung/gq2440/Makefile
打開Makefile文件,在第28行中,把COBJS :=smdk2410.o改為:
COBJS:=gq2440.o
保存并退出。
6.編譯
make distclean
make gq2440_config
make
如果上述過程沒有出錯的話,會在u-boot的目錄下出現新的u-boot.bin文件。
2 NorFlash啟動移植方法
.修改宏定義
打開include/configs/gq2440.h文件
第38行“#define CONFIG_S3C2410 ”改為:
38:#define CONFIG_S3C2440
目的是告之系統本開發板使用的是S3C2440處理器。
第131行“#define CONFIG_SYS_PROMPT 'SMDK2410 # '”改為:
131:#define CONFIG_SYS_PROMPT 'gq2440# '
目的是使命令行提示符顯示為“gq2440# ”。
第185行“#define CONFIG_FLASH_CFI_LEGACY”改為:
185:#define CONFIG_SYS_CFI_FLASH_CONFIG_REGS {0xFFFF}
因為在u-boot-2011.06中,使用的是CFI的NorFlash接口,所以不需要定義CONFIG_FLASH_CFI_LEGACY,而是要定義CONFIG_SYS_CFI_FLASH_CONFIG_REGS。
第191行“#define CONFIG_SYS_MAX_FLASH_SECT (19)”改為:
191:#define CONFIG_SYS_MAX_FLASH_SECT (35)
因為本開發板使用的NorFlash是EN29LV160AB,它有35個扇區。
第212行“#define CONFIG_NAND_S3C2410”改為:
212:#define CONFIG_NAND_S3C2440
第213行“#define CONFIG_SYS_S3C2410_NAND_HWECC”改為:
213:#define CONFIG_SYS_S3C2440_NAND_HWECC
2.修改系統時鐘頻率
打開arch/arm/cpu/arm920t/start.s文件
第164行“# if defined(CONFIG_S3C2410)”改為:
164:# if defined(CONFIG_S3C2440)
第165行“ldr r1, =0x3ff”改為:
165:ldr r1, =0x7fff
目的是屏蔽所有子中斷。
第173行“mov r1, #3”改為:
173:mov r1, #5
目的是使FCLK:HCLK:PCLK= 1:4:8。
打開board/samsung/gq2440/gq2440.c文件
第42行至第44行的內容改為:
42:#define M_MDIV 92
43:#define M_PDIV 1
44:#define M_SDIV 1
本開發板的輸入晶振頻率為12MHz,通過上面的修改,則MPLL頻率為400MHz。
第54行至第56行的內容改為:
54:#define U_M_MDIV 56
55:#define U_M_PDIV 2
56:#define U_M_SDIV 2
通過上面的修改,則UPLL頻率為48MHz。
3.修改內存SDRAM時序
打開board/samsung/gq2440/lowlevel_init.s文件
第54行至第126行的內容改為:
54:#define B1_BWSCON (DW16)
55:#define B2_BWSCON (DW16)
56:#define B3_BWSCON (DW16)
57:#define B4_BWSCON (DW32)
58:#define B5_BWSCON (DW16)
59:#define B6_BWSCON (DW32)
60:#define B7_BWSCON (DW32)
61:
62:
63:#define B0_Tacs 0x3
64:#define B0_Tcos 0x3
65:#define B0_Tacc 0x7
66:#define B0_Tcoh 0x3
67:#define B0_Tah 0x3
68:#define B0_Tacp 0x1
69:#define B0_PMC 0x0
70:
71:
72:#define B1_Tacs 0x1
73:#define B1_Tcos 0x1
74:#define B1_Tacc 0x6
75:#define B1_Tcoh 0x1
76:#define B1_Tah 0x1
77:#define B1_Tacp 0x0
78:#define B1_PMC 0x0
79:
80:#define B2_Tacs 0x1
81:#define B2_Tcos 0x1
82:#define B2_Tacc 0x6
83:#define B2_Tcoh 0x1
84:#define B2_Tah 0x1
85:#define B2_Tacp 0x0
86:#define B2_PMC 0x0
87:
88:#define B3_Tacs 0x1
89:#define B3_Tcos 0x1
90:#define B3_Tacc 0x6
91:#define B3_Tcoh 0x1
92:#define B3_Tah 0x1
93:#define B3_Tacp 0x0
94:#define B3_PMC 0x0
95:
96:#define B4_Tacs 0x1
97:#define B4_Tcos 0x1
98:#define B4_Tacc 0x6
99:#define B4_Tcoh 0x1
100:#define B4_Tah 0x1
101:#define B4_Tacp 0x0
102:#define B4_PMC 0x0
103:
104:#define B5_Tacs 0x1
105:#define B5_Tcos 0x1
106:#define B5_Tacc 0x6
107:#define B5_Tcoh 0x1
108:#define B5_Tah 0x1
上一篇:ALSA聲卡10_從零編寫之數據傳輸_學習筆記
下一篇:攝像頭驅動學習
推薦閱讀最新更新時間:2025-04-23 20:13


