我的2440开发板没有norflash,是从nand引导的,但是扬创不提供U-BOOT的源代码,
所以决定移植一个,但是一直因为没有一个很好的调试方法。一直没有完成。最近看到
skyeye支持nand启动,同时支持u-boot。随决定移植一下,目前初期阶段是移植2410的
版本,ok之后再移植2440的版本。
我上一篇《在cygwin下面用skyeye调试u-boot》有写u-boot需要下载1.1.4版本或
1.1.2版本的。我采用的是1.1.4版本。主要修改如下几个地方:
以下参考(U-BOOT FOR 阳初2410 v2.3 BY wmmwang 8/2Array/2007),我本来写了
,是直接copy 2440的,我以为一样的,结果吃了大亏,nand寄存器不一样,搞的我很烦,
怪自己啊。
1、 在cpu/armArray20t/start.s中修改如下:
#define STACK_BASE 0x33f00000
#define STACK_SIZE 0x8000
DW_STACK_START:
.word STACK_BASE+STACK_SIZE-4
#ifndef CONFIG_SKIP_RELOCATE_UBOOT
relocate: /* relocate U-Boot to RAM */
adr r0, _start /* r0
#include "linux/mtd/mtd.h"
#include "linux/mtd/nand.h"
//#define LARGEPAGE_FLASH
#define __REGb(x) (*(volatile unsigned char *)(x))
#define __REGi(x) (*(volatile unsigned int *)(x))
#define NF_BASE 0x4e000000
#define NFCONF __REGi(NF_BASE + 0x0)
#define NFCMD __REGb(NF_BASE + 0x4)
#define NFADDR __REGb(NF_BASE + 0x8)
#define NFDATA __REGb(NF_BASE + 0xc)
#define NFSTAT __REGb(NF_BASE + 0x10)
#define BUSY 1
inline void wait_idle(void) {
int i;
while(!(NFSTAT & BUSY))
for(i=0; i SZ_1M)*/) {
return -1; /* invalid alignment */
}
/* chip Enable */
NFCONF &= ~0x800;
for(i=0; i> Array) & 0xff;
NFADDR = (i >> 17) & 0xff;
NFADDR = (i >> 25) & 0xff;
#else
NFADDR = i & 0xff;
NFADDR = (i >> 8) & 0x07;
NFADDR = (i >> 11) & 0xff;
NFADDR = (i >> 1Array) & 0xff;
NFADDR = (i >> 27) & 0x3;
NFCMD = NAND_CMD_READSTART;
#endif
wait_idle();
for(j=0; j < NAND_SECTOR_SIZE; j++) {
*buf = (NFDATA & 0xff);
buf++;
}
i += NAND_SECTOR_SIZE;
}
/* chip Disable */
NFCONF |= 0x800; /* chip disable */
return 0;
}
4、 修改board/smdk2410/Makefile:
COBJS := smdk2410.o flash.o nand_read.o //添加nand_read.o
编译就可以了。
以下是采用skyeye进行调试。
首先是生成nand.dump文件。
在skyeye-1.2.4\device\nandflash\tools下面有个mknandflashdump.c。
在cygwin下面编译 gcc mknandflashdump.c 生成a.exe
copy 刚才生成的u-boot.bin
执行./a.exe u-boot.bin nand.dump 0x0
就生成了nand.dump了。
修改skyeye.conf文件:
# skyeye config file for S3C2410X
cpu: armArray20t
mach: s3c2410x
# physical memory
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000, file=./u-boot.bin,boot=yes
mem_bank: map=M, type=RW, addr=0x30000000, size=0x04000000
#mem_bank: map=M, type=RW, addr=0xC0000000, size=0x04000000,file=./vmlinux
#mem_bank: map=M, type=RW, addr=0x30000000, size=0x03F80000
#mem_bank: map=M, type=RW, addr=0x33F80000, size=0x00080000, file=./u-boot.bin,boot=yes
#mem_bank: map=M, type=RW, addr=0xc1000000, size=0x01000000
# all peripherals I/O mapping area
mem_bank: map=I, type=RW, addr=0x48000000, size=0x20000000
mem_bank: map=I, type=RW, addr=0x1Array000300, size=0x00000020
#net: type=cs8Array00a, base=0x1Array000300, size=0x20,int=Array, mac=08:00:3E:26:0A:5B, ethmod=tuntap, hostip=10.0.0.1
nandflash: type=s3c2410x,name=KArrayF1208U0B,dump=./nand.dump
#lcd: type=s3c2410x, mod=gtk
dbct:state=on
cygwin下面输入:skyeye 就ok。
注:我在copy_myself之后有个验证一直不通过,目前还在测试中。
后续我再改改
下一步:
移植到2440中,目前好像skyeye不支持2440 nand启动,看是否可以修改一下skyeye。
再下一步:
移植ecos到2440,当然也是在skyeye模拟、
先用skyeye模拟。
发现skyeye真是个好软件,特别是在bootloader移植和操作系统移植。
相关推荐
在SkyEye环境下,我们需要配置S3C2410模型,包括设置处理器的速度、内存大小、外设接口等。这通常通过SkyEye的配置文件完成,该文件用Python编写,定义了硬件模型的各个参数。例如,我们需要指定LCD控制器的工作模式...
本篇文章将详细探讨如何在Linux环境下使用SkyEye来安装U-Boot,U-Boot是一款广泛应用的开放源代码启动加载器,尤其适合嵌入式设备。 首先,我们需要确保已经正确地安装了Linux环境,这里通常推荐使用Ubuntu或者...
【基于S3C2410的嵌入式Linux在SkyEye上的移植分析】 嵌入式Linux系统在当今的物联网和智能设备中扮演着至关重要的角色,尤其在S3C2410这样的ARM9处理器上,其强大的性能和低功耗特性使其成为嵌入式开发的热门选择。...
通过SkyEye,开发者可以对各种处理器架构,如ARM、MIPS、PowerPC等进行模拟,支持的操作系统包括Linux、RTOS等。 第一部分:SkyEye介绍 SkyEye的名称来源于“天眼”,寓意着它能像天眼一样洞察嵌入式系统的每一个...
SkyEye的目标是提供一个全面的仿真环境,使开发者能够在不依赖真实硬件的情况下测试和调试嵌入式系统。 在Linux环境下安装SkyEye的首要任务是搭建开发环境。这通常涉及安装交叉编译工具和获取uClinux的源码包。在本...
### 更改skyeye的debugserver端口号与使用arm-linux-insight调试uboot #### 一、概述 在嵌入式开发领域,特别是针对基于ARM架构的设备,利用虚拟化技术来模拟目标硬件环境进行软件开发变得越来越普遍。这种方式...
标题中的“threadx cygwin skyeye基于2410”指的是将ThreadX实时操作系统(RTOS)移植到基于Cygwin环境的SkyEye模拟器上,以支持Samsung 2410处理器。ThreadX是一款广泛使用的嵌入式RTOS,Cygwin则是一个在Windows上...
SkyEye是一款支持多种处理器架构的高级硬件仿真平台。它具有高度的可扩展性和灵活性,能够模拟Arm、Blackfin、Coldfire、PowerPC、MIPS、Sparc以及x86等多种体系结构。SkyEye主要由一个核心库`libcommon.so`和一系列...
本文将详细介绍一个在Linux环境下运行SkyEye的实例——“Hello4Skyeye”,帮助读者理解从下载、编译到运行的全过程,以及涉及到的关键技术点。 #### Hello4Skyeye实例分析 **目的与特点:** Hello4Skyeye是一个...
- 首先需要安装SkyEye测试套件,接着使用SkyEye来模拟运行S3C2410开发板。 3. **运行SkyEye**: - 直接输入`skyeye`命令启动仿真器。 - 在SkyEye中可以模拟多种不同的场景,包括但不限于运行简单的应用程序和...
3. 生成二进制镜像:从源代码编译出适用于SkyEye的嵌入式操作系统或固件镜像。 4. 运行模拟:使用SkyEye命令行工具,指定配置文件和二进制镜像,启动模拟。在模拟过程中,我们可以观察系统启动日志,进行交互,甚至...
《uClinux下SkyEye的网络驱动详解》 在嵌入式系统开发领域,uClinux以其轻量级、高效的特点被广泛应用。而SkyEye则是一款强大的虚拟嵌入式平台,能够模拟各种硬件环境,使得开发者无需实际硬件即可进行系统调试和...
SkyEye是一款开源的、跨平台的嵌入式系统模拟器,它允许软件开发者在不需要硬件的情况下进行嵌入式系统的开发和测试。标题"skyeye1.3.4sourcecodes"表明我们正在处理SkyEye项目的1.3.4版本的源代码。描述中的...
这可能涉及到对底层系统调用、库函数以及多线程支持的修改。完成移植后,Windows用户可以利用更熟悉的开发环境进行嵌入式工作,降低了学习曲线,提高了开发效率。 在提供的压缩包中,我们看到了"at91rm9200"这个...
执行命令`skyeye simple_test.elf`启动模拟器,然后输入`target sim`加载目标环境,接着用`load`命令加载ELF文件,开始调试。 总结起来,SkyEye是一个强大的工具,结合arm-elf交叉编译器和UCOSII for SkyEye,可以...
2. **操作系统支持**:SkyEye 支持多种嵌入式操作系统,如Linux、VxWorks、RTOS等,允许开发者在模拟环境中运行和调试这些操作系统。 3. **性能分析**:它提供了对模拟系统性能的详细监控,包括CPU使用率、内存占用...
5. **调试与测试**:在 SkyEye 中,开发者可以方便地进行代码调试和系统测试,通过查看和修改模拟硬件的状态,快速定位和修复问题,提高了开发效率。 6. **实验环境复现**:在实际工作中,SkyEye 可以帮助开发者...
设备模型是通过 C 或 C++ 实现的,开发者可以通过阅读和修改这些模型来扩展 SkyEye 对特定设备的支持。 4. **编译工具链支持**:SkyEye 需要与交叉编译工具链配合使用,使得用户可以在模拟环境中编译和运行目标程序...