- 论坛徽章:
- 0
|
经过了漫长的时间终于完成了移植工作。其实也不需要这么多时间,主要是工作太忙没有时间搞,另一方面,这是第一次做bootrom这一块,没什么经验。
目标机: 友善的Nano2410
内存 32M
Flash 64M
软件: uboot-1.1.2
arm-linux-gcc 2.95.3
在移植的过程中主要是参考了网友们的移植步骤,再结合友善提供的Nano VIVI的源代码。具体步骤就不多说了,网上到处都是。这里列举一下我在移植过程中遇到的困难和解决的办法。
2006-12-18
问题: 昨天下了几篇文章关于uboot移植到2410的,左考右考终于考完,编过。
今天下到设备中,什么反应都没有。
解决: 一开始在cygwin上弄(友善提供的),后来听说cygwin编译可能会有问题,于是编了一个友善提供的肯定没问题的VIVI版本,解决一样没反应,只能作罢。在vmware里面搭建了一个编译环境,继续研究。
2007-1-14
问题: 每编一个目录就会停一下,提示找不到.depend, unrecognized option `-MQ'
解决: gcc的版本太低了,不支持MQ选项。现在用的arm-linux-gcc编译器是2.95.3版本,u-boot1.1.6版本,重新搭建编译环境太耗时间。退到u-boot1.1.4版本问题解决。走读代码的时候发现内存大小没有设对。依然没有任何信息。决定先把串口搞定再说,不然根本没有办法定位。
Smdk2410.h
/*----------------------------------------------------------------------- * Physical Memory Map */#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */#define PHYS_SDRAM_1 0x30000000 /* SDRAM Bank #1 */#define PHYS_SDRAM_1_SIZE 0x02000000 /* 32 MB */
2007-1-15
问题: 移植了VIVI的串口初始化代码到uboot,但是还是打不出信息。
解决: UART地址没有设置对。
/* UART */#define UART_CTL_BASE 0x50000000#define UART0_CTL_BASE UART_CTL_BASE#define UART1_CTL_BASE UART_CTL_BASE + 0x4000#define UART2_CTL_BASE UART_CTL_BASE + 0x800
现在可以看到打印“@”了。但是好像出现死循环一样,估计是在不停重启。
2007-1-17
问题: 串口可以打印,但是还是看不到启动界面
解决: board/crane2410/config.mk
我的板子只有32M的内存。修改:TEXT_BASE = 0x31f00000
nano sdk 中的vivi明明把bin copy到0x31f00000,然后r1=0x33f80000,再跳到main,不明白为什么还可以跑起来。修改了TEXT_BASE以后,终于可以看到启动界面了。但是ping不通,tftp也不行不断打印"ARP Retry count exceeded; starting again"
2007-4-14
问题: 启动后,ping不通,不断打印"ARP Retry count exceeded; starting again"
解决: lowlevel_init.S 中bank3的设置不对,这部分是我开始移植的时候按照VIVI设置的,恢复成uboot的设置。Ping还是没有反应,但是已经不像开始那样不断打印错误信息了。用试了一下tftp 下载kernel ok
2007-4-15
问题: tftp下载image后,执行go,但是在start_kernel的地方就停下来了。
## Starting application at 0x30008000 …
Uncompressing Linux……………………………………………………. Done, booting the kernel.
解决: r0 = 0,r1 = machine type,r2 = physical RAM address of params的ARM Linux这是linux的启动条件。参考VIVI,实现setup_linux_param, call_linux,成功搞定。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/6727/showart_278364.html |
|