u-boot+uclinux 44b0 on skyeye?
现在用的版本是skyeye.0.9.8按照u-boot的dave下面的b2加了一个44b0的板子,在skyeye上面能够正常跑起来
在u-boot的做以下更改
.globl _start
_start: b reset
/* add pc, pc, #0x0c000000
add pc, pc, #0x0c000000
add pc, pc, #0x0c000000
add pc, pc, #0x0c000000
add pc, pc, #0x0c000000
add pc, pc, #0x0c000000
add pc, pc, #0x0c000000
*/
/*Modfied by yangm 2006-7-10 */
ldr pc, =0x0c000004
ldr pc, =0x0c000008
ldr pc, =0x0c00000c
ldr pc, =0x0c000010
ldr pc, =0x0c000014
ldr pc, =0x0c000018
ldr pc, =0x0c00001c
.balignl 16,0xdeadbeef
编译过后,u-boot.bin放在0-0x00200000 flash BANK上面
在uClinux.org下载最新的uClinux-dist-20051110.tar.gz,打上补丁
将vector_base设置为0x0c000000;
内核的起始地址为0x0c008000
blkmem.c里面的arenas[]里面的暂时不作更改
make menuconfig 调整好ram,flash,kernel启动地址等,将busybox工具精简至最小
make dep
make lib-only
make user_only
make romfs
make image
makedir skyeye
copy u-boot.bin,linux-2.4.x/linux,image/romfs.img到uClinux-dist/skyeye/下
在uClinux-dist/skyeye/下面的skyeye.conf:
#skyeye config file for uboot
cpu: arm7tdmi
mach: s3c44b0
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00200000,file=./u-boot.bin
mem_bank: map=M, type=RW, addr=0x0c000000, size=0x00800000,file=./romfs.img
mem_bank: map=I, type=RW,addr=0x01c00000, size=0x00400000
skyeye linux打印如下:
***********************************************************************
**** ****
**** SkyEyeSimulator Ver 0.9.8 withGDB/Insight 5.3 Interface ****
**** ****
***********************************************************************
GNU gdb 5.3
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.Type "show warranty" for details.
This SkyEye was configured as "--host=i686-pc-linux-gnu --target=arm-elf"...
(SkyEye) target sim
cpu info: armv3, arm7tdmi, 41007700, fff8ff00, 0
mach info: name s3c44b0, mach_init addr 0x8162fd8
nic info: state=1, ethmod num=1, mac addr=0:50:c2:1e:af:fb, hostip=192.168.0.23
nic_init_begin
tapif_init begin
tapif_init: fd 6
tapif_init: system("ifconfig tap0 inet 192.168.0.23");
tapif_init end
nic_init_end
SKYEYE: use arm7100 mmu ops
Loaded RAM ./u-boot.bin
Connected to the simulator.
(SkyEye) load
Loading section .init, size 0xa000 vma 0xc008000
Loading section .text, size 0x1311d0 vma 0xc012000
Loading section .data, size 0x95d8 vma 0xc144000
Start address 0xc008000
Transfer rate: 10632512 bits in <1 sec.
(SkyEye) run
Starting program: /opt/uClinux-dist/skyeye/linux
Linux version 2.4.31-uc0 (root@yangm) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #17 &para;&thorn; 7&Ocirc;&Acirc; 11 15:53:24 CST 2006
Processor: Samsung S3C44B0X revision 0
Architecture: S3C44B0X
On node 0 totalpages: 2048
zone(0): 0 pages.
zone(1): 2048 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/rom0
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
Calibrating delay loop... here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_irq(),the irq is 8
here s3c44b0_clear_pb(),the irq is 8
here s3c44b0_mask_ack_irq(),the irq is 8
here s3c44b0_unmask_irq(),the irq is 8
sim_info called
Program received signal SIGINT, Interrupt.
0x0c0146c4 in __irq_svc ()
如果我不在flash bank上面放置u-boot.bin,那么运行至
Calibrating delay loop... 就停止
证明u-boot.bin在flash 0地址处的中断向量跳转是存在的
是停在了函数void __init calibrate_delay(void)里面,并且一直都有44b0的timer 5中断
skyeye提示是entry_armv.S的 __irq_svc()出问题,但是不知如何下手?
希望那位大虾指点一下 好像是entry_armv.S里entry(_trap_init)的irq 向量表设置有问题,再看看 整理了一下entry_armv.S
在mach-s3c44b0下面的:
void s3c44b0x_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
do_timer(regs);
}
然后再kernel/timer.c里面增加jiffies的打印信息,jiffies是递增的。
现在不知道怎么办了,谁能帮帮我。
是skyeye的问题吗?我没有硬件环境 调试信息如下:
Program received signal SIGINT, Interrupt.
0x0c0246b0 in __irq_svc ()
(SkyEye) where
#00x0c0246b0 in __irq_svc ()
#10x0c0302a0 in do_softirq ()
#20x0c0302a0 in do_softirq ()
#30x0c0252e4 in do_IRQ ()
#40x0c0246d4 in __irq_svc ()
#50x0c0246d4 in __irq_svc ()
#60x0c0246d4 in __irq_svc ()
#70x0c0246d4 in __irq_svc ()
#80x0c0246d4 in __irq_svc ()
#90x0c0246d4 in __irq_svc ()
#10 0x0c0246d4 in __irq_svc ()
#11 0x0c0246d4 in __irq_svc ()
#12 0x0c0246d4 in __irq_svc ()
#13 0x0c0246d4 in __irq_svc ()
为什么第二次进入__irq_svc()之后就不正常了呢?
还有就是第一次和第二次的__irq_svc()地址不一样?
0x0c0246b0 in __irq_svc ()
#10x0c0302a0 in do_softirq ()
#20x0c0302a0 in do_softirq ()
#30x0c0252e4 in do_IRQ ()
#40x0c0246d4 in __irq_svc ()
有谁碰到个这个问题吗??
这里好冷清哦 我以前也碰到了这个问题
感觉是skyeye对44b0的支持不好 不知你的skyeye是什么版本,44b0我在1.0前的好几个版本都跑不动。
4510我在0.94下跑通了ucos,建议你换4510试试 应该是你的中断的问题,没有让jiffies增加,所以会在calibrate_delay停住,SkyEye的44b0会在进入文件系统时,有一点问题,已经解决,但是没有找到根本原因 这段时间忙别的去了
斑竹,jiffies是增加的
页:
[1]