移植最新Uboot到JZ2440开发板
下载最新版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; }
如果串口打印出乱码,一般来说是波特率设置不正常。
未完待续-…………………………
移植最新Uboot到JZ2440开发板的更多相关文章
- Linux学习 :移植U-boot_2016.09到JZ2440开发板
一.下载源码:ftp://ftp.denx.de/pub/u-boot/ 二.初始化编译: ①新建一个单板: cd board/samsung/ cp smdk2410 smdk2440 -rf ...
- Linux学习 :移植U-boot_2012.04.01到JZ2440开发板
一.下载U-boot源码:ftp://ftp.denx.de/pub/u-boot/ 二.uboot的启动过程: 部分硬件初始化——>加载完整uboot到RAM——>跳转到第二阶段入口开始 ...
- Jz2440开发板熟悉
title: Jz2440开发板熟悉 tags: ARM date: 2018-10-14 15:05:56 --- 概述 外部晶振为12M Nand Flash 256M,Nor Flash 2M, ...
- 基于JZ2440开发板编写bootloader总结(一)
凡走过必留下痕迹,学点什么都会有用的. 本系列博文总结了自己在学习嵌入式Linux编程过程中的收获,若有错误,恳请指正,谢谢! --参考教材韦东山系列教材 bootloader 是一个用于启动linu ...
- JZ2440开发板:UART(串口)使用(学习笔记)
查看UART在硬件上的信息,阅读JZ2440原理图可以看到: JZ2440开发板的UART0是可以跟USB相接的,用于打印调试,UART1,UART2两个串口用来外接模块.所以本文仅对UART0进行操 ...
- JZ2440开发板:修改ARM芯片时钟(学习笔记)
想要修改ARM芯片的时钟,需要去查询芯片手册和原理图,获取相关的信息(见下方图片) 首先来看时钟的结构图 根据结构图可以看出,时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 2. EX ...
- JZ2440开发板:用按键点亮LED灯(学习笔记)
本文是对韦东山嵌入式第一期学习的记录之一,如有您需要查找的信息,可以继续往下阅读. 想要用按键点亮LED灯,就需要知道按键和LED灯的相关信息,这样才可以进行之后的操作.阅读JZ2440的原理图,可以 ...
- 四、移植 JZ2440 开发板
4.1 移植第一步 前面已经分析过了 .config 的过程,可以知道移植需要用到的文件: .config 文件 arch/arm/cpu 下的文件 board 目录 .config 文件是根据后面 ...
- (嵌入式开发)移植最新uboot
一:准备移植 1.从下面的官网下载最新的U-boot.用google英文版搜索最新的u-boot源码 ftp://ftp.denx.de/pub/u-boot/ 2.建立sourceinsight工 ...
随机推荐
- 通用后台管理系统(ExtJS 4.2 + Spring MVC 3.2 + Hibernate)
通用后台管理系统(ExtJS 4.2 +Spring MVC 3.2 + Hibernate) 开发语言JAVA 成品成品 前端技术extjs 数据库mysql,sql server,oracle 系 ...
- windows7安装tensorflow-gpu开发环境
1.安装anaconda anaconda想必大家都不陌生,由于网站登不上去,我找到了清华大学的一个开源镜像,下载地址为http://mirrors.tuna.tsinghua.edu.cn/help ...
- [Python] 探索性编程与idleX
1 探索式编程 前面介绍过几个Python的Interactive Shell,对于Python, Ruby这类动态语言来说,一个交互式的shell(用 emacs的术语来说,叫做REPL,也就是Re ...
- 图解在VC里使用graphics.h画图(相似TC)
1 www.easyx.cn 下载 EasyX 库 我下的2014;解压后例如以下图: 2 依据自己的VC 版本号进行安装 3 在控制台画一个圆 #include <graphics.h> ...
- adc 测量子系统
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> # ...
- RequireJS模块化之循环依赖
如果你定义一个循环依赖关系 (a 依赖b 并且 b 依赖 a),那么当b的模块构造函数被调用的时候,传递给他的a会是undefined. 但是b可以在a模块在被引入之后通过require(‘a’)来获 ...
- C#内置泛型委托:Action委托
1.什么是Action泛型委托 Action<T>是.NET Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显示声明自定义的委托.封 ...
- 2013Hulu校园招聘笔试题
填空题:1.中序遍历二叉树,结果为ABCDEFGH,后序遍历结果为ABEDCHGF,先序遍历结果为? FCBADEGH 如下图所示: 2.对字符串HELL0_HULU中的字符进行二进制编码,使得字 ...
- VS Code 如何直接在浏览器中预览页面
VS Code 预览html页面的时候,默认需要在资源管理器中显示,再在浏览器中预览.今天介绍一下如何直接预览html页面. 方法一:自己配置快捷键 1.ctrl + shift + p 或者 F1 ...
- php 常用的标签比较
eq或者 equal 等于 neq 或者notequal 不等于 gt 大于 egt 大于等于 lt 小于 elt 小于等于 heq 恒等于 nheq 不恒等于