ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:22.01KB ,
资源ID:8178107      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8178107.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(成功移植uboot116到edukitIII.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

成功移植uboot116到edukitIII.docx

1、成功移植uboot116到edukitIII待修改,由于时间关系还没整理完善,先把主要步骤列出:有关于Retry count exceeded; starting again错误即将描述一、先实现可从nand flash启动1.在u-boot-1.2.0/Makefile中diff -urNu-boot-1.2.0.orig/Makefile u-boot-1.2.0/Makefile-u-boot-1.2.0.orig/Makefile 2007-01-0707:13:11.000000000 +0800+u-boot-1.2.0/Makefile 2007-09-1912:09:20.00

2、0000000 +0800 -125,7+125,7 CROSS_COMPILE = powerpc-linux-endififeq ($(ARCH),arm)-CROSS_COMPILE = arm-linux-+CROSS_COMPILE =/usr/local/arm/arm-2007q1/bin/arm-none-linux-gnueabi-endif 这是需要修改的第一段代码其实就是把/u-boot-1.2.0/Makefile程序第125行改了,其实就是设定交叉编译器,这段代码是很好的学习材料这就是一个补丁的制作过程diff:以u-boot-1.2.0/Makefile为目标文件,

3、以u-boot-1.2.0.orig/Makefile为源文件2.在u-boot-1.2.0/board/smdk2410/中Makefilediff -urN u-boot-1.2.0.orig/board/smdk2410/Makefileu-boot-1.2.0/board/smdk2410/Makefile-u-boot-1.2.0.orig/board/smdk2410/Makefile 2007-01-0707:13:11.000000000 +0800+u-boot-1.2.0/board/smdk2410/Makefile 2007-09-1912:22:24.00000000

4、0 +0800 -25,7 +25,7 LIB = $(obj)lib$(BOARD).a-COBJS := smdk2410.o flash.o+COBJS := smdk2410.o flash.onand_read.oSOBJS :=lowlevel_init.oSRCS := $(SOBJS:.o=.S)$(COBJS:.o=.c)lowlevel_init.Sdiff -urNu-boot-1.2.0.orig/board/smdk2410/lowlevel_init.Su-boot-1.2.0/board/smdk2410/lowlevel_init.S-u-boot-1.2.0.

5、orig/board/smdk2410/lowlevel_init.S 2007-01-0707:13:11.000000000 +0800+u-boot-1.2.0/board/smdk2410/lowlevel_init.S 2007-09-1912:22:08.000000000 +0800 -123,7 +123,7 #define Trp0x0 #define Trc0x3 #define Tchr0x2 -#define REFCNT1113 +#defineREFCNT1268 _TEXT_BASE:新建文件nand_read.cdiff -urNu-boot-1.2.0.ori

6、g/board/smdk2410/nand_read.cu-boot-1.2.0/board/smdk2410/nand_read.c-u-boot-1.2.0.orig/board/smdk2410/nand_read.c 1970-01-0108:00:00.000000000 +0800+u-boot-1.2.0/board/smdk2410/nand_read.c 2007-09-1912:24:13.000000000 +0800 -0,0 +1,77 +#include+#ifdef CONFIG_S3C2410_NAND_BOOT+#define _REGb(x) (*(vola

7、tile unsigned char*)(x)+#define _REGi(x) (*(volatile unsigned int*)(x)+#defineNF_BASE0x4e000000+#define NFCONF_REGi(NF_BASE +0x0)+#define NFCMD_REGb(NF_BASE +0x4)+#define NFADDR_REGb(NF_BASE +0x8)+#define NFDATA_REGb(NF_BASE +0xc)+#define NFSTAT_REGb(NF_BASE +0x10)+#define BUSY 1+inline void wait_id

8、le(void) + inti;+ while(!(NFSTAT & BUSY)+ for(i=0; i512+#defineNAND_BLOCK_MASK(NAND_SECTOR_SIZE- 1)+int+nand_read_ll(unsigned char *buf, unsigned long start_addr, intsize)+ int i,j;+ if(start_addr & NAND_BLOCK_MASK) | (size& NAND_BLOCK_MASK) + return -1; + + + NFCONF&= 0x800;+ for(i=0;ifor(i=start_a

9、ddr; i + NFCMD = 0;+ + NFADDR = i & 0xff;+ NFADDR = (i 9) &0xff;+ NFADDR = (i 17) &0xff;+ NFADDR = (i 25) &0xff;+ wait_idle();+ for(j=0; j *buf = (NFDATA & 0xff);+ buf+;+ + + + NFCONF |=0x800; + return0;+#endifsmdk2410.cdiff -urN u-boot-1.2.0.orig/board/smdk2410/smdk2410.cu-boot-1.2.0/board/smdk2410

10、/smdk2410.c-u-boot-1.2.0.orig/board/smdk2410/smdk2410.c 2007-01-0707:13:11.000000000 +0800+u-boot-1.2.0/board/smdk2410/smdk2410.c 2007-09-1912:21:39.000000000 +0800 -36,10 +36,10 #define M_MDIV 0xC3#define M_PDIV 0x4#define M_SDIV 0x1-#elif FCLK_SPEED=1-#define M_MDIV 0xA1-#define M_PDIV 0x3-#define

11、 M_SDIV 0x1+#elifFCLK_SPEED=1+#define M_MDIV 0x5C+#define M_PDIV 0x4+#defineM_SDIV 0x0#endif#define USB_CLOCK 1 -87,7 +87,7 gpio-GPACON =0x007FFFFF;- gpio-GPBCON = 0x00044555;+ gpio-GPBCON =0x000055A;gpio-GPBUP= 0x000007FF;gpio-GPCCON =0xAAAAAAAA;gpio-GPCUP =0x0000FFFF; -99,7 +99,7 gpio-GPFUP =0x000

12、000FF;gpio-GPGCON =0xFF95FFBA;gpio-GPGUP =0x0000FFFF;- gpio-GPHCON = 0x002AFAAA;+ gpio-GPHCON =0x0016FAAA;gpio-GPHUP= 0x000007FF;3.在u-boot-1.2.0/cpu/arm920t中start.S(第一层汇编程序入口)diff -urN u-boot-1.2.0.orig/cpu/arm920t/start.Su-boot-1.2.0/cpu/arm920t/start.S-u-boot-1.2.0.orig/cpu/arm920t/start.S 2007-01

13、-0707:13:11.000000000 +0800+ u-boot-1.2.0/cpu/arm920t/start.S 2007-09-1912:37:00.000000000 +0800 -27,7 +27,7 #include#include-+#includeldr r0,=INTSUBMSKstr r1,r0# endif -161,6 +161,7 #endif#ifndef CONFIG_SKIP_RELOCATE_UBOOT+#ifndefCONFIG_S3C2410_NAND_BOOTrelocate: adr r0,_startldr r1,_TEXT_BASE -177

14、,8 +178,67 stmia r1!,r3-r10cmp r0,r2 ble copy_loop+#else+relocate:+copy_myself:+ reset NAND+ mov r1,#S3C2410_NAND_BASE+ ldr r2,=0xf830 initial valueenable+ str r2, r1, #oNFCONF+ ldr r2, r1, #oNFCONF+ bic r2, r2,#0x800 enable chip+ str r2, r1, #oNFCONF+ mov r2,#0xff RESET command+ strb r2, r1, #oNFCM

15、D+ mov r3,#0 wait+1: add r3, r3, #0x1+ cmp r3, #0xa+ blt 1b+2: ldr r2, r1,#oNFSTAT wait ready+ tst r2, #0x1+ beq 2b+ ldr r2, r1, #oNFCONF+ orr r2, r2,#0x800 disable chip+ str r2, r1, #oNFCONF+ + ldr r0,_TEXT_BASE + sub r0, r0,#CFG_MALLOC_LEN+ sub r0, r0,#CFG_GBL_DATA_SIZE +#ifdef CONFIG_USE_IRQ+ sub

16、 r0, r0,#(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)+#endif+ sub sp, r0,#12 + copy u-boot to RAM+ ldr r0, _TEXT_BASE+ mov r1, #0x0+ mov r2, #CFG_UBOOT_SIZE+ bl nand_read_ll+ tst r0, #0x0+ beq ok_nand_read+ok_nand_read:+ verify+ mov r0, #0+ ldr r1, _TEXT_BASE+ mov r2,#0x400 4 bytes * 1024 = 4K-bytes+

17、go_next:+ ldr r3, r0, #4+ ldr r4, r1, #4+ teq r3, r4+ bne notmatch+ subs r2, r2, #4+ beq done_nand_read+ bne go_next+notmatch:+1: b 1b+done_nand_read:+#endif#endif +#ifndefCONFIG_S3C2410_NAND_BOOTstack_setup:ldr r0,_TEXT_BASE -188,6 +248,7 sub r0, r0,#(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)#endi

18、fsub sp, r0,#12+#endifclear_bss:ldr r0,_bss_start4.在u-boot-1.2.0/include/Configs/smdk2410.h中diff -urN u-boot-1.2.0.orig/include/configs/smdk2410.hu-boot-1.2.0/include/configs/smdk2410.h-u-boot-1.2.0.orig/include/configs/smdk2410.h 2007-01-0707:13:11.000000000 +0800+u-boot-1.2.0/include/configs/smdk2

19、410.h 2007-09-1912:42:45.000000000 +0800 -82,6 +82,8 + CFG_CMD_NET | + CFG_CMD_PING | CFG_CMD_REGINFO | CFG_CMD_DATE | CFG_CMD_ELF) -91,10 +93,10 #define CONFIG_BOOTDELAY 3-+#defineCONFIG_ETHADDR08:00:3e:26:0a:5b#defineCONFIG_NETMASK 255.255.255.0-#defineCONFIG_IPADDR10.0.0.110-#defineCONFIG_SERVERI

20、P10.0.0.1+#defineCONFIG_IPADDR192.168.1.110+#defineCONFIG_SERVERIP192.168.1.216 -108,7 +110,7 * Miscellaneous configurable options*/#define CFG_LONGHELP -#define CFG_PROMPTSMDK2410# +#define CFG_PROMPTU-boot# #define CFG_CBSIZE256#define CFG_PBSIZE(CFG_CBSIZE+sizeof(CFG_PROMPT)+16)#define CFG_MAXARG

21、S16 -178,4 +180,8 #define CFG_ENV_IS_IN_FLASH 1#defineCFG_ENV_SIZE0x10000 +#define CONFIG_S3C2410_NAND_BOOT+#defineCFG_UBOOT_SIZE0x20000+#endif 5.在u-boot-1.2.0/include/s3c2410.hdiff -urN u-boot-1.2.0.orig/include/s3c2410.hu-boot-1.2.0/include/s3c2410.h- u-boot-1.2.0.orig/include/s3c2410.h 2007-01-07

22、07:13:11.000000000 +0800+ u-boot-1.2.0/include/s3c2410.h 2007-09-1912:38:31.000000000 +0800 -38,12 +38,6 #defineS3C2410_ECCSIZE512#define S3C2410_ECCBYTES 3-typedef enum - S3C24X0_UART0,- S3C24X0_UART1,- S3C24X0_UART2- S3C24X0_UARTS_NR;-#defineS3C24X0_MEMCTL_BASE0x48000000#defineS3C24X0_USB_HOST_BAS

23、E0x49000000 -64,10 +58,23 #defineS3C24X0_SPI_BASE0x59000000#defineS3C2410_SDI_BASE0x5A000000+#defineoNFCONF 0x00+#defineoNFCMD 0x04+#defineoNFADDR 0x08+#defineoNFDATA 0x0C+#defineoNFSTAT 0x10+#defineoNFECC 0x14+#ifndef _ASSEMBLER_#include+typedef enum + S3C24X0_UART0,+ S3C24X0_UART1,+ S3C24X0_UART2+

24、 S3C24X0_UARTS_NR;static inline S3C24X0_MEMCTL * constS3C24X0_GetBase_MEMCTL(void) -224,4 +231,7 rINTPND; +#endif+#endif二、再实现支持nand flash 读写的部分(可以去掉2440的部分):U-Boot 1.1.6中对NANDFlash的支持有新旧两套代码,新代码在drivers/nand目录下,旧代码在drivers/nand_legacy目录下。文档doc/README.nand对这两套代码有所说明:使用旧代码需要定义更多的宏,而新代码移植自Linux内核2.6.12

25、,它更加智能,可以自动识别更多型号的NANDFlash。目前之所以还保留旧的代码,是因为两个目标板NETTA、NETTA_ISDN使用JFFS文件系统,它们还依赖于旧代码。当相关功能移植到新代码之后,旧的代码将从U-Boot中去除。 要让U-Boot支持NAND Flash,首先在配置文件include/configs/100ask24x0.h的宏CONFIG_COMMANDS中增加CFG_CMD_NAND,如下: #define CONFIG_COMMANDS (CONFIG_CMD_DFL | CFG_CMD_CACHE | CFG_CMD_PING | CFG_CMD_NAND| 然后选

26、择使用哪套代码:在配置文件中定义宏CFG_NAND_LEGACY则使用旧代码,否则使用新代码。 使用旧代码时,需要实现drivers/nand_legacy/nand_legacy.c中使用到的各种宏,比如: #define NAND_WAIT_READY(nand)/* 等待Nand Flash的状态为“就绪”,代码依赖于具体的开发板 */ #define WRITE_NAND_COMMAND(d, adr)/* 写NAND Flash命令,代码依赖于具体的开发板 */ 本书使用新代码,下面讲述移植过程。 代码的移植没有现成的文档,可以在配置文件include/configs/100ask2

27、4x0.h的宏CONFIG_COMMANDS中增加CFG_CMD_NAND后,就编译代码,然后一个一个地解决出现的错误。编译结果中出现的错误和警告如下: nand.h:412: error: NAND_MAX_CHIPS undeclared here (not in a function) nand.c:35: error: CFG_MAX_NAND_DEVICE undeclared here (not in a function) nand.c:38: error: CFG_NAND_BASE undeclared here (not in a function) nand.c:35: error: storage size of nand_info isnt known nand.c:37: error: storage size of nand_chip isnt known nand.c:38: error: storage size of base_address isnt known nand.c:37: warning: nand_chip defined but not used nand.c:38: warning: base_address defined but not used 在配置文件include/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1