uboot移植全过程.doc_第1页
uboot移植全过程.doc_第2页
uboot移植全过程.doc_第3页
uboot移植全过程.doc_第4页
uboot移植全过程.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

要修改的文件 makefilecpu/arm920t/ include/configs driver/ board/ 修改代码1.顶层Makefile smdk2410_config:unconfig$(MKCONFIG) $(:_config=) arm arm920t smdk2410 NULL s3c24x0mini2440_config:unconfig$(MKCONFIG) $(:_config=) arm arm920t mini2440 NULL s3c24x02.Cpu/arm920t/start.s2-1.修改编译条件使其支持s3c2440136行#if defined(CONFIG_S3C2400) | defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)2-2.添加寄存器定义149行#define CLK_CTL_BASE 0x4C000000#define MDIV_405 0x7f 12#define PSDIV_405 0x21#define UPLL_MDIV_48 0x38 12#define UPLL_PSDIV_48 0x22#define MDIV_200 0xa1 12#define PSDIV_200 0x31 2-3. 修改中断禁止部分,添加s3c2440中断禁止代码164行#if defined(CONFIG_S3C2440) ldr r1, =0x7fff /*根据2440芯片手册,INTSUBMSK有15位可用*/ ldr r0, =INTSUBMSK str r1, r0#endif 2-4 修改时钟设置(将s3c2440主频设置为405MHZ)# if defined(CONFIG_S3C2440) /* FCLK:HCLK:PCLK = 1:4:8 */ ldr r0, =CLKDIVN mov r1, #5 str r1, r0 mrc p15, 0, r1, c1, c0, 0 /*read ctrl register hugerat*/ orr r1, r1, #0xc0000000 /*Asynchronous hugerat*/ mcr p15, 0, r1, c1, c0, 0 /*write ctrl register hugerat*/ /*now, CPU clock is 405.00 Mhz hugerat*/ mov r1, #CLK_CTL_BASE /* hugerat*/ mov r2, #UPLL_MDIV_48 /*UPLL */ add r2, r2, #UPLL_PSDIV_48 str r2, r1, #0x08 /*write UPLL first,48MHz */ mov r2, #MDIV_405 /* mpll_405mhz hugerat*/ add r2, r2, #PSDIV_405 /* mpll_405mhz hugerat*/ str r2, r1, #0x04 /* MPLLCON hugerat */#else /* FCLK:HCLK:PCLK = 1:2:4 */ ldr r0, =CLKDIVN mov r1, #3 str r1, r0 mrc p15, 0, r1, c1, c0, 0 /*read ctrl register hugerat*/ orr r1, r1, #0xc0000000 /*Asynchronous hugerat*/ mcr p15, 0, r1, c1, c0, 0 /*write ctrl register hugerat*/ /*now, CPU clock is 202.8 Mhz hugerat*/ mov r1, #CLK_CTL_BASE /* hugerat*/ mov r2, #MDIV_200 /* mpll_200mhz hugerat*/ add r2, r2, #PSDIV_200 /* mpll_200mhz hugerat*/ str r2, r1, #0x04 # endif3. 修改cpu/arm920t/s3c24x0/interrupts.c 3-1在S3C2410宏定义开关里加入对S3C2440的支持33行#if defined(CONFIG_S3C2400) | defined (CONFIG_S3C2410)| defined (CONFIG_S3C2440) | defined (CONFIG_TRAB)3-2在函数get_tbclk中,添加对mini2440支持180行defined(CONFIG_SMDK2410) | defined(CONFIG_MINI2440) | 4 修改cpu/arm920t/s3c24x0/speed.c 4-1在宏定义中添加对S3C2440的支持33行#if defined(CONFIG_S3C2400) | defined (CONFIG_S3C2410)| defined (CONFIG_S3C2440) | defined (CONFIG_TRAB)37行#elif defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440 4-2修改函数get_PLLCLK由于S3c2410与s3c2440的MPLL,UPLL计算公式不同68行#if defined(CONFIG_S3C2440) if (pllreg = MPLL) return(CONFIG_SYS_CLK_FREQ * m * 2) / (p CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK();添加#if defined(CONFIG_S3C2440) if (clk_power-CLKDIVN & 0x6) if (clk_power-CLKDIVN & 0x6)=2) return(get_FCLK()/2); if (clk_power-CLKDIVN & 0x6)=6) return(clk_power-CAMDIVN & 0x100) ? get_FCLK()/6 : get_FCLK()/3); if (clk_power-CLKDIVN & 0x6)=4) return(clk_power-CAMDIVN & 0x200) ? get_FCLK()/8 : get_FCLK()/4); return(get_FCLK(); else return(get_FCLK();#else return(clk_power-CLKDIVN & 0x2) ? get_FCLK()/2 : get_FCLK();#endif5。修改include/asm-arm/mach-types.h 添加mini机器ID,要求添加的ID 与内核提供的ID保持一致。在内核源代码文件arch/arm/tools/mach-types.hinclude/asm-arm/mach-types.h查到后,添加如:#define MACH_TYPE_S3C2440 3626. 修改cpu/arm920t/s3c24x0/serial.c在有s3c2410宏定义开关里加入对s3c2440的支持22行#if defined(CONFIG_S3C2400) | defined (CONFIG_S3C2410) | defined (CONFIG_S3C2440) | defined (CONFIG_TRAB)27行#elif defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)7. 修改drivers/rtc/s3c24x0_rtc.c 在有s3c2410宏定义开关里加入对s3c2440的支持 35行#elif defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)8修改include/s3c24x0.h在有s3c2410宏定义开关里加入对s3c2440的支持85行#if defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)97,102行97 #if defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)S3C24X0_REG32DISRCC;#endifS3C24X0_REG32DIDST;/* modified by david, for 2440 */102 #if defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)S3C24X0_REG32DIDSTC;#endifS3C24X0_REG32DCON;S3C24X0_REG32DSTAT;110行#if defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)128行S3C24X0_REG32CLKDIVN;/* add by david, for 2440 */#if defined (CONFIG_S3C2440)S3C24X0_REG32 CAMDIVN;#endif148行#if defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)S3C24X0_REG32LCDINTPND;404行#if defined(CONFIG_S3C2410) | defined(CONFIG_S3C2440)S3C24X0_REG32GPACON;9. 在board目录中创建一个属于新开发板的目录,向目录中添加文件,并修改:mkdir p board/mini2440cp rf board/smdk2410/* board/mini2440改smdk2410.cmv smdk2410.c min2440.c改Makefile28行COBJS:= mini2440.o flash.o10修改board/mini2440/ mini2440.c 10-1 修改PLL 的配置#if defined(CONFIG_S3C2410)/* Fout = 202.8MHz */#define M_MDIV 0xA1#define M_PDIV 0x3#define M_SDIV 0x1#endif#if defined(CONFIG_S3C2440)/* Fout = 405MHz */#define M_MDIV 0x7f #define M_PDIV 0x2#define M_SDIV 0x1#endif 10-2修改UPLL#elif USB_CLOCK=1/* modified by david, for 2440 */#if defined(CONFIG_S3C2410)#define U_M_MDIV 0x48#define U_M_PDIV 0x3#endif#if defined(CONFIG_S3C2440)#define U_M_MDIV 0x38#define U_M_PDIV 0x2#endif#define U_M_SDIV0x2#endif 10-3 为了引导内核,修改函数board_init中开发板类型代码部分106行gd-bd-bi_arch_number = MACH_TYPE_MINI2440;/机器码名字11 修改board/mini2440/lowlevel_init.S 修改REFRESH的刷新周期#define Trp0x0/* 2clk */#define Trc0x3/* 7clk */#define Tchr0x2/* 3clk */#define REFCNT1113/* period=15.6us, HCLK=60Mhz, (2048+1-15.6*60) */改后#define Trp 0x2 /* 4clk */ /* modified by david, for 2440*/#define Trc0x3/* 7clk */#define Tchr0x2/* 3clk */#define REFCNT 1012 /* modified by david, for 2440*/12软件硬配置文件mini2440.hcp include/configs/smdk2410.h include/configs/mini2440.h13.修改include/configs/mini2440.h 13-1 添加对s3c2440宏定义37,38行#defineCONFIG_S3C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论