移植u-boot 1.1.6到TQ2440开发板-第二阶段

发布者:真实幻想最新更新时间:2015-09-30 来源: eefocus关键字:移植  u-boot  6  TQ2440 手机看文章 扫描二维码
随时随地手机看文章
经过了第一阶段的修改,目前能够编译出uboot.bin文件,但是这个文件还不能支持TQ2440,因为我们是在smdk2410上移植,代码还是支持smdk2410,因此要开始第二阶段的修改

 

移植u-boot 1.1.6到TQ2440开发板-第二阶段

增加uboot对TQ2440的代码支持

 

第一步:修改 SDRAM 配置,修改u-boot-1.1.6/board/TQ2440目录lowlevel_init.S文件

第54行

#define B1_BWSCON    (DW16)
#define B2_BWSCON    (DW16)
#define B3_BWSCON    (DW16 + WAIT + UBLB)
#define B4_BWSCON    (DW16)
#define B5_BWSCON    (DW8)
#define B6_BWSCON    (DW32)
#define B7_BWSCON    (DW32)

第126行

#define REFCNT    4F4  

 

第二步:时钟设置,S3c2440 的时钟计算公式和 s3c2410 不一样,对于 s3c2440 开发板,将 PCLK 设为
400Mhz ,分频比为 FCLK:HCLK:PCLK=1:4:8,有2种设定方法,我们使用简单的一种。

1、首先屏蔽原来 s3c2410 的时钟设置,修改 u-boot-1.1.6/cpu/arm920t/ 目录下 start.S 文件 148 行如下:

#if 0
 
 
 ldr r0, =CLKDIVN
 mov r1, #3
 str r1, [r0]
#endif

2、修改 u-boot-1.1.6/cpu/arm920t/start.S ,将 stack_setup子程序搬到 relocate 子程序之前,因为所调用的 clock_init 函数需要用到堆栈。


stack_setup:
 ldr r0, _TEXT_BASE  
 sub r0, r0, #CFG_MALLOC_LEN 
 sub r0, r0, #CFG_GBL_DATA_SIZE
#ifdef CONFIG_USE_IRQ
 sub r0, r0, #(CONFIG_STACKSIZE_IRQ+CONFIG_STACKSIZE_FIQ)
#endif
 sub sp, r0, #12  

bl  clock_init

#ifndef CONFIG_SKIP_RELOCATE_UBOOT
relocate:    
 adr r0, _start  
 ldr r1, _TEXT_BASE  
 cmp     r0, r1                 
 beq     clear_bss

 ldr r2, _armboot_start
 ldr r3, _bss_start
 sub r2, r3, r2  
 add r2, r0, r2  
3、编写clock_init函数,board/TQ2440 目录下建议一个名为 boot_init.c 的文件,编写 colck_init 函数,同时加上一些声明和延时子函数

#include
#include
#define GSTATUS1  (*(volatile unsigned int *)0x560000B0)
static inline void delay (unsigned long loops)
{
__asm__ volatile ("1: n"
"subs %0, %1, #1 n"
"bne 1b":"=r" (loops):"0" (loops));
}

#define S3C2440_MPLL_400MHZ  ((0x5c<<12)| (0x01<<4)|(0x01))
#define S3C2440_MPLL_200MHZ ((0x5c<<12)|(0x01<<4)|(0x02))
#define S3C2440_MPLL_100MHZ ((0x5c<<12)|(0x01<<4)|(0x03))
#define S3C2440_UPLL_96MHZ ((0x38<<12)|(0x02<<4)|(0x01))
#define S3C2440_UPLL_48MHZ ((0x38<<12)|(0x02<<4)|(0x02))
#define S3C2440_CLKDIV (0x05) // | (1<<3))
#define S3C2440_CLKDIV188 0x04
#define S3C2440_CAMDIVN188 ((0<<8)|(1<<9))

#define S3C2410_MPLL_200MHZ  ((0x5c<<12)|(0x04<<4)|(0x00))
#define S3C2410_UPLL_48MHZ ((0x28<<12)|(0x01<<4)|(0x02))
#define S3C2410_CLKDIV 0x03
void clock_init(void)
{
S3C24X0_CLOCK_POWER *clk_power = (S3C24X0_CLOCK_POWER *)0x4C000000;

if ((GSTATUS1 == 0x32410000)|| (GSTATUS1 == 0x32410002))
{

clk_power- >CLKDIVN = S3C2410_CLKDIV;

__asm__("mrc  p15, 0, r1, c1, c0, 0 n"
"orr r1,r1, #0xc0000000 n"
11
"mcr p15, 0, r1, c1, c0, 0 n"
:::"r1"
);

clk_power- >LOCKTIME = 0xFFFFFFFF;

clk_power- >UPLLCON = S3C2410_UPLL_48MHZ;

delay (4000);

clk_power- >MPLLCON = S3C2410_MPLL_200MHZ;

delay (8000);
}
else
{

clk_power- >CLKDIVN = S3C2440_CLKDIV;

__asm__("mrc  p15, 0, r1, c1, c0, 0 n"
"orr r1,r1, #0xc0000000 n"
"mcr p15, 0, r1, c1, c0, 0 n"
:::"r1"
);

clk_power- >LOCKTIME = 0xFFFFFFFF;

clk_power- >UPLLCON = S3C2440_UPLL_48MHZ;

delay (4000);

clk_power- >MPLLCON = S3C2440_MPLL_400MHZ;

delay (8000);
}
}

4、修改u-boot-1.1.6/board/TQ2440/TQ2440.c 文件中的 board_init 函数

int board_init (void)
{
S3C24X0_CLOCK_POWER * const clk_power = S3C24X0_GetBase_CLOCK_POWER();
S3C24X0_GPIO * const gpio = S3C24X0_GetBase_GPIO();
 
gpio- >GPACON = 0x007FFFFF;
gpio- >GPBCON = 0x00055555;
gpio- >GPBUP = 0x000007FF;
gpio- >GPCCON = 0xAAAAAAAA;
gpio- >GPCUP = 0x0000FFFF;
gpio- >GPDCON = 0xAAAAAAAA;
gpio- >GPDUP = 0x0000FFFF;
gpio- >GPECON = 0xAAAAAAAA;
gpio- >GPEUP = 0x0000FFFF;
gpio- >GPFCON = 0x000055AA;
gpio- >GPFUP = 0x000000FF;
gpio- >GPGCON = 0xFF94FFBA;
gpio- >GPGUP = 0x0000FFEF;
gpio- >GPGDAT = gpio- >GPGDAT & (~(1<<4)) | (1<<4);
gpio- >GPHCON = 0x002AFAAA;
gpio- >GPHUP = 0x000007FF;

if ((gpio- >GSTATUS1 == 0x32410000) || (gpio- >GSTATUS1 == 0x32410002))
{

gd- >bd- >bi_arch_number = MACH_TYPE_SMDK2410;
}
else
{

gd- >bd- >bi_arch_number = MACH_TYPE_S3C2440;
}

gd- >bd- >bi_boot_params = 0x30000100;
icache_enable();
dcache_enable();
return 0;
}

5、修改u-boot-1.1.6/board/TQ2440的Makefile

COBJS  := TQ2440.o flash.o boot_init.o
并在 board/dong2440/u - boot.lds 文件中 35 行添加如下内容:
.text  :
{
cpu/arm920t/start.o   (.text)
board/TQ2440/boot_init.o   (.text)
*(.text)
}
以增加对 boot_init.o 的连接。
其它inclu de/s3c24x0.h ,cpu/arm920t/s3c24x0/speed.c  的修改同上面的方法一样。

 

第三步:make

最后 make 一下,没有错误,加载到内存中运行正常。我的运行结果如下:
U- Boot 1.1.6 (Sep 4 2010  - 13:50:20)
DRAM: 64 MB
Flash: 512 kB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
SMDK2410 # ?
 - alias for 'help'
autoscr - run script from m emory
base  - print or set address offset
u - boot 中的提示符“ SMDK2410 #” 可以在/include/configs/dong2440.h 中修改成自己喜欢的
提示符,操作如下:#define  CFG_PROMPT  "[dong2440]# " 

关键字:移植  u-boot  6  TQ2440 引用地址:移植u-boot 1.1.6到TQ2440开发板-第二阶段

上一篇:移植u-boot 1.1.6到TQ2440开发板-第一阶段
下一篇:移植u-boot 1.1.6到TQ2440开发板-第三阶段

推荐阅读最新更新时间:2024-03-16 14:34

微软或于明年1月推出支持ARM芯片Windows系统
两名消息人士透露,微软将在明年1月的消费电子产品展(Consumer Electronics Show)上推出支持ARM芯片的Windows 操作系统。   据称,该系统针对平板电脑及其他使用电池的手持设备进行了优化。它将使微软拥有在平板电脑和手机市场对抗苹果和谷歌的新武器。ARM芯片由高通、德州仪器和三星电子代工,大多数智能手机都使用这种芯片,甚至包括苹果iPad平板电脑。   加拿大皇家银行资本市场分析师罗伯特·布雷扎(Robert Breza)认为,针对ARM芯片推出一个全功能版的Windows,是微软削弱iPad领先优势的最佳方式。Windows系统在PC市场占据统治地位,但尚未真正打入平板电脑市场。   他说:“
[手机便携]
联发科淡季效应现 1月营收月减近1
联发科1月营收新台币168.35亿元,月减9.74%,年减8.07%,反映淡季效应,联发科先前表示,估计第1季季减幅度最多约2成,不过下半年随着新产品陆续推出,营运可望好转。   由于2月工作天数大幅减少,市场估计联发科营收表现暂将沉潜,财测估计值约是483亿~532亿元,季减幅度约12~20%。今年联发科重量级的P40、P70等产品,可望陆续搭载于大陆手机一线品牌中。   大陆智能手机成长已然趋缓,熟悉半导体业者估计今年龙头半导体业者营运呈现U型状,下半年可望逐步回温。联发科另外则持续抢攻智能语音装置、人工智能(AI)等新兴领域。   联发科执行长蔡力行先前表示,第1季智能手机需求未复甦,移动平台出货量将自去年第4季的1.1亿~
[半导体设计/制造]
华为mate 10、小米7、一加6 齐曝光:全面屏你买谁?
电子网  10月2日综合报道 华为mate 10、华为Mate 10 Pro曝光,本月16日发布 随着三星note8、iPhone 8 发布以后,华为也在上周宣布,将于华为Mate 10将于10月16日在德国发布。 日前网上已经出现一组华为Mate 10的真机谍照。真机谍照显示,华为Mate 10采用后置指纹识别传感器,双摄像头以及补光灯位于指纹识别正上方。此外,这款旗舰的背部采用亮面设计,背部弧度较大,并保留了3.5mm耳机孔,采用USB Type-C充电接口。在整体做工上,华为Mate 10可以说是相当惊艳了,而且细节都很精美。 除了华为Mate 10外,华为还会推出华为Mate 10 Pro。爆料大神@evleaks 今天
[手机便携]
Cray-1 随 FPGA“复兴”
1976 年,迪斯科还大行其道,冷战正处于高潮,而我要到 9 年之后才出生。那年,正是 Cray-1 在计算机领域大显身手之际,个人计算当时还处于发展的初期(MITS Altair 一年前刚刚推出),同时 Control Data 和 IBM 等公司统领高端市场。Cray-1 是人们印象中用于定义“超级计算机”的传奇机器之一。其采用独特的 C 型结构,运行速度高达惊人的 80 MHz,桌面电脑直到 20 年之后才能达到这样的速度。Cray 速度快,也极富吸引力。 现在,让我们把时间快进到 33 年后,那是 2009 年初的一个清晨,我起床后也想拥有一台 Cray 超级计算机。 我首先要回顾一下基于 FPGA 的复古计算机技术。
[嵌入式]
Cray-<font color='red'>1</font> 随 FPGA“复兴”
STM32F1笔记(六)独立看门狗IWDG
STM32F1内置了两个看门狗,独立看门狗IWDG和窗口看门狗WWDG,可以用来检测和解决由软件错误引起的故障。 IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。 STM32的独立看门狗由内部专门的40Khz低速时钟(LSI)驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,而不是准确的40Khz,而是30~60Khz之间的一个可变化的时钟,只是估算的时候以40Khz的频率来计算,看门狗对时间的要求不是很精确,所以时钟有些偏差是可以接受的。 独立看门狗的配置如下:
[单片机]
G6DN系列典型应用:PLC输出靠继电器触点控制
近年来,随着科技的日新月异,许多行业都开始了从全球制造向全球“智造”的转变,工业自动化市场成为全世界各国经济持续发展的重要根据地,迅速扩张的市场规模,对应用于工业自动化行业的电子继电器提出了新的需求。 欧姆龙 在这一背景下,欧姆龙电子部件公司新推出的G6DN系列继电器,以小巧纤薄、高效稳定的优势,赢得了众多企业客户的青睐,成为工业自动化行业电子继电器的首选。 G6DN系列典型应用:PLC输出靠继电器触点控制 与传统的工业用继电器不同,工业自动化行业对于电子继电器有着更高的要求,为满足这一市场要求,日前,欧姆龙电子部件公司特别推出了G6DN系列继电器,可用于工业自动化设备内部PCB板上,实现高电流切换5A( AC2
[工业控制]
Tinyos 2.x在cc2430上的移植成功
目的:将Tinyos2.x移植到cc2430中 流程:在windows下建立cygwin平台,并搭建Tinyos的编译环境,然后将基于Tinyos的应用程序编译成hex文件,通过仿真器下载到cc2430片子上运行。 原材料:硬件(wxl cc2430节点,仿真器等)、软件(Cygwin,Keil,TinyOS 2.x,编译环境配置软件包,SmartRF04 Flash Programer等)。 = = = = = = = = = = = = = = = = = = = = = = 现在国内做WSN研究的人越来越多了。在硬件方面,我们国内不像国外那样拥有很多硬件开发平台可以供我们选择。而且,crossbow的专业开发平台价
[单片机]
英飞凌全新CoolSiC™ MOSFET 750 V G1产品系列推动汽车和工业解决方案的发展
【2024年3月14日,德国慕尼黑讯】 英飞凌科技股份公司近日推出750V G1分立式CoolSiC™ MOSFET,以满足工业和汽车功率应用对更高能效和功率密度日益增长的需求 。该产品系列包含工业级和车规级SiC MOSFET,针对图腾柱 PFC、T型、LLC/CLLC、双有源桥(DAB)、HERIC、降压/升压和移相全桥(PSFB)拓扑结构进行了优化。这些MOSFET适用于典型的工业应用(包括电动汽车充电、工业驱动器、太阳能和储能系统、固态断路器、UPS系统、服务器/数据中心、电信等)和汽车领域(包括车载充电器(OBC)、直流-直流转换器等)。 CoolSiC MOSFET 750V QDPAK CoolSiC MOS
[电源管理]
英飞凌全新CoolSiC™ MOSFET 750 V G<font color='red'>1</font>产品系列推动汽车和工业解决方案的发展
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved