移植U-boot_2016.09到JZ2440开发板

发布时间:2024-06-17  

一.下载源码:U-Boot源代码下载地址 http://www.linuxidc.com/Linux/2011-07/38897.htm

二.初始化编译:

  ①make smdk2410_defconfig  #首先使用默认配置,减少后续的配置工作
  ②make menuconfig        #根据自身需求进一步配置
  ③修改Makefile ,开头只能架构和编译器:
     ARCH=arm
     CROSS_COMPILE=arm-linux-
      ④修改uboot代码:   

    1. 设置PLL的时钟的函数在_main中的board_init_f中初始化函数列表中的  boad_early_init_f 中,设置MPLL倍频值。它应该要在设置分频系数和初始化内存控制器之间来设置。

            smdk2410.c可以注释掉:  

      /* to reduce PLL lock time, adjust the LOCKTIME register */
        //writel(0xFFFFFF, &clk_power->locktime);

      /* configure MPLL */
        //writel((M_MDIV << 12) + (M_PDIV << 4) + M_SDIV,
          //    &clk_power->mpllcon);

    在start.S中再设置:

 

  #if 0
    /* FCLK:HCLK:PCLK = 1:2:4 */
    /* default FCLK is 120 MHz ! */
    ldr    r0, =CLKDIVN
    mov    r1, #3
    str    r1, [r0]
  #else
        /* 2. 设置时钟 */
        ldr r0, =0x4c000014
        //  mov r1, #0x03;            // FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1
        mov r1, #0x05;            // 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, #0xc0000000        /* 设置为“asynchronous bus mode” */
        mcr p15, 0, r1, c1, c0, 0      /* 写入控制寄存器 */
   
        #define S3C2440_MPLL_400MHZ    ((0x5c<<12)|(0x01<<4)|(0x01))
        /* MPLLCON = S3C2440_MPLL_200MHZ */
        ldr r0, =0x4c000004
        ldr r1, =S3C2440_MPLL_400MHZ
        str r1, [r0]
 
        /* 启动ICACHE */
        mrc p15, 0, r0, c1, c0, 0  @ read control reg
        orr r0, r0, #(1<<12)
        mcr p15, 0, r0, c1, c0, 0  @ write it back
  #endif

 

   另一种改法:

      将smdk2410.c 定义的时钟宏修改如下:
         #define M_MDIV    0x5c
        #define M_PDIV    0x1
        #define M_SDIV    0x1

      再在board_early_init_f(void)中增加一个寄存器的设置:
        writel(0x5, &clk_power->clkdivn);

 

    2.内存控制器的设置值改为如下:/board/samsung/smdk2410/lowlevel_init.S

 


SMRDATA:
#if 0
    .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
    .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
    .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
    .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
    .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
    .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
    .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
    .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
    .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
    .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
    .word 0x32
    .word 0x30
    .word 0x30
#else

  .long 0x22011110    //BWSCON
  .long 0x00000700    //BANKCON0
  .long 0x00000700    //BANKCON1
  .long 0x00000700    //BANKCON2
  .long 0x00000700    //BANKCON3
  .long 0x00000700    //BANKCON4
  .long 0x00000700    //BANKCON5
  .long 0x00018005    //BANKCON6
  .long 0x00018005    //BANKCON7
  .long 0x008C04F4    //REFRESH
  .long 0x000000B1    //BANKSIZE
  .long 0x00000030    //MRSRB6
  .long 0x00000030    //MRSRB7

 #endif

 


   3.修改波特率,更正smdk2410.h 的宏定义:

    //#define CONFIG_S3C2410        /* specifically a SAMSUNG S3C2410 SoC */
    #define CONFIG_S3C2440

 

  4.支持NOR-FLASH: 在jedec_flash.c 的 jedec_table[] 中增加一项匹配板子上的NOR-Flash厂商ID和设备ID:

 


 {            /*  sheldon add for JZ2440 Nor_Flash*/                                                                   
            .mfr_id    = (u16)MX_MANUFACT,                                             
            .dev_id    = 0x2249,                                                       
            .name      = "MX29LV160D",                                                 
            .uaddr      = {                                                             
                [1] = MTD_UADDR_0x0555_0x02AA /* x16 */ 
            },                                                                           
            .DevSize    = SIZE_1MiB,                                                     
            .CmdSet    = P_ID_AMD_STD,                                         
            .NumEraseRegions= 4,                                                         
            .regions    = {                                                             
                ERASEINFO(0x10000, 31),                                                 
                ERASEINFO(0x08000, 1),                                                   
                ERASEINFO(0x02000, 2),                                                   
                ERASEINFO(0x04000, 1),                                                   
          }     

 

  PS:测试一下norflash能否正确读写,用以下u-boot命令:

    cp.b 0 30000000 80
    cmp.b 0 30000000 80
    发现读norflash没有问题。再用以下几条命令测试写norflash:
    mw.b 30000000 12 3
    protect off all
    erase 0 ffff
    cp.b 30000000 0 3
    md.b 0 3;
    发现也是121212;因此写norflash成功,至此u-boot已经支持JZ2440开发板的norflash。

                   

  5.支持NAND-FLASH:
   board_nand_init函数在drivers/mtd/nand/s3c2410_nand.c中定义:
    (1)关闭S3C2410的配置: //cfg = S3C2410_NFCONF_EN;
    (2)重新定义以下几个宏:
        #define S3C2410_NFCONF_TACLS(x)    ((x)<<12) 
        #define S3C2410_NFCONF_TWRPH0(x)  ((x)<<8) 
        #define S3C2410_NFCONF_TWRPH1(x)  ((x)<<4) 


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>