u-boot-2016.11移植到S3C2440之第一阶段修改(2)

发布者:静逸闲云最新更新时间:2022-07-25 来源: csdn关键字:u-boot  移植  S3C2440 手机看文章 扫描二维码
随时随地手机看文章

1、u-boot-2016.11的第一个启动的文件为archarmlibvectors.S,系统上电时,产生复位异常,从vectors.S中的reset跳转到start.S (archarmcpuarm920t),在该文件中修改系统时钟代码,并添加上icache的启动代码加快启动速度(添加到屏蔽IRQ中断代码之后):


/******************初始化系统时钟********************/


ldr r0,=0x4c000014

mov r1,#0x05         /*FCLK:HCLK:PCLK = 1:4:8 = 400M:100M:50M*/    

str r1,[r0]            

mrc    p15, 0, r1, c1, c0, 0         

       orr    r1, r1, #0xc0000000           

       mcr    p15, 0, r1, c1, c0, 0       

       ldr r0,=0x4c000004

       ldr r1,=0x5c011

       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

注释掉Smdk2440.c(boardsamsungsmdk2440)中的board_early_init_f函数中的时钟配置:

2、随后进入lowlevel_init.S(boardsamsungsmdk2440)中的lowlevel_init配置初始化2440的存储控制器包括SDRAM初始化,将存储控制器13个寄存器的值替换为自己的寄存器的值:

3、编译,烧写到NORflash,输出乱码。查找下来是Speed.c(archarmcpuarm920ts3c24x0)中的获取时钟函数get_HCLK有问题,没有配置CONFIG_S3C2440,到includeconfigssmdk2440.h中去配置:

注意!不要使用如下注释方法,会报错。

再编译,烧写到NORflash,成功启动并打印出信息,识别出SDRAM大小,如图:


关键字:u-boot  移植  S3C2440 引用地址:u-boot-2016.11移植到S3C2440之第一阶段修改(2)

上一篇:u-boot-2016.11移植到S3C2440之新建一个单板(1)
下一篇:详细解析uboot移植(针对开发板mini2440)

推荐阅读最新更新时间:2024-10-26 06:54

u-boot移植s3c2440开发板(一)--建立单板
由于没有系统的学习shell,所以Makefile大多数看不懂,一个小小的细节,把我难住了几天。现在开始分享我的操作过程 本文所有linux下的操作是root用户,如果你使用普通用户,请在命令前加上 $ sudo xxxx 所有Linux命令都是加粗,需要加入的文本是斜体 /* *  Ubuntu 16.04 *  u-boot-2016.05.tar.bz2 *  arm-linux-gcc-4.4.3.tar.gz */ 准备工作 1.下载u-boot,我是用的u-boot-2016.05.tar.bz2,可以自己去官网下载 下载地址, ftp://ftp.denx.de/pub/u-boot/ 2.下载arm-linux-g
[单片机]
<font color='red'>u-boot</font><font color='red'>移植</font>到<font color='red'>s3c2440</font>开发板(一)--建立单板
U-Boot移植(3)增加对S3C2440的支持
6、S3C2440是S3C2410的改进版,它们的操作基本相似,只是在系统时钟的设置、NAND Flash控制器的操作等方面有一些小差别。。而下面我要做的就是令一个U-Boot二进制代码既可以在S3C2410上运行,也可以在S3C2440上运行。 虽说我的板也是S3C2410的,但是增加S3C2440的U-Boot练习,可以提高我们的能力,为后面的学习打下基础。 GSTATUS1寄存器的值:0x32410000表示S3C2410,0x32410002表示S3C2440。 S3C2410:FCLK=200MHZ;S3C2440:FCLK=400MHZ,UCLK=48MHZ; 搞清楚之
[单片机]
<font color='red'>U-Boot</font><font color='red'>移植</font>(3)增加对<font color='red'>S3C2440</font>的支持
U-Boot移植(4)增加对S3C2440的支持 (修改编译错误)
9、第一次make all,出现如下错误。 从上面错误可以看出明显是结构体中没有定义CAMDIVN,于是要找到定义这个时钟变量的地方,增加它。进入include/s3c24x0.h,找到下面的typedef struct处: typedef struct 的最后一行为新增的。 修改完后保存,再次回到顶层中,先make distclean。 10、再一次make all,又出现了如下错误: 上面到底是什么错误呢?一时是想不通,吃个饭再说吧! 吃完饭来到实验室之后,上网查了些资料,终于明白。 要么U-Boot源码问题,要么是编译器的问题。源码是从官方下的,一般是不会有问题的,那么就是编译器问题,那编译器
[单片机]
<font color='red'>U-Boot</font><font color='red'>移植</font>(4)增加对<font color='red'>S3C2440</font>的支持 (修改编译错误)
U-bootS3C2440上的移植详解(四)
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 在这一篇中,我们首先让开发板对CS8900或者DM9000X网卡的支持,然后再分析实现u-boot怎样来引导Linux内核启动。因为测试u-boot引导内核我们要用到网络下载功能。 7)u-boot对CS8900或者DM9000X网卡的支持。 u-boot-2009.08版本已经对CS8900和DM9000X网卡有比较完善的代码支持(代码在drivers/ne
[单片机]
<font color='red'>U-boot</font>在<font color='red'>S3C2440</font>上的<font color='red'>移植</font>详解(四)
U-bootS3C2440上的移植详解(五)
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 9)实现u-boot对yaffs/yaffs2文件系统下载的支持。 注意:此篇对Nand的操作是基于MTD架构方式,在“u-boot-2009.08在2440上的移植详解(三)”中讲到过。 通常一个Nnad Flash存储设备由若干块组成,1个块由若干页组成。一般128MB以下容量的Nand Flash芯片,一页大小为528B,被依次分为2
[单片机]
<font color='red'>U-boot</font>在<font color='red'>S3C2440</font>上的<font color='red'>移植</font>详解(五)
U-bootS3C2440上的移植详解(一)
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 本次移植的功能特点包括: 支持Nand Flash读写 支持从Nor/Nand Flash启动 支持CS8900或者DM9000网卡 支持Yaffs文件系统 支持USB下载(还未实现) 1. 了解u-boot主要的目录结构和启动流程,如下图。 u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言
[单片机]
<font color='red'>U-boot</font>在<font color='red'>S3C2440</font>上的<font color='red'>移植</font>详解(一)
S3C2440 U-Boot移植--Norflash驱动支持- S29AL016
U-Boot版本:2008.10 开发板:Mini2440 之前根据国嵌的实验手册移植了很久都没有成功,关键是国嵌手册上的Norflash型号是SST1601,而我的Mini2440开发板上配置的是Spansion公司的S29AL016J芯片,两者型号不同,修改的地方差异很大。后来通过在网上查资料发现S29AL016J芯片与smdk2410默认使用的芯片(AMD的AM29LV400)除了大小不一样外,其他如命令序列,操作方式都是一样的(也难怪在做完国嵌实验手册的2.4以后就可以进行环境变量的保存)。所以根据AM29LV400来移植的话所做的修改不多。 查询datasheet后,得到如下信息; 该Norflash芯
[单片机]
uboot-2011.12移植S3C2440(序二)—— binutils二进制工具集与u-boot
概述 binutils是一组二进制工具集,它包括addr2line、ar、gprof、nm、objcopy、objdumpr、ranlib、size、strings、strip等。 ar软件 ar用于建立、修改、提取库文件。ar至少需要两个参数才能运行,比如: $ ar rv libtest.a add.o minus.o 是指将add.o、minus.o做成库文件libtest.a。其中r是指将文件列表插入归档文件,v是指得到操作版本号。 这样我们引用库文件的时候就可以使用: $ gcc -o test test.c -ltest nm软件 nm软件的作用是现实目标文件的信息和属性,比如: $ nm test.o
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved