资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
u boot 2014 01 移植手册 移植环境 JZ2440 v2 arm linux gcc 4 3 2 u boot 2014 01 参考资料 韦东山 linux 开发视频 本 uboot 工程的补丁下载 原文地址 1 增加对 2440 的支持 a 修改 boards cfg 仿照 2410 增加 2440 b 在 board samsung 目录下执行 cp smdk2410 smdk2440 rf 将原 来 S3C2410 单板下的所有文件拷贝到 2440 下 c 在 include configs 下执行 cp smdk2410 h smdk2440 h 拷贝原来 2410 的配置文件 d 发现顶层 makefiel 的一个小 bug make distclean 的时候 不删除 ln s 生成 的符号链接文件 这个不影响编译 但是显得不协调 改进办法 unconfig rm f obj include config h obj include config mk obj board config tmp obj board config tmp obj include autoconf mk obj include autoconf mk dep obj include spl autoconf mk obj include tpl autoconf mk obj arch ARCH include asm arch obj arch ARCH include asm proc 2 修改时钟 在 start S 中增加对时钟的初始化 并在 board samsung smdk2440 smdk2410 c 的 int board early init f void 里取消对 时钟初始化的代码 start S ldr r0 0 x4c000014 mov r1 0 x03 FCLK HCLK PCLK 1 2 4 HDIVN 1 PDIVN 1 mov r1 0 x05 FCLK HCLK PCLK 1 4 8 str r1 r0 如果 HDIVN 非 0 CPU 的总线模式应该从 fast bus mode 变为 asynchronous bus mode mrc p15 0 r1 c1 c0 0 读出控制寄存器 orr r1 r1 0 xc0000000 设置为 asynchronous bus mode mcr p15 0 r1 c1 c0 0 写入控制寄存器 define S3C2440 MPLL 400MHZ 0 x5c 12 0 x01 locktime configure MPLL writel M MDIV 12 M PDIV mpllcon 3 初始化内存 在 lowlevel init S 里修改 SMRDATA 对应的数值 SMRDATA long 0 x22011110 BWSCON long 0 x00000700 BANKCON0 long 0 x00000700 BANKCON1 long 0 x00000700 BANKCON2 long 0 x00000700 BANKCON3 long 0 x00000740 BANKCON4 long 0 x00000700 BANKCON5 long 0 x00018005 BANKCON6 long 0 x00018005 BANKCON7 long 0 x008C04F4 REFRESH long 0 x000000B1 BANKSIZE long 0 x00000030 MRSRB6 long 0 x00000030 MRSRB7 4 修改链接选项 在 arch arm config mk 里 取消 pie 选项 在 arch arm cpu u boot lds 下增加如下两行 board samsung smdk2440 built in o text arch arm cpu built in o text 修改 smdk2440 h 里的 CONFIG SYS TEXT BASE 的值为 define CONFIG SYS TEXT BASE 0 x33f00000 至此 uboot 应该能初始化时钟和内存 5 修改重定位代码 a 在 addr 的最后位置 去掉 addr gd mon len addr addr CONFIG SYS TEXT BASE b 在 start S 里 bl cpu init crit 后增加 nand 初始化和 copy 代码 并清 BSS 同 时在增加 copy nand 文件的源文件 init c NAND FLASH 控制器 define NFCONF volatile unsigned long 0 x4E000000 define NFCONT volatile unsigned long 0 x4E000004 define NFCMMD volatile unsigned char 0 x4E000008 define NFADDR volatile unsigned char 0 x4E00000C define NFDATA volatile unsigned char 0 x4E000010 define NFSTAT volatile unsigned char 0 x4E000020 GPIO define GPHCON volatile unsigned long 0 x56000070 define GPHUP volatile unsigned long 0 x56000078 UART registers define ULCON0 volatile unsigned long 0 x50000000 define UCON0 volatile unsigned long 0 x50000004 define UFCON0 volatile unsigned long 0 x50000008 define UMCON0 volatile unsigned long 0 x5000000c define UTRSTAT0 volatile unsigned long 0 x50000010 define UTXH0 volatile unsigned char 0 x50000020 define URXH0 volatile unsigned char 0 x50000024 define UBRDIV0 volatile unsigned long 0 x50000028 define TXD0READY 1 2 void nand read ll unsigned int addr unsigned char buf unsigned int len static int isBootFromNorFlash void volatile int p volatile int 0 int val val p p 0 x12345678 if p 0 x12345678 写成功 是 nand 启动 p val return 0 else NOR 不能像内存一样写 return 1 src 0 dest 0 x33f80000 len 0 x73250 void copy code to sdram unsigned char src unsigned char dest unsigned int len int i 0 如果是 NOR 启动 if isBootFromNorFlash while i len dest i src i i else nand init nand read ll unsigned int src dest len void clear bss void extern int bss start bss end int p for p p p 0 void nand init ll void define TACLS 0 define TWRPH0 1 define TWRPH1 0 设置时序 NFCONF TACLS 12 TWRPH0 8 TWRPH1 4 使能 NAND Flash 控制器 初始化 ECC 禁止片选 NFCONT 1 4 1 1 1 0 static void nand select void NFCONT static void nand deselect ll void NFCONT 1 1 static void nand cmd unsigned char cmd volatile int i NFCMMD cmd for i 0 i 10 i static void nand addr unsigned int addr unsigned int col addr 2048 unsigned int page addr 2048 volatile int i NFADDR col for i 0 i 8 for i 0 i 10 i NFADDR page for i 0 i 8 for i 0 i 16 for i 0 i 10 i static void nand wait ready ll void while NFSTAT static unsigned char nand data void return NFDATA src 0 dest 0 x33f80000 len 0 x73250 void nand read ll unsigned int addr unsigned char buf unsigned int len int col addr 2048 int i 0 1 选中 nand select while i len 2 发出读命令 00h nand cmd 0 x00 3 发出地址 分 5 步发出 nand addr addr 4 发出读命令 30h nand cmd 0 x30 5 判断状态 nand wait ready ll 6 读数据 for col 2048 并在 board nand init 里修改 nand 的初 始化参数 添加 writel 1 4 1 1 1 nfcont nand select chip s3c2440 nand select 修改 s3c2440 hwcontrol static void s3c2440 hwcontrol struct mtd info mtd int dat unsigned int ctrl struct s3c2440 nand nand s3c2440 get base nand if ctrl else if ctrl 8 4 在 smdk2440 h 里添加 define CONFIG NAND S3C2440 define CONFIG SYS S3C2440 NAND HWECC define CONFIG ENV IS IN NAND define CONFIG ENV OFFSET 0 x40000 define CONFIG ENV SIZE 0 x20000 9 修改网卡 9 1 修改配置支持 DM9000 smdk2440 h 增加以下定义 define CONFIG DRIVER DM9000 we have a DM9000 on board define CONFIG DM9000 BASE 0 x20000000 define DM9000 IO CONFIG DM9000 BASE define DM9000 DATA CONFIG DM9000 BASE 4 define CONFIG DM9000 NO SROM 取消关于 CS8900 的定义 define CONFIG CS8900 we have a CS8900 on board define CONF
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号