第一次生成uImage出现的问题解决

内核移植(1)首次生成uImage映象文件

1、先修改顶层Makefile,如下:

ARCH                     ?= $ (SUBARCH)

CROSS_COMPILE      ?=

改为:

ARCH                     ?= arm

CROSS_COMPILE      ?=  arm-linux-

2、执行make s3c2410_defconfig

3、make uImage,首次编译完内核用了4分钟,尾部出现如下信息:

LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
"mkimage" command not found - U-Boot images will not be built
  Image arch/arm/boot/uImage is ready

4、cd  arch/arm/boot/

在这个目录下面没有发现uImage的身影,于是把zImage烤贝到 /var/lib/tftpboot下面。

然后通过在u-boot下面执行命令来烧写到板里。

5、在u-boot下面操作如下:

OpenJTAG> tftp 0x32000000 zImage
dm9000 i/o: 0x28000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
TFTP from server 172.22.136.38; our IP address is 172.22.136.55
Filename ‘zImage‘.
Load address: 0x32000000
Loading: checksum bad
T #################################################################
     #################################################################
     #################################################################
     #################################################################
     ####################################
done
Bytes transferred = 1511056 (170e90 hex)
OpenJTAG> bootm 0x32000000
## Booting image at 32000000 ...
6、从上面可以看出没有出现内核信息,于是从新回到pc机上编译内核完成的地方来查看问题出在哪?

看到这一行:"mkimage" command not found - U-Boot images will not be built

可以看出缺少mkimage这个命令。

7、上网查了点资料,在编译完成的u-boot-1.1.6的tool/下面找到mkimage这个文件,

把它烤贝到交叉编译的路径下面/work/tools/gcc-3.4.5-glibc-2.3.6/bin

8、重新再进入顶层,再进行内核编译,这次成功产生如下信息:

OBJCOPY arch/arm/boot/Image
  Kernel: arch/arm/boot/Image is ready
  AS      arch/arm/boot/compressed/head.o
  GZIP    arch/arm/boot/compressed/piggy.gz
  AS      arch/arm/boot/compressed/piggy.o
  CC      arch/arm/boot/compressed/misc.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
  UIMAGE  arch/arm/boot/uImage
Image Name:   Linux-2.6.22.6
Created:      Sun Dec  6 22:33:55 2009
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    1511064 Bytes = 1475.65 kB = 1.44 MB
Load Address: 0x30008000
Entry Point:  0x30008000
  Image arch/arm/boot/uImage is ready

9、在arch/arm/boot

我们这一次可以看到uImage这个文件,不过此时还不是可执行文件,现在更改权限

chmod 777 uImage

顔色变为绿色。。。。

10、在u-boot下继续操作,如下:

Enter your selection: q
OpenJTAG> tftp 0x32000000 uImage
dm9000 i/o: 0x28000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
TFTP from server 172.22.136.38; our IP address is 172.22.136.55
Filename ‘uImage‘.
Load address: 0x32000000
Loading: checksum bad
checksum bad
T #################################################################
     #################################################################
     #################################################################
     #################################################################
     ####################################
done
Bytes transferred = 1511128 (170ed8 hex)
OpenJTAG> bootm 0x32000000
## Booting image at 32000000 ...
   Image Name:   Linux-2.6.22.6
   Created:      2009-12-06  14:33:55 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1511064 Bytes =  1.4 MB
   Load Address: 30008000
   Entry Point:  30008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux................................................................................................... done, booting the kernel.
Linux version 2.6.22.6 ([email protected]) (gcc version 3.4.5) #1 Sun Dec 6 22:33:51 CST 2009
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
Machine: SMDK2410
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410A (id 0x32410002)
S3C2410: core 200.000 MHz, memory 100.000 MHz, peripheral 50.000 MHz
S3C24XX Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists.  Total pages: 16256
Kernel command line: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
irq: clearing subpending status 00000002
PID hash table entries: 256 (order: 8, 1024 bytes)
timer tcon=00500000, tcnt a2c1, tcfg 00000200,00000000, usec 00001eb8
Console: colour dummy device 80x30
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 61696KB available (2788K code, 313K data, 132K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C2410 Power Management, (c) 2004 Simtec Electronics
S3C2410: Initialising architecture
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4800000, irq 33
DMA channel 1 at c4800040, irq 34
DMA channel 2 at c4800080, irq 35
DMA channel 3 at c48000c0, irq 36
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NetWinder Floating Point Emulator V0.97 (double precision)
JFFS2 version 2.2. (NAND) ? 2001-2006 Red Hat, Inc.
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
s3c2410-lcd s3c2410-lcd: no platform data for lcd, cannot attach
s3c2410-lcd: probe of s3c2410-lcd failed with error -22
lp: driver loaded but no devices found
ppdev: user-space parallel port driver
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
s3c2410-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: module loaded
dm9000 Ethernet Driver
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
BAST NOR-Flash Driver, (c) 2004 Simtec Electronics
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2410-nand s3c2410-nand: Tacls=3, 30ns Twrph0=7 70ns, Twrph1=3 30ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 8 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00004000 : "Boot Agent"
0x00000000-0x00200000 : "S3C2410 flash partition 1"
0x00400000-0x00800000 : "S3C2410 flash partition 2"
0x00800000-0x00a00000 : "S3C2410 flash partition 3"
0x00a00000-0x00e00000 : "S3C2410 flash partition 4"
0x00e00000-0x01800000 : "S3C2410 flash partition 5"
0x01800000-0x03000000 : "S3C2410 flash partition 6"
0x03000000-0x04000000 : "S3C2410 flash partition 7"
usbmon: debugfs is not available
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
mice: PS/2 mouse device common for all mice
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c2410-i2c s3c2410-i2c: slave address 0x10
s3c2410-i2c s3c2410-i2c: bus frequency set to 390 KHz
s3c2410-i2c s3c2410-i2c: i2c-0: S3C I2C adapter
TCP cubic registered
NET: Registered protocol family 1
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
List of all partitions:
1f00         16 mtdblock0 (driver?)
1f01       2048 mtdblock1 (driver?)
1f02       4096 mtdblock2 (driver?)
1f03       2048 mtdblock3 (driver?)
1f04       4096 mtdblock4 (driver?)
1f05      10240 mtdblock5 (driver?)
1f06      24576 mtdblock6 (driver?)
1f07      16384 mtdblock7 (driver?)
No filesystem could mount root, tried:  ext3 ext2 cramfs msdos vfat romfs
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)
从上面可以看到内核的启动信息。

11、Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,3)

这一行信息,是因为我们还没有修改MTD分区,没有增加对yaffs文件系统的支持。

时间: 2024-10-13 06:46:33

第一次生成uImage出现的问题解决的相关文章

由zImage生成uImage

mkimage -A arm -O linux -T kernel -C none -a 30007fc0 -e 30007fc0 -n uImage   -d /work/jz2440/kernel/linux-2.6.22.6/arch/arm/boot/zImage uImage 我的内核目录:/work/jz2440/kernel/linux-2.6.22.6 我的tftpboot:/work/tftpbootuboot——bootm地址:30007fc0 名字:uImage 需要先安装

编译内核无法生成uImage的原因分析

uBoot启动内核,需要符合要求的内核镜像文件uImage(包含head+body组成): 内核镜像需要mkimage来制作: 如果shell在环境变量目录中找不到mkimage工具,就无法生成uImage: 这里的mkimage必须是编译uboot源码后,在/uboot/tools下面生成的工具mkimage. 所以解决办法就是: 第一步:编译uboot,这时将会在uboot/tools下生成mkimage工具: 第二步:声明环境变量,在/etc/bash.bashrc中添加如下语句: exp

Maven骨架生成项目速度慢问题解决办法

在创建maven project时(使用了archetype),速度慢的令人不敢相信,从Idea的控制台可以看到信息停留在: [INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) < generate-sources @ standalone-pom <<< [INFO] [INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @

zImage与uImage的区别

zImage: vmlinux是内核文件,zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到. uImage: uImage则是使用工具mkimage对普通的压缩内核映像文件(zImage)加工而得.它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本.加载位置.生成时间.大小等信息.其0x40之后与zImage没区别. 有了uImage头部的描述,u-boot就知道对应Image的信息,如果没有头部则需

【原创】岁月如歌 一款网易歌单生成pdf的软件

介绍 这是一款可以将网易云音乐的歌单中所有歌词输出为pdf的软件. 项目持续维护地址 http://brightguo.com/song-list-to-pdf/ 目前没有搜到相关网易歌单导出为pdf的软件,因此我特地将此软件开发出来免费给大家使用,不清楚会有多少人有这个需求,能帮一个是一个吧~ 本站下载链接(速度较慢)      百度云下载链接 支持操作系统 >= Win7 如有问题欢迎写信给我 [email protected] 使用 软件只有一个界面,将歌单地址复制粘贴进去,点击生成后即可

zookeeper+redies 系统序列号生成

系统序列号生成服务是写的一个jar包,不依赖其他服务和数据,以下提供部分代码作为一个思路,作为大量数据订单生成时,不再使用数据库表的自增设置,由个系统模块自行生成. 一.使用规则 组成结构 + 生成时间 yyMMddHHmmss + 3位服务节点(001 到 999) + N位滚动序列(000001 到 999999 长度可自定义) 重复性解决方案 + 每秒钟单节点产生序列大于 999999 将会造成序列重复 + 每秒钟单节点产生序列小于 999999 则不会重复. 分布式解决方案 + 应用启动

zImage转换为uImage

写个随笔,备忘! 拿到一个内核后,首先将其make为zImage,步骤: 1.将与要移植的系统的配置文件拷贝给.config cp xxx_xxx .config 2.修改Makefile,指定平台构架和交叉编译环境 vim Makefile  ARCH  ?=XXX CROSS_COMPILE ?=xxxx 3.启动配置界面,定制内核 make nemuconfig 4.make zImage, 内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像

mini2440 uboot烧写uImage

mini2440下烧写u-boot后,就可以用u-boot烧写linux内核了. 安装mkimage工具: apt-get install u-boot-tools 解压缩官方mini2440 linux包: tar xf linux-2.6.32.2-mini2440-20130614.tar.gz 然后进入文件夹,并进行编译(配置文件应该选择和自己的lcd对应的配置来进行拷贝,因为我的开发板没有屏幕,所以就随便选取了一个配置): cd linux-2.6.32.2cp config_mini

easyui动态生成列

需求:一个id对应多个key value 将id作为标识列 key值作为表头 value作为值显示.数据表可分为两张表 param数据表: 下表一个id对应上表多个key及value 如下图 id_param数据表: 然后将这些对应关系在前端显示成这样(页数及总记录没有显示,但可实现分页功能) 方法思路: 1.获取param的key value 作为 columns当做表头信息 key作为表头的field,value作为表头的title: 2.获取id_param的所有id(不重复的),构成id