一、修改时钟
在配置文件include/configstq2440.h中加入S3C2440的配置,屏蔽掉S3C2410的配置
//#defineCONFIG_S3C2410 /* specifically aSAMSUNG S3C2410 SoC */
#define CONFIG_S3C2440
//#defineCONFIG_SMDK2410 /* on a SAMSUNGSMDK2410 Board */
屏蔽一些暂时不用的支持
#if 0
#define CONFIG_CS8900 /* we have a CS8900 on-board */
#define CONFIG_CS8900_BASE 0x19000300
#define CONFIG_CS8900_BUS16 /* the Linux driver does accesses as shorts */
#endif
#if 0
#define CONFIG_USB_OHCI
#define CONFIG_USB_KEYBOARD
#define CONFIG_USB_STORAGE
#define CONFIG_DOS_PARTITION
#endif
//#defineCONFIG_CMD_DHCP
//#defineCONFIG_CMD_NAND
//#defineCONFIG_CMD_USB
#if 0
#define CONFIG_CMD_FAT
#define CONFIG_CMD_EXT2
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#defineCONFIG_MTD_PARTITIONS
#define CONFIG_YAFFS2
#define CONFIG_RBTREE
#endif
在arch/arm/cpu/arm920t/start.S添加如下代码
# if defined(CONFIG_S3C2410)
ldr r1, =0x3ff
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
# ifdefined(CONFIG_S3C2440)
ldr r1,=0x7fff
ldr r0,=INTSUBMSK
str r1,[r0]
# endif
# ifdefined(CONFIG_S3C2440)
# define MPLLCON 0x4C000004 //系统主频配置寄存器
# define UPLLCON 0x4C000008//USB频率配置寄存器
# define CAMDIVN 0x4C000018//照相机时钟分频寄存器
ldr r0, =CAMDIVN
mov r1, #0
str r1, [r0]
ldr r0, =CLKDIVN
mov r1, #0x05
str r1, [r0]
/*如果HDIVN不等于0,CPU必须设置为异步总线模式*/
mrc p15,0,r0,c1,c0,0
orr r0,r0,#0xc0000000
mcr p15,0,r0,c1,c0,0
ldr r0, =UPLLCON
ldr r1, =0x38022 // 48MHZ
str r1, [r0]
/*
**When you set MPLL&UPLL values, you haveto set the UPLL
**value first and then the MPLL value. (Needsintervals
**approximately 7 NOP)
*/
nop
nop
nop
nop
nop
nop
nop
ldr r0, =MPLLCON
ldr r1, =0x5c011 //400MHZ
str r1, [r0]
# else
/* FCLK:HCLK:PCLK = 1:2:4 */
/* default FCLK is 120 MHz ! */
ldr r0, =CLKDIVN
mov r1, #3
str r1, [r0]
# endif /*CONFIG_S3C2440 */
#endif /* CONFIG_S3C24X0 */
屏蔽board/tq2440/tq2440.c中board_early_init_f()函数对时钟的设置
#if 0
struct s3c24x0_clock_power * const clk_power =
s3c24x0_get_base_clock_power();
#endif
struct s3c24x0_gpio * const gpio =s3c24x0_get_base_gpio();
#if 0
/* 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);
/* some delay between MPLL and UPLL */
pll_delay(4000);
/* configure UPLL */
writel((U_M_MDIV << 12) + (U_M_PDIV << 4) + U_M_SDIV,
&clk_power->upllcon);
/* some delay between MPLL and UPLL */
pll_delay(8000);
#endif
在board_init函数中修改机器码
gd->bd->bi_arch_number= MACH_TYPE_S3C2440;
修改代码以支持直接烧到SDRAM运行
修改配置文件include\configs\tq2440.h
#define CONFIG_SYS_TEXT_BASE
0x32000000
#define CONFIG_SKIP_LOWLEVEL_INIT
#defineCONFIG_AUTO_COMPLETE //开启命令自动补全
修改命令提示符
#define CONFIG_SYS_PROMPT "TQ2440# "
修改顶层目录Makefile(根据自己的tftp服务器目录修改,这只是为了以后方便)
$(obj)u-boot.bin: $(obj)u-boot
$(OBJCOPY) ${OBJCFLAGS} -O binary $<$@
$(BOARD_SIZE_CHECK)
cp u-boot.bin /home/tftpboot
配置
root@zjh:/home/work/u-boot-2012.04.01#make tq2440_config
Configuring for tq2440board...
编译
root@zjh:/home/work/u-boot-2012.04.01#make
将u-boot.bin烧到0x32000000地址然后执行
TQ2440 # tftp 32000000u-boot.bin
dm9000 i/o: 0x20000000, id:0x90000a46
DM9000: running in 16 bitmode
MAC: 00:0c:29:4d:e4:f4
Using dm9000 device
TFTP from server172.28.12.60; our IP address is 172.28.12.10
Filename 'u-boot.bin'.
Load address: 0x32000000
Loading: T #############
done
Bytes transferred = 180536(2c138 hex)
TQ2440 # go 32000000
## Starting application at0x32000000 ...
U-Boot 2012.04.01 (Dec 292012 - 14:00:52)
CPUID: 32440001
FCLK: 400 MHz
HCLK: 100 MHz
PCLK: 50 MHz
DRAM: 64 MiB
WARNING: Caches not enabled
Flash: *** failed ***
### ERROR ### Please RESETthe board ###卡在这里不动了
搜索“Flash:”
puts("Flash: ");
flash_size = flash_init();
if (flash_size > 0) {
# ifdefCONFIG_SYS_FLASH_CHECKSUM
char *s = getenv("flashchecksum");
print_size(flash_size, "");
/*
* Compute and printflash CRC if flashchecksum is set to 'y'
*
* NOTE: Maybe weshould add some WATCHDOG_RESET()? XXX
*/
if (s && (*s == 'y')) {
printf("CRC: %08X", crc32(0,
(const unsigned char *) CONFIG_SYS_FLASH_BASE,
flash_size));
}
putc('\n');
# else /* !CONFIG_SYS_FLASH_CHECKSUM */
print_size(flash_size, "\n");
# endif /*CONFIG_SYS_FLASH_CHECKSUM */
} else {
puts(failed);
hang();
}
在看下hang()函数
void hang(void)
{
puts("### ERROR ### Please RESET the board ###\n");
for (;;);
}
从这里可以知道是Flash初始化失败
分享到:
相关推荐
现在网上已经有了u-boot-2012.04.01移植到TQ2440的过程,我也是看的别人的移植笔记,但是还是有些地方没有那么详细。所以细化了一下!给对u-boot移植不太熟悉的同学参考一下!
u-boot-2010.06移植到TQ2440,串口可以打印出东西,支持nor flash、nand flash、DM9000.
u-boot-2012.04.01移植具体需要修改的代码部分,红色表示要修改的
u-boot-1.1.6.tar.bz & u-boot-1.1.6_jz2440.patch
基于mini2440(256M)的u-boot.bin,使用JLINK/JTAG下载到NorFlash/NandFlash使用
TI的AM335X EVM板的Uboot源码u-boot-2011.09-psp04.06.00.08.tar.gz
u-boot-2012.04.01.tar
移植环境:ubuntu16.04.交叉编译器:4.3.2.参考了韦东山老师的第二期毕业班视频,S3C2440支持了NAND启动。
赠送jar包:spring-boot-autoconfigure-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-autoconfigure-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-autoconfigure-2.3.12.RELEASE-sources.jar; 赠送...
很多同学都喜欢学习嵌入式,但是个人觉得u-boot 可以很明显的体现个人的嵌入式水平。这里是u-boot-2013.01.tar.bz2的源代码。
一、首先建立自己的开发板 二、修改时钟 三、移植NOR FLASH 四、移植网卡DM9000 五、支持NAND FLASH读写 六、支持NAND FLASH启动 七、添加分区信息并启动jffs2文件系统 八、支持烧写yaffs文件系统
u-boot-tiny6410.tar.gz支持sd卡启动,修改u-boot - mini6410 - 20101106.tar.gz而来,屡试不爽
赠送jar包:spring-boot-actuator-autoconfigure-2.3.12.RELEASE.jar; 赠送原API文档:spring-boot-actuator-autoconfigure-2.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-boot-actuator-autoconfigure-2.3.12....
u-boot-xlnx-xilinx-v2017.4.tar,zynq7000系列UBOOT源文件,可以使用petalinux进行编译。
标准的u-boot源代码,对于学习、练习u-boot,深入学习内核有很大的帮助,请尽情使用,谢谢!
u-boot-2014.04-tq210,实现uboot初步移植,适用于S5PV210平台
u-boot-2011.09-2012R1-RC4.tar.bz2适用于上海远景bf609开发板,我已按其教程移植过了.这个uboot压缩包我先放到了一个文件夹里,再在xp下压缩为zip压缩包的,所以用的话先在xp下解压后才能得到里面的u-boot-2011.09-...
本人原创, 最新u-boot-2012.07 mini2440基于nandflash启动的移植, 新鲜出炉, 与旧版本不同, 本资源是基于nand_boot函数移植的, 应该说这种移植方法才是u-boot官方推荐的nandflash启动方法。 不多吹了, 见运行...
赠送jar包:spring-boot-2.2.8.RELEASE.jar; 赠送原API文档:spring-boot-2.2.8.RELEASE-javadoc.jar; 赠送源代码:spring-boot-2.2.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-boot-2.2.8.RELEASE....
u-boot-2017.09.tar.bz2 u-boot2017.09版本源码