下载最新版U-boot,建立Source Insight工程,在建立工程的时候注意,去掉一些很明显不属于硬件的分支代码。

     例如,arch目录下面的除开arm子目录之外的其他目录,都可以不添加。

                  arm目录下,cpu子目录只需要添加和板子对于的体系结构代码即可。

                  例如,板子S3C2410是arm920t的,因此,只需要添加arm920t目录下面的:

                  添加所有红框框中的代码就处理完cpu目录的代码添加。

                   arm目录下的inclue目录里面有asm目录,里面定义了多种体系结构的头文件,我们只需要添加自身对于板级的头文件:

                   在此目录下,我们只需要添加 arch-s3c24x0里面的全部文件和外部零散的其他通用头文件。

                 

             board目录下面的,除开samsung子目录之外,其他的目录都不需要添加

             根目录下面的 tools、test、scripts、post、net这些子目录,都不需要添加。

     Uboot的源码在git仓库中维护,git地址为 git://www.denx.de/git/u-boot.git , U-Boot项目主页点此

 

初始编译

     make smdk2410_deconfig, 出现如下错误:

   

     解决方法,编译时,指定交叉编译工具前缀 make CROSS_COMPILE=arm-linux-

     解决后再次出现如下错误,

      

    解决方法:可以在include/configs/smdk2410.h 里面添加一个宏定义 #define CONFIG_ENV_SIZE 0x2000

  

   解决方法:使用更新的交叉编译工具链  arm-linux-gcc-4.3.2.tar.bz2

用未经过任何修改的Uboot代码编译后,是不能运行在板子上面的。需要针对自身硬件进行修改,具体步骤如下:

1. 将board/samung/ 目录下面的 smdk2410目录全部拷贝一份,取名为smdk2440

    将include/configs目录下的smdk2410.h 复制一份,取名为smdk2440.h

2. 新版本的Uboot已经去掉了 boards.cfg文件,改为make menuconfig来配置,所有的config文件都在configs目录下。

    3. 修改Uboot代码中的问题:

       在start.S中,

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

     可以做如下修改:

    

    注释掉这里的MPLL设置,修改start.S中的 设置分频系数参数。

   1:  // arch/arm/cpu/arm920t/Start.S
   2:  #if 0
   3:      /* FCLK:HCLK:PCLK = 1:2:4 */
   4:      /* default FCLK is 120 MHz ! */
   5:      ldr    r0, =CLKDIVN
   6:      mov    r1, #3
   7:      str    r1, [r0]
   8:      #else
   9:      /* 2. 设置时钟 */
  10:      ldr r0, =0x4c000014
  11:      //  mov r1, #0x03;            // FCLK:HCLK:PCLK=1:2:4, HDIVN=1,PDIVN=1
  12:      mov r1, #0x05;            // FCLK:HCLK:PCLK=1:4:8
  13:      str r1, [r0]
  14:   
  15:      /* 如果HDIVN非0,CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */
  16:      mrc p15, 0, r1, c1, c0, 0       /* 读出控制寄存器 */
  17:      orr r1, r1, #0xc0000000         /* 设置为“asynchronous bus mode” */
  18:      mcr p15, 0, r1, c1, c0, 0       /* 写入控制寄存器 */
  19:   
  20:      #define S3C2440_MPLL_400MHZ     ((0x5c<<12)|(0x01<<4)|(0x01))
  21:      /* MPLLCON = S3C2440_MPLL_200MHZ */
  22:      ldr r0, =0x4c000004
  23:      ldr r1, =S3C2440_MPLL_400MHZ
  24:      str r1, [r0]
  25:   
  26:      /* 启动ICACHE */
  27:      mrc p15, 0, r0, c1, c0, 0   @ read control reg
  28:      orr r0, r0, #(1<<12)
  29:      mcr p15, 0, r0, c1, c0, 0   @ write it back
  30:      #endif

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

   内存控制器的设置值改为如下:

   1:  //board/samsung/smdk2410/lowlevel_init.S 
   2:  SMRDATA:
   3:  #if 0
   4:      .word (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
   5:      .word ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))
   6:      .word ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))
   7:      .word ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))
   8:      .word ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))
   9:      .word ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))
  10:      .word ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))
  11:      .word ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))
  12:      .word ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))
  13:      .word ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Trc<<18)+(Tchr<<16)+REFCNT)
  14:      .word 0x32
  15:      .word 0x30
  16:      .word 0x30
  17:  #else
  18:  SMRDATA:
  19:      .long 0x22011110     //BWSCON
  20:      .long 0x00000700     //BANKCON0
  21:      .long 0x00000700     //BANKCON1
  22:      .long 0x00000700     //BANKCON2
  23:      .long 0x00000700     //BANKCON3
  24:      .long 0x00000700     //BANKCON4
  25:      .long 0x00000700     //BANKCON5
  26:      .long 0x00018005     //BANKCON6
  27:      .long 0x00018005     //BANKCON7
  28:      .long 0x008C04F4     //REFRESH
  29:      .long 0x000000B1     //BANKSIZE
  30:      .long 0x00000030     //MRSRB6
  31:      .long 0x00000030     //MRSRB7
  32:  #endif

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

    如果串口打印出乱码,一般来说是波特率设置不正常。

    未完待续-…………………………

Technorati 标签: Uboot 移植

移植最新Uboot到JZ2440开发板的更多相关文章

  1. Linux学习 :移植U-boot_2016.09到JZ2440开发板

    一.下载源码:ftp://ftp.denx.de/pub/u-boot/ 二.初始化编译: ①新建一个单板: cd board/samsung/ cp smdk2410 smdk2440 -rf   ...

  2. Linux学习 :移植U-boot_2012.04.01到JZ2440开发板

    一.下载U-boot源码:ftp://ftp.denx.de/pub/u-boot/ 二.uboot的启动过程: 部分硬件初始化——>加载完整uboot到RAM——>跳转到第二阶段入口开始 ...

  3. Jz2440开发板熟悉

    title: Jz2440开发板熟悉 tags: ARM date: 2018-10-14 15:05:56 --- 概述 外部晶振为12M Nand Flash 256M,Nor Flash 2M, ...

  4. 基于JZ2440开发板编写bootloader总结(一)

    凡走过必留下痕迹,学点什么都会有用的. 本系列博文总结了自己在学习嵌入式Linux编程过程中的收获,若有错误,恳请指正,谢谢! --参考教材韦东山系列教材 bootloader 是一个用于启动linu ...

  5. JZ2440开发板:UART(串口)使用(学习笔记)

    查看UART在硬件上的信息,阅读JZ2440原理图可以看到: JZ2440开发板的UART0是可以跟USB相接的,用于打印调试,UART1,UART2两个串口用来外接模块.所以本文仅对UART0进行操 ...

  6. JZ2440开发板:修改ARM芯片时钟(学习笔记)

    想要修改ARM芯片的时钟,需要去查询芯片手册和原理图,获取相关的信息(见下方图片) 首先来看时钟的结构图 根据结构图可以看出,时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 2. EX ...

  7. JZ2440开发板:用按键点亮LED灯(学习笔记)

    本文是对韦东山嵌入式第一期学习的记录之一,如有您需要查找的信息,可以继续往下阅读. 想要用按键点亮LED灯,就需要知道按键和LED灯的相关信息,这样才可以进行之后的操作.阅读JZ2440的原理图,可以 ...

  8. 四、移植 JZ2440 开发板

    4.1 移植第一步 前面已经分析过了 .config 的过程,可以知道移植需要用到的文件: .config 文件 arch/arm/cpu 下的文件 board 目录  .config 文件是根据后面 ...

  9. (嵌入式开发)移植最新uboot

    一:准备移植 1.从下面的官网下载最新的U-boot.用google英文版搜索最新的u-boot源码  ftp://ftp.denx.de/pub/u-boot/ 2.建立sourceinsight工 ...

随机推荐

  1. RabbitMQ基础组件和SpringBoot整合RabbitMQ简单示例

    交换器(Exchange) 交换器就像路由器,我们先是把消息发到交换器,然后交换器再根据绑定键(binding key)和生产者发送消息时的路由键routingKey, 按照交换类型Exchange ...

  2. JAVA-JSP内置对象之移除属性

    相关资料:<21天学通Java Web开发> 移除属性1.只需调用相应对象的removeAttribute()方法就可以移除指定属性 RemoveAttributeDemo.jsp < ...

  3. Ios导航栏返回到指定的页面

    在自己的项目实现中有这样的一个需求.一般情况下我们的导航栏返回按钮,是上个页面跳转过来,点击返回按钮返回到上来界面.但是在实际需求中有的并不是这么简单的.有的界面返回是只确定的界面.所以当时自己在实现 ...

  4. Lamda表达式的参数捕获,太酷了

    lamda表达式有了参数捕获这个功能,让Action这个委托变得无所不能.Action委托就是无参数,无返回值的一个代理类型. 它只能对应于下面这种类型的函数声明. public void Funct ...

  5. asp.net无刷新上传(带预览)

    1.有个图片 <img id="Image1" title="用于广告栏及图文框缩略图" width="150" height=&qu ...

  6. PHP利用CURL_MULTI实现多线程

    PHP中的curl_multi一类函数可以实现同时请求多个url,而不是一个一个依次请求,这就类似一个进程实现了多个线程的功能,因此可以使用PHP利用CURL_MULTI实现完成多线程类的任务,下面就 ...

  7. 快速排序算法(Quicksort)

    快速排序算法是对集合中元素进行排序最通用的算法,俗称快排,其算法的时间复杂度为O(nlgn),空间复杂度为O(1). 我们举例来对其算法思路进行理解,譬如数组 A = { 4, 8, 1, 2, 9, ...

  8. [Intellij] Project Structure 配置说明

    IntelliJ IDEA 的Project structure可以在File->Project structure中打开,同时,在新建项目是IDE一般用向导的方式让你填写Project str ...

  9. 【SIP协议】学习初学笔记

    1.SIP这玩意是怎么走来和如何构建的? 通俗的说,SIP就是一个轻量级信令协议,它可以作为音频.视频.及时信息的信令. 说到SIP是怎么出来的就要提H.323,而提到这个标准由不得不提到ITU-T, ...

  10. 关于Unity中LOD和渲染队列----渲染通道通用指令(一)

    每个shader里面有很多的subshader,如果所以的subshader都不执行的话就,就执行fallback.每个subshader都可以设置一个LOD,整个shader也有一个LOD. 系统就 ...