skyeye-v1.2b模拟linux-2.6.14
初学嵌入式系统,参考本论坛的一些文章刚跑起系统,庆祝一下!我使用如下软件:
skyeye-v1.2beta:http://gro.clinux.org/frs/download.php/1329/skyeye-20051024.tar.bz2
kernel 2.6.14.3
mach arm-pxa-lobbock
crosstool crosstool 0.38
gcc 4.0.41
glibc 2.3.5
在redhat RHEL4上运行成功.最好完全安装linux,以避免不必要的麻烦.
首先使用crosstool-0.38生成交叉编译环境,其中主要是修改demo-arm-xscale.sh这个文件里的变量.
剩下的基本上是按照精华区里的<在SkyEye上模拟lubbock开发板的运行>那篇文章做的,有些地方需要改动.主要是下面几个地方:
1. skyeye-1.0修改了linux的源码,把物理地址从a0000000 改为c0000000,所以用的是最新的skyeye-testsuit-2.0 上的pxa的skyeye.conf,就需要修改linux-2.6.14.3下的两个文件
arch/arm/mach-pxa/lubbock.c
include/asm-arm/arch-pxa/memory.h
每个文件中都有一行包含了 a0000000
改为 c0000000。
2. 然后修改 .config中的
CONFIG_CMDLINE="root=/dev/ram rw initrd=0xc0800000,0x01000000 console=ttyS0 mem=64M
这里的参数与testsuit 2.0 for pxa 的内核显示的不完全一样,主要是因为:由于testsuit中的设置的ramdisk.img不能大于8M(默认用的是2M),而我需要的是16M,所以我又修改了skyeye.conf中的配置:
mem_bank: map=M, type=RW, addr=0xc0800000, size=0x01000000, file=./ramdisk.img
mem_bank: map=M, type=RW, addr=0xc1800000, size=0x00800000
mem_bank: map=M, type=RW, addr=0xc2000000, size=0x02800000
在skyeye.conf 的目录下使用skyeye -e ./linux-2.6.14.3/vmlinux 启动即可. hi, that is good job.
perhaps you can contribute your knowledge to our skyeye manual:
http://skyeye.sourceforge.net/wiki/UserManual 我最近在整理这次试验详细的过程,争取先写出一个比较详细的中文文档,主要是面向我这样的初学者,目标是使用基本熟悉linux系统的人都能够按照文档的步骤建立起试验环境。
我最近正在参与一个嵌入式项目的策划,主要是用Intel IOP 80331+LSI的SCSI芯片建立一个能够处理进行SCSI协议转换的平台,操作系统要用嵌入式LINUX,初步希望使用skyeye作为模拟环境熟悉嵌入式linux系统的工具,争取一些开发工作也可以在上面进行,Intel的开发板太贵了,公司计划只买一套(4000多美金呀)。整个项目刚开始,许多细节问题还没考虑,以后希望大家多多帮助。我也会把自己的一些学习体会尽量写出来。 能贴你的编译器编译过程吗?
我编译了几个都不行,总是在2.6.14内核启动时失败,只有按贴子,用xscale-gcc 3.3.3编译2.6.7的内核才可以 我详细写了一下这次试验的过程,希望对你有帮助。
skyeye-v1.2b for RHEL4环境下模拟xscale lubbock运行linux-2.6.14.3
我使用如下软件:
skyeye-v1.2beta:http://gro.clinux.org/frs/download.php/1329/skyeye-20051024.tar.bz2
kernel 2.6.14.3
mach arm-pxa-lobbock
crosstool crosstool 0.38
gcc 4.0.41
glibc 2.3.5
主要是参考精华区的《在SkyEye上模拟lubbock开发板的运行》这篇文章。
1.安装redhat RHEL4 Update2.最好完全安装linux,以避免不必要的麻烦.(曾经在cygwin环境下进行过试验,没有成功。好像是因为cygwin没有完全实现glibc的模拟,所以编译时会出现很多问题,在google上搜索了一下,尝试解决没有完全成功,以后会继续努力争取解决这些问题。)
2.首先使用crosstool-0.38生成交叉编译环境,其中主要是修改demo-arm-xscale.sh这个文件里的变量.需要修改的地方有:
TARBALLS_DIR=$HOME/downloads
RESULT_TOP=/home/xjw/toolchain/xscale
eval `cat arm-xscale.dat gcc-4.0.1-glibc-2.3.5-hdrs-2.6.11.2.dat` sh all.sh --notest
运行:
#sh demo-arm-xscale.sh
这个脚本文件会在/home/xjw/toolchain/xscale目录下自动建立交叉编译环境,其中会使用wget自动下载相关的软件包,安装过程中需要较大的硬盘空间(最好有2G以上),整个编译过程需要比较长的时间(我用AMD 3200+的机器,相对快一些),安装完成后大约108M。
剩下的基本上是按照精华区里的<在SkyEye上模拟lubbock开发板的运行>那篇文章做的,有些地方需要改动.主要是下面几个地方:
3. 使用linux-2.6.14.3,在kernel.org上下载的源文件。
skyeye-1.0修改了linux的源码,把物理地址从a0000000 改为c0000000,所以用的是最新的skyeye-testsuit-2.0 上的pxa的skyeye.conf,这样就需要修改linux-2.6.14.3下的两个文件
arch/arm/mach-pxa/lubbock.c
include/asm-arm/arch-pxa/memory.h
每个文件中都有一行包含了 a0000000
改为 c0000000。
使用以下命令配置linux内核:
#make mrproper
#make ARCH=arm lubbock_defconfig
#make ARCH=arm menuconfig
-------------------------start---------------------------------------
--->选择: boot options
--->修改
(root=/dev/nfs ip=bootp console=ttyS0,115200 mem=64M) Default kernel command string
为:
("root=/dev/ram rw initrd=0xc0800000,0x01000000 console=ttyS0 mem=64M)
--------------------------end----------------------------------------
我最初不小心使用/dev/ram initrd=0xc1000000,0x01000000,这个设置与skyeye.conf中的定义不一样,所以启动内核后,在check initramfs这个步骤时需要很长时间才通过,而且最后系统出错VFS no root fs block(1,0),无法启动。
这里设置的参数initrd=0xc0800000,0x01000000与testsuit 2.0 for pxa 的内核显示的initrd=0xc0800000,0x00800000不一样,主要是因为testsuit中的设置的ramdisk.img不能大于8M(默认用的是2M),而我需要的是16M。同时注意对应这个参数还要修改skyeye.conf中的配置:
mem_bank: map=M, type=RW, addr=0xc0800000, size=0x01000000, file=./ramdisk.img
mem_bank: map=M, type=RW, addr=0xc1800000, size=0x00800000
mem_bank: map=M, type=RW, addr=0xc2000000, size=0x02800000
--------------------------start--------------------------------------
--->选择: Block Devices
--->修改
[ ]RamDisk support
为
[*]RamDisk support
--->修改
(4096) Default Ram disk size(kbytes)
为
(16384) Default Ram disk size(kbytes)
--->修改
[ ] Initial Ram disk (initrd) support
为
[*] Initial Ram disk (initrd) support
--->保存并退出
--------------------------end--------------------------------------
这次试验没有选择支持LCD,想以后再仔细研究有关LCD方面的东西。
配置完成后,使用以下命令编译内核。其中CROSS_COMPILE用于指定交叉编译器的位置。
make \
ARCH=arm \
CROSS_COMPILE=/usr/local/xscale/gcc-4.0.1-glibc-2.3.5/arm-xscale-linux-gnu/bin/arm-xscale-linux-gnu- \
zImage
整个编译过程没有出现错误,最后生成了arch/arm/boot/zIamge文件和vmlinux文件。
4.编译BusyBox
make menuconfig
--->选择: Build Options
--->修改
[ ] Build BusyBox as a static binary (no shared libs)
为
[*] Build BusyBox as a static binary (no shared libs)
--->修改
[ ] Do you want to build BusyBox with a Cross Compiler?
为
[*] Do you want to build BusyBox with a Cross Compiler?
(/usr/local/xscale/gcc-4.0.1-glibc-2.3.5/arm-xscale-linux-gnu/bin/arm-xscale-linux-gnu-) Cross Compiler prefix
(设置交叉编译工具链的位置)
--->根据自己的需要修改其他的选项
make
make install
生成的可执行文件被放在./_install目录下。
5.编译TinyLogin:
编译TinyLogin,除了设置交叉编译工具链之外,还要修改Makefile中的几个参数,让TinyLogin使用自带的passwd和 shadow函数库
vi Makefile
--->修改
DOSTATIC=false
为
DOSTATIC=true(将TinyLogin编译成为静态的二进制文件)
--->修改
USE_SYSTEM_PWD_GRP=true
为
USE_SYSTEM_PWD_GRP=false(使用TinyLogin自带passwd函数库)
--->修改
USE_SYSTEM_SHADOW=true
为
USE_SYSTEM_SHADOW=false(使用TinyLogin自带shadow函数库)
--->修改
CROSS=
为
CROSS =/usr/local/xscale/gcc-4.0.1-glibc-2.3.5/arm-xscale-linux-gnu/bin/arm-xscale-linux-gnu-
(设置交叉编译工具链的位置)
编译安装好的TinyLogin二进制文件放在tinylogin-1.4/_install目录中
6.制作开发板的文件系统:
参考《在SkyEye上模拟lubbock开发板的运行》这篇文章即可。
注意:如果在cygwin下运行在linux下制作好的ramdisk.img,系统会无法正常启动,是ramdisk.img的问题。经检查发现是/dev/ram和/dev/ramdisk的设置的问题,好像应该改成mknod ram b 1 1 ; ln -fs ram ramdisk。
在skyeye.conf 的目录下使用skyeye -e ./linux-2.6.14.3/vmlinux 启动即可. 谢谢,我昨天晚上试过这个方法,内核编译没问题,在skyeye起动出现错误,我再检查一下.
另外,另我是作iscsi协议和无线网络处理,不知道用xscale能处理得过来吗,以前外包时用了arm7,但速度感觉不行,不是网卡还是处理器的原因. 还是不行,出错了,过程:
------------------------- SkyEye -V1.0 ---------------------------
Usage: SkyEye program
Default mode is STANDALONE mode
------------------------------------------------------------------
Options:
-e exec-file the (ELF executable format)kernel file name.
-d in GDB Server mode (can be connected by GDB).
-c config-file the skyeye configure file name.
-h This Help Display
------------------------------------------------------------------
debugmode= 0, filename = (null), server TCP port is 12345
arch: arm
cpu info: xscale, pxa25x, 69052100, fffffff0, 2
mach info: name pxa_lubbock, mach_init addr 0x8071170
SKYEYE: use xscale mmu ops
Loaded RAM ./ramdisk.img
exec file "/ping/arm/kernel/linux-2.6.14.3/vmlinux"'s format is elf32-little.
load section .init: addr = 0xc0008000size = 0x00016000.
load section .text: addr = 0xc001e000size = 0x001a8078.
not load section .pci_fixup: addr = 0xc01c6078size = 0x00000000 .
load section __ksymtab: addr = 0xc01c6078size = 0x000039b8.
load section __ksymtab_gpl: addr = 0xc01c9a30size = 0x00000768.
not load section __kcrctab: addr = 0xc01ca198size = 0x00000000 .
not load section __kcrctab_gpl: addr = 0xc01ca198size = 0x00000000 .
load section __ksymtab_strings: addr = 0xc01ca198size = 0x0000a240.
load section __param: addr = 0xc01d43d8size = 0x0000044c.
load section .data: addr = 0xc01d6000size = 0x00046350.
not load section .bss: addr = 0xc021c360size = 0x00015ff4 .
not load section .comment: addr = 0x00000000size = 0x0000210c .
not load section .debug_abbrev: addr = 0x00000000size = 0x00075950 .
not load section .debug_info: addr = 0x00000000size = 0x00d1aa21 .
not load section .debug_line: addr = 0x00000000size = 0x000d00d7 .
not load section .debug_pubnames: addr = 0x00000000size = 0x00015855 .
not load section .debug_str: addr = 0x00000000size = 0x000599bc .
not load section .debug_aranges: addr = 0x00000000size = 0x000046e8 .
not load section .debug_frame: addr = 0x00000000size = 0x0003dd90 .
not load section .debug_loc: addr = 0x00000000size = 0x0013e347 .
not load section .debug_ranges: addr = 0x00000000size = 0x00017c18 .
start addr is set to 0xc0008000 by exec file.
`Linux version 2.6.14.3 (root@dev) (gcc version 4.0.1) #1 Sat Dec 10 12:44:06 Local time zone must be set--see zic manu
CPU: XScale-PXA250 revision 0 (ARMv5TE)
Machine: Intel DBPXA250 Development Platform (aka Lubbock)
Memory policy: ECC disabled, Data cache writeback
Memory clock: 99.53MHz (*27)
Run Mode clock: 99.53MHz (*1)
Turbo Mode clock: 99.53MHz (*1.0, inactive)
CPU0: D VIVT undefined 5 cache
CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets
Built 1 zonelists
Kernel command line: root=/dev/ram rw initrd=0xc0800000,0x01000000 console=ttyS0 mem=64M
PID hash table entries: 512 (order: 9, 8192 bytes)
Console: colour dummy device 80x30
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 64MB = 64MB total
Memory: 46208KB available (1754K code, 368K data, 88K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd
Freeing initrd memory: 16384K
softlockup thread 0 started up.
NET: Registered protocol family 16
pxa2xx-i2s: failed to claim resource 0
Device 'pxa2xx-i2c.0' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
[<c0023b64>] (dump_stack+0x0/0x14) from [<c0104e14>] (device_release+0x50/0x64)
[<c0104dc4>] (device_release+0x0/0x64) from [<c00dc388>] (kobject_cleanup+0x68/0x8c)
[<c00dc320>] (kobject_cleanup+0x0/0x8c) from [<c00dc3c0>] (kobject_release+0x14/0x18)
r7 = 00000008r6 = 00000038r5 = C00DC3ACr4 = C01DA7A4
[<c00dc3ac>] (kobject_release+0x0/0x18) from [<c00dcbc4>] (kref_put+0x84/0xa0)
[<c00dcb40>] (kref_put+0x0/0xa0) from [<c00dbe14>] (kobject_put+0x20/0x28)
r5 = 00000003r4 = C01DA724
[<c00dbdf4>] (kobject_put+0x0/0x28) from [<c0104fd8>] (put_device+0x1c/0x20)
[<c0104fbc>] (put_device+0x0/0x20) from [<c010517c>] (device_unregister+0x1c/0x20)
[<c0105160>] (device_unregister+0x0/0x20) from [<c0108058>] (platform_device_unregister+0x58/0x5c)
r4 = C01DA71C
[<c0108000>] (platform_device_unregister+0x0/0x5c) from [<c010809c>] (platform_add_devices+0x40/0x68)
r6 = FFFFFFF0r5 = 00000006r4 = C001CA68
[<c010805c>] (platform_add_devices+0x0/0x68) from [<c00108c4>] (pxa_init+0x18/0x20)
r7 = 00000000r6 = 00000000r5 = C001BB30r4 = C02F6000
[<c00108ac>] (pxa_init+0x0/0x20) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Device 'pxa2xx-uart.2' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
[<c0023b64>] (dump_stack+0x0/0x14) from [<c0104e14>] (device_release+0x50/0x64)
[<c0104dc4>] (device_release+0x0/0x64) from [<c00dc388>] (kobject_cleanup+0x68/0x8c)
[<c00dc320>] (kobject_cleanup+0x0/0x8c) from [<c00dc3c0>] (kobject_release+0x14/0x18)
r7 = 00000008r6 = 00000000r5 = C00DC3ACr4 = C01DA8A8
[<c00dc3ac>] (kobject_release+0x0/0x18) from [<c00dcbc4>] (kref_put+0x84/0xa0)
[<c00dcb40>] (kref_put+0x0/0xa0) from [<c00dbe14>] (kobject_put+0x20/0x28)
r5 = 00000001r4 = C01DA828
[<c00dbdf4>] (kobject_put+0x0/0x28) from [<c0104fd8>] (put_device+0x1c/0x20)
[<c0104fbc>] (put_device+0x0/0x20) from [<c010517c>] (device_unregister+0x1c/0x20)
[<c0105160>] (device_unregister+0x0/0x20) from [<c0108058>] (platform_device_unregister+0x58/0x5c)
r4 = C01DA820
[<c0108000>] (platform_device_unregister+0x0/0x5c) from [<c010809c>] (platform_add_devices+0x40/0x68)
r6 = FFFFFFF0r5 = 00000005r4 = C001CA64
[<c010805c>] (platform_add_devices+0x0/0x68) from [<c00108c4>] (pxa_init+0x18/0x20)
r7 = 00000000r6 = 00000000r5 = C001BB30r4 = C02F6000
[<c00108ac>] (pxa_init+0x0/0x20) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Device 'pxa2xx-uart.1' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
[<c0023b64>] (dump_stack+0x0/0x14) from [<c0104e14>] (device_release+0x50/0x64)
[<c0104dc4>] (device_release+0x0/0x64) from [<c00dc388>] (kobject_cleanup+0x68/0x8c)
[<c00dc320>] (kobject_cleanup+0x0/0x8c) from [<c00dc3c0>] (kobject_release+0x14/0x18)
r7 = 00000008r6 = 00000000r5 = C00DC3ACr4 = C01DA9AC
[<c00dc3ac>] (kobject_release+0x0/0x18) from [<c00dcbc4>] (kref_put+0x84/0xa0)
[<c00dcb40>] (kref_put+0x0/0xa0) from [<c00dbe14>] (kobject_put+0x20/0x28)
r5 = 00000001r4 = C01DA92C
[<c00dbdf4>] (kobject_put+0x0/0x28) from [<c0104fd8>] (put_device+0x1c/0x20)
[<c0104fbc>] (put_device+0x0/0x20) from [<c010517c>] (device_unregister+0x1c/0x20)
[<c0105160>] (device_unregister+0x0/0x20) from [<c0108058>] (platform_device_unregister+0x58/0x5c)
r4 = C01DA924
[<c0108000>] (platform_device_unregister+0x0/0x5c) from [<c010809c>] (platform_add_devices+0x40/0x68)
r6 = FFFFFFF0r5 = 00000004r4 = C001CA60
[<c010805c>] (platform_add_devices+0x0/0x68) from [<c00108c4>] (pxa_init+0x18/0x20)
r7 = 00000000r6 = 00000000r5 = C001BB30r4 = C02F6000
[<c00108ac>] (pxa_init+0x0/0x20) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Device 'pxa2xx-uart.0' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
[<c0023b64>] (dump_stack+0x0/0x14) from [<c0104e14>] (device_release+0x50/0x64)
[<c0104dc4>] (device_release+0x0/0x64) from [<c00dc388>] (kobject_cleanup+0x68/0x8c)
[<c00dc320>] (kobject_cleanup+0x0/0x8c) from [<c00dc3c0>] (kobject_release+0x14/0x18)
r7 = 00000008r6 = 00000000r5 = C00DC3ACr4 = C01DAAB0
[<c00dc3ac>] (kobject_release+0x0/0x18) from [<c00dcbc4>] (kref_put+0x84/0xa0)
[<c00dcb40>] (kref_put+0x0/0xa0) from [<c00dbe14>] (kobject_put+0x20/0x28)
r5 = 00000001r4 = C01DAA30
[<c00dbdf4>] (kobject_put+0x0/0x28) from [<c0104fd8>] (put_device+0x1c/0x20)
[<c0104fbc>] (put_device+0x0/0x20) from [<c010517c>] (device_unregister+0x1c/0x20)
[<c0105160>] (device_unregister+0x0/0x20) from [<c0108058>] (platform_device_unregister+0x58/0x5c)
r4 = C01DAA28
[<c0108000>] (platform_device_unregister+0x0/0x5c) from [<c010809c>] (platform_add_devices+0x40/0x68)
r6 = FFFFFFF0r5 = 00000003r4 = C001CA5C
[<c010805c>] (platform_add_devices+0x0/0x68) from [<c00108c4>] (pxa_init+0x18/0x20)
r7 = 00000000r6 = 00000000r5 = C001BB30r4 = C02F6000
[<c00108ac>] (pxa_init+0x0/0x20) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Device 'pxa2xx-fb' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
[<c0023b64>] (dump_stack+0x0/0x14) from [<c0104e14>] (device_release+0x50/0x64)
[<c0104dc4>] (device_release+0x0/0x64) from [<c00dc388>] (kobject_cleanup+0x68/0x8c)
[<c00dc320>] (kobject_cleanup+0x0/0x8c) from [<c00dc3c0>] (kobject_release+0x14/0x18)
r7 = 00000008r6 = 00000038r5 = C00DC3ACr4 = C01DABB4
[<c00dc3ac>] (kobject_release+0x0/0x18) from [<c00dcbc4>] (kref_put+0x84/0xa0)
[<c00dcb40>] (kref_put+0x0/0xa0) from [<c00dbe14>] (kobject_put+0x20/0x28)
r5 = 00000003r4 = C01DAB34
[<c00dbdf4>] (kobject_put+0x0/0x28) from [<c0104fd8>] (put_device+0x1c/0x20)
[<c0104fbc>] (put_device+0x0/0x20) from [<c010517c>] (device_unregister+0x1c/0x20)
[<c0105160>] (device_unregister+0x0/0x20) from [<c0108058>] (platform_device_unregister+0x58/0x5c)
r4 = C01DAB2C
[<c0108000>] (platform_device_unregister+0x0/0x5c) from [<c010809c>] (platform_add_devices+0x40/0x68)
r6 = FFFFFFF0r5 = 00000002r4 = C001CA58
[<c010805c>] (platform_add_devices+0x0/0x68) from [<c00108c4>] (pxa_init+0x18/0x20)
r7 = 00000000r6 = 00000000r5 = C001BB30r4 = C02F6000
[<c00108ac>] (pxa_init+0x0/0x20) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Device 'pxa2xx-udc' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
[<c0023b64>] (dump_stack+0x0/0x14) from [<c0104e14>] (device_release+0x50/0x64)
[<c0104dc4>] (device_release+0x0/0x64) from [<c00dc388>] (kobject_cleanup+0x68/0x8c)
[<c00dc320>] (kobject_cleanup+0x0/0x8c) from [<c00dc3c0>] (kobject_release+0x14/0x18)
r7 = 00000008r6 = 00000038r5 = C00DC3ACr4 = C01DACF8
[<c00dc3ac>] (kobject_release+0x0/0x18) from [<c00dcbc4>] (kref_put+0x84/0xa0)
[<c00dcb40>] (kref_put+0x0/0xa0) from [<c00dbe14>] (kobject_put+0x20/0x28)
r5 = 00000003r4 = C01DAC78
[<c00dbdf4>] (kobject_put+0x0/0x28) from [<c0104fd8>] (put_device+0x1c/0x20)
[<c0104fbc>] (put_device+0x0/0x20) from [<c010517c>] (device_unregister+0x1c/0x20)
[<c0105160>] (device_unregister+0x0/0x20) from [<c0108058>] (platform_device_unregister+0x58/0x5c)
r4 = C01DAC70
[<c0108000>] (platform_device_unregister+0x0/0x5c) from [<c010809c>] (platform_add_devices+0x40/0x68)
r6 = FFFFFFF0r5 = 00000001r4 = C001CA54
[<c010805c>] (platform_add_devices+0x0/0x68) from [<c00108c4>] (pxa_init+0x18/0x20)
r7 = 00000000r6 = 00000000r5 = C001BB30r4 = C02F6000
[<c00108ac>] (pxa_init+0x0/0x20) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Device 'pxa2xx-mci' does not have a release() function, it is broken and must be fixed.
Badness in device_release at drivers/base/core.c:83
[<c0023b64>] (dump_stack+0x0/0x14) from [<c0104e14>] (device_release+0x50/0x64)
[<c0104dc4>] (device_release+0x0/0x64) from [<c00dc388>] (kobject_cleanup+0x68/0x8c)
[<c00dc320>] (kobject_cleanup+0x0/0x8c) from [<c00dc3c0>] (kobject_release+0x14/0x18)
r7 = 00000008r6 = 00000038r5 = C00DC3ACr4 = C01DAE3C
[<c00dc3ac>] (kobject_release+0x0/0x18) from [<c00dcbc4>] (kref_put+0x84/0xa0)
[<c00dcb40>] (kref_put+0x0/0xa0) from [<c00dbe14>] (kobject_put+0x20/0x28)
r5 = 00000003r4 = C01DADBC
[<c00dbdf4>] (kobject_put+0x0/0x28) from [<c0104fd8>] (put_device+0x1c/0x20)
[<c0104fbc>] (put_device+0x0/0x20) from [<c010517c>] (device_unregister+0x1c/0x20)
[<c0105160>] (device_unregister+0x0/0x20) from [<c0108058>] (platform_device_unregister+0x58/0x5c)
r4 = C01DADB4
[<c0108000>] (platform_device_unregister+0x0/0x5c) from [<c010809c>] (platform_add_devices+0x40/0x68)
r6 = FFFFFFF0r5 = 00000000r4 = C001CA50
[<c010805c>] (platform_add_devices+0x0/0x68) from [<c00108c4>] (pxa_init+0x18/0x20)
r7 = 00000000r6 = 00000000r5 = C001BB30r4 = C02F6000
[<c00108ac>] (pxa_init+0x0/0x20) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Badness in kref_get at lib/kref.c:32
[<c0023b64>] (dump_stack+0x0/0x14) from [<c00dcb14>] (kref_get+0x34/0x60)
[<c00dcae0>] (kref_get+0x0/0x60) from [<c00dbdec>] (kobject_get+0x1c/0x24)
r4 = C01DA304
[<c00dbdd0>] (kobject_get+0x0/0x24) from [<c0105d84>] (get_bus+0x28/0x3c)
r4 = C01EC118
[<c0105d5c>] (get_bus+0x0/0x3c) from [<c01062b0>] (bus_add_driver+0x18/0x128)
[<c0106298>] (bus_add_driver+0x0/0x128) from [<c0106d34>] (driver_register+0x3c/0x48)
r8 = 00000000r7 = 00000000r6 = 00000000r5 = C001BB64
r4 = C01EC118
[<c0106cf8>] (driver_register+0x0/0x48) from [<c0028b24>] (sa1111_driver_register+0x28/0x38)
r4 = C02F6000
[<c0028afc>] (sa1111_driver_register+0x0/0x38) from [<c0017a80>] (sa1111_drv_pcmcia_init+0x14/0x1c)
[<c0017a6c>] (sa1111_drv_pcmcia_init+0x0/0x1c) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Badness in kref_get at lib/kref.c:32
[<c0023b64>] (dump_stack+0x0/0x14) from [<c00dcb14>] (kref_get+0x34/0x60)
[<c00dcae0>] (kref_get+0x0/0x60) from [<c00dbdec>] (kobject_get+0x1c/0x24)
r4 = C01DA358
[<c00dbdd0>] (kobject_get+0x0/0x24) from [<c00dc20c>] (kobject_init+0x38/0x50)
r4 = C01EC12C
[<c00dc1d4>] (kobject_init+0x0/0x50) from [<c00dc2e0>] (kobject_register+0x1c/0x5c)
r4 = C01EC12C
[<c00dc2c4>] (kobject_register+0x0/0x5c) from [<c01062e8>] (bus_add_driver+0x50/0x128)
r5 = C01EC118r4 = 00000000
[<c0106298>] (bus_add_driver+0x0/0x128) from [<c0106d34>] (driver_register+0x3c/0x48)
r8 = 00000000r7 = 00000000r6 = 00000000r5 = C001BB64
r4 = C01EC118
[<c0106cf8>] (driver_register+0x0/0x48) from [<c0028b24>] (sa1111_driver_register+0x28/0x38)
r4 = C02F6000
[<c0028afc>] (sa1111_driver_register+0x0/0x38) from [<c0017a80>] (sa1111_drv_pcmcia_init+0x14/0x1c)
[<c0017a6c>] (sa1111_drv_pcmcia_init+0x0/0x1c) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c0004000
*pgd=00000000
Internal error: Oops: 807 [#1]
Modules linked in:
CPU: 0
PC is at kobject_add+0x70/0x130
LR is at kobject_get+0x1c/0x24
pc : [<c00dc030>] lr : [<c00dbdec>] Not tainted
sp : c02f7f48ip : c02f7f34fp : c02f7f68
r10: 00000000r9 : 00000000r8 : c01da358
r7 : c01ec12cr6 : c01da2f0r5 : ffffffear4 : c01ec12c
r3 : c01da350r2 : c01ec148r1 : 00000000r0 : c01da358
Flags: nzCvIRQs onFIQs onMode SVC_32Segment kernel
Control: 3907Table: C0004000DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc02f6194)
Stack: (0xc02f7f48 to 0xc02f8000)
7f40: c01ec12c ffffffea c01da2f0 c01ec12c 00000000 c02f7f80
7f60: c02f7f6c c00dc2e8 c00dbfcc 00000000 c01ec118 c02f7fa4 c02f7f84 c01062e8
7f80: c00dc2d0 c01ec118 c001bb64 00000000 00000000 00000000 c02f7fb8 c02f7fa8
7fa0: c0106d34 c01062a4 c02f6000 c02f7fc8 c02f7fbc c0028b24 c0106d04 c02f7fd8
7fc0: c02f7fcc c0017a80 c0028b08 c02f7ff4 c02f7fdc c001e0e0 c0017a78 00000000
7fe0: 00000000 00000000 00000000 c02f7ff8 c003727c c001e064 00000000 00000000
Backtrace:
[<c00dbfc0>] (kobject_add+0x0/0x130) from [<c00dc2e8>] (kobject_register+0x24/0x5c)
r8 = 00000000r7 = C01EC12Cr6 = C01DA2F0r5 = FFFFFFEA
r4 = C01EC12C
[<c00dc2c4>] (kobject_register+0x0/0x5c) from [<c01062e8>] (bus_add_driver+0x50/0x128)
r5 = C01EC118r4 = 00000000
[<c0106298>] (bus_add_driver+0x0/0x128) from [<c0106d34>] (driver_register+0x3c/0x48)
r8 = 00000000r7 = 00000000r6 = 00000000r5 = C001BB64
r4 = C01EC118
[<c0106cf8>] (driver_register+0x0/0x48) from [<c0028b24>] (sa1111_driver_register+0x28/0x38)
r4 = C02F6000
[<c0028afc>] (sa1111_driver_register+0x0/0x38) from [<c0017a80>] (sa1111_drv_pcmcia_init+0x14/0x1c)
[<c0017a6c>] (sa1111_drv_pcmcia_init+0x0/0x1c) from [<c001e0e0>] (init+0x88/0x218)
[<c001e058>] (init+0x0/0x218) from [<c003727c>] (do_exit+0x0/0xaa0)
r6 = 00000000r5 = 00000000r4 = 00000000
Code: e2833008 e5931004 e584301c e5832004 (e5812000)
<0>Kernel panic - not syncing: Attempted to kill init! 我用的系统是gentoo 2005.1
gcc 3.4.4
glibc 2.3.5
nptl
CFLAGS="-O3 -march=pentium4-mmmx -msse -msse2 -mfpmath=sse -pipe -fomit-frame-pointer " 我也遇到过这个问题,是默认的lubbock_defconfig设置中带PCCARD(PCMCIA)支持,我这个试验中暂时不需要,所以在配置内核是去掉了“Bus support->PCCARD support”。
最初遇到这个问题是,在google上搜索了一下,有一个地方好像说是在2.6.14版本中i2c程序源码中有一处好像有错误,我照着改了一下,又出现了其它错误,后来索性去掉了PCMCIA支持。
xscale的处理能力应该没问题,最高800MHz应该够了吧,我们使用的很多台湾产的RAID控制器都使用更低级别的处理器来提供SATA/SCSI/FC的RAID功能,性能肯定没有问题;也有使用xscale做iSCSI的,不过我们还没做过产品测试,性能不好说,但是应该也不会差到哪里去。 谢谢了,我只去掉pccard,在起动时i2c会报错,但系统可以起来了,先将就用着.以后还请多多指教,我是被逼上架的,很多东西不懂. 不客气。我以前常用Redhat LINUX,对于嵌入式linux也属于初学。
最近几天在研究LCD相关的资料,我们的项目只需要单色液晶,能显示大约4X16汉字即可,输入装置拟采用四个按键(取消,确定,向前,向后),不知有谁做过相关项目,有关软硬件给点建议吧。
页:
[1]