有关at91rm92的配置问题请教
哪位大侠测试过,请伸援手,万分感谢1,能共享一份skyeye的配置文件么,for at91rm9200的
2,我目前用的是skyeye0.8.0,但是好像启动不了编译的内核,我用的是2.6.10,是不是0.8.0还不能对at91rm92支持阿
3,0.8.5.1的那个链接也下载不了啊 btw, 我用的是linux2.6.10内核,skyeye0.8.5.1+insight,打了at91rm9200的补丁。我采用的配置和现象如下:
情形一,mem_bank: map=M, type=RW, addr=0x20000000, size=0x00200000(参考at91rm9200的手册),加载编译好的内核后,虚拟内存地址0xc0008000内容为0xffffffff,不是有效指令
情形二,mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00200000,加载后,虚拟内存地址0xc0008000为有效指令,但是打开mmu后(__turn_mmu_on),start_kernel映射的位置指令无效,内容为0xffffffff。
问题在哪里呢?
是内核的补丁有问题,skyeye的at91rm92模拟存在问题,还是我的配置文件写得不对呢?
给点提示吧,万分感谢!!! AT91RM9200是我实现的,当时基于2.4.26内核+armlinux补丁,而且还作了一些小修改。能否把你的2.6的补丁提供给我,我可以帮你试试这个补丁?可以和我联系:wlm AT student dot dlut dot edu dot cn. 目前正在测试2.6.10的内核。 2.6.10的内核我已经跑通了,需要修改两个文件。
1. include/asm/arch/at91rm9200dk.h,把相应的宏定义,修改成如下
#define AT91_SDRAM_BASE 0xc0000000 // NCS1: SDRAM physical base address
#define AT91C_UART_MAP { 0, 4, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
2. arch/arm/mach-at91rm9200/time.c,照着如下注释两行:
//do {
timer_tick(regs);
AT91_SYS->ST_RTAR = (AT91_SYS->ST_RTAR + LATCH) & AT91C_ST_ALMV;
//} while (((read_CRTR() - AT91_SYS->ST_RTAR) & AT91C_ST_ALMV) >= LATCH);
对应的skyeye.conf为:
cpu:arm920t
mach: at91rm92
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=R, addr=0x00100000, size=0x00010000
mem_bank: map=M, type=RW, addr=0xc0000000, size=0x00200000
mem_bank: map=M, type=RW, addr=0xc0200000, size=0x00500000, file=./initrd.img
mem_bank: map=M, type=RW, addr=0xc0700000, size=0x00900000
mem_bank: map=I, type=RW, addr=0xfffa0000, size=0x00060000
对应的内核配置文件,这个配置文件是一个基本配置,保证可以跑的。
CONFIG_ARM=y
CONFIG_MMU=y
CONFIG_UID16=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_GENERIC_IOMAP=y
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCALVERSION=""
CONFIG_SYSVIPC=y
CONFIG_SYSCTL=y
CONFIG_LOG_BUF_SHIFT=14
CONFIG_HOTPLUG=y
CONFIG_KOBJECT_UEVENT=y
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
CONFIG_ARCH_AT91RM9200=y
CONFIG_ARCH_AT91RM9200DK=y
CONFIG_CPU_32=y
CONFIG_CPU_ARM920T=y
CONFIG_CPU_32v4=y
CONFIG_CPU_ABRT_EV4T=y
CONFIG_CPU_CACHE_V4WT=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
CONFIG_CMDLINE="root=/dev/ram0 initrd=0xc0200000,0x00500000 rw console=ttyS0"
CONFIG_ALIGNMENT_TRAP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_TCPDIAG=y
CONFIG_NETDEVICES=y
CONFIG_INPUT=y
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
CONFIG_SOUND_GAMEPORT=y
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_SERIAL_AT91=y
CONFIG_SERIAL_AT91_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_NOWAYOUT=y
CONFIG_AT91_WATCHDOG=y
CONFIG_EXT2_FS=y
CONFIG_DNOTIFY=y
CONFIG_PROC_FS=y
CONFIG_SYSFS=y
CONFIG_DEVFS_FS=y
CONFIG_DEVFS_MOUNT=y
CONFIG_TMPFS=y
CONFIG_RAMFS=y
CONFIG_MSDOS_PARTITION=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_INFO=y
CONFIG_FRAME_POINTER=y
CONFIG_DEBUG_USER=y
CONFIG_DEBUG_ERRORS=y
CONFIG_DEBUG_LL=y
CONFIG_CRC32=y 非常感谢!我使用的是http://maxim.org.za/AT91RM9200/2.6/上的Patch
另外请问下面这个为什么要注释呢?
arch/arm/mach-at91rm9200/time.c,照着如下注释两行:
//do {
timer_tick(regs);
AT91_SYS->ST_RTAR = (AT91_SYS->ST_RTAR + LATCH) & AT91C_ST_ALMV;
//} while (((read_CRTR() - AT91_SYS->ST_RTAR) & AT91C_ST_ALMV) >= LATCH);
如方便的话,能把你用的AT91rm9200DK的手册发给我一份么?我主要想看看他的内存和外设映象。 hi,walimis
按照你的指导修改内核(cmdline中ram0改为ram),编译运行后,现象如下:
1, 屏幕没有输出
2, 程序hang在unpack_to_rootfs
可能是什么问题呢?难道是我的initrd(3M)有问题?下面是我dev下的内容,请多指教!多谢!
crw-r--r-- 1 root root 5, 1 Mar 172003 console
crw-r--r-- 1 root root 1, 2 Mar 142003 kmem
crw-r--r-- 1 root root 1, 1 Mar 142003 mem
crw-r--r-- 1 root root 1, 3 Mar 142003 null
brw-r--r-- 1 root root 1, 0 Mar 142003 ram
crw-r--r-- 1 root root 1, 8 Mar 172003 random
crw-r--r-- 1 root root 5, 0 Mar 172003 tty
crw-r--r-- 1 root root 4, 0 Mar 142003 tty0
crw-r--r-- 1 root root 4, 1 Mar 142003 tty1
crw-r--r-- 1 root root 204,16 Mar 142003 ttyAM0
crw-r--r-- 1 root root 204,17 Mar 172003 ttyAM1
crw-r--r-- 1 root root 4,64 Jan 10 22:08 ttyS0
crw-r--r-- 1 root root 4,65 Jan 10 22:09 ttyS1
crw-r--r-- 1 root root 1, 9 Mar 172003 urandom
crw-r--r-- 1 root root 1, 5 Mar 142003 zero 下面这句你修改了么:
#define AT91C_UART_MAP { 0, 4, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
另外,你尝试把devfs打开。initrd 3M多,没有什么问题。 我都修改了,现在屏幕有输出了
但是还是hang在了unpack_to_rootfs,跟踪进去发现当运行到了create_workqueue_thread的时候,就跳到了地址0xffff000c上去,然后就不动了,此时屏幕输出是:....initramfs, it is. 为什么呢?
另外在check是不是initramfs的时候,等了好久才说it is. 好像不是很正常的说。 你的initrd.img不正常,你还是用一个好的吧。
页:
[1]