用u-boot引导uclinux

原创 2007年09月25日 18:07:00
        前段时间准备让u-boot支持NAND Flash,最终无果而终,于是决定先放一放,先让uclinux跑起来,给自己点信心再说。参考了网上一些文章后,终于看到了可爱的提示符!
当前配置:
CPU为BF561,软件为uClinux-dist-2007R1.1-RC3,u-boot已写到Nor Flash且可正常启动。
1、解压uClinux-dist-2007R1.1-RC3,用make menuconfig的默认配置生成一个可用的image。最后在images目录下生成的uImage.ext2有3兆。这是一个带文件头的Image,也相当于u-boot的README中所说的uImage。
2、由于我的板子上不带网络功能,只能从串口用loadb下载,但是下载一次要20多分钟(57600),完全是要考验人的耐心。还好有仿真器,就直接在vdsp中将这个image直接写到0x0300 0000这个位置(Memory -> Fill)。
3、关掉vdsp,reset后启动u-boot,用iminfo 0x0300 0000可以看到如下信息
gtw> iminfo 3000000
 
## Checking Image at 03000000 ...
   Image Name:   uClinux Kernel and ext2
   Image Type:   Blackfin Linux Kernel Image (gzip compressed)
   Data Size:    3000041 Bytes = 2.9 MB
   Load Address: 00001000
   Entry Point: 00001000
   Verifying Checksum ... OK
4、用md 0x0300 0000可看到如下信息:
gtw> md 3000000
03000000: 56190527 e820c44f fa81f846 e9c62d00    '..VO. .F....-..
03000010: 00100000 00100000 a9fdeb65 01021005    ........e.......
03000020: 696c4375 2078756e 6e72654b 61206c65    uClinux Kernel a
03000030: 6520646e 00327478 00000000 00000000    nd ext2.........
这就是此Image的文件头,这64个字节也就是对应着如下数据结构:
 
#define IH_MAGIC   0x27051956    /* Image Magic Number       */
#define IH_NMLEN       32   /* Image Name Length        */
 
/*
 * all data in network byte order (aka natural aka bigendian)
 */
 
typedef struct image_header {
     uint32_t ih_magic; /* Image Header Magic Number     */
     uint32_t ih_hcrc; /* Image Header CRC Checksum     */
     uint32_t ih_time; /* Image Creation Timestamp */
     uint32_t ih_size; /* Image Data Size     */
     uint32_t ih_load; /* Data Load Address         */
     uint32_t ih_ep;        /* Entry Point Address      */
     uint32_t ih_dcrc; /* Image Data CRC Checksum */
     uint8_t       ih_os;        /* Operating System         */
     uint8_t       ih_arch; /* CPU architecture         */
     uint8_t       ih_type; /* Image Type          */
     uint8_t       ih_comp; /* Compression Type         */
     uint8_t       ih_name[IH_NMLEN]; /* Image Name      */
} image_header_t;
用iminfo显示也就是这个结构体的内容。
5、用bootm 3000000引导时出现如下提示:
gtw> bootm 3000000
## Booting image at 03000000 ...
   Image Name:   uClinux Kernel and ext2
   Image Type:   Blackfin Linux Kernel Image (gzip compressed)
   Data Size:    3000041 Bytes = 2.9 MB
   Load Address: 00001000
   Entry Point: 00001000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
Starting Kernel at = 1000
Linux version 2.6.19.3-ADI-2007R1.1-svn (wmz@localhost.localdomain) (gcc 鐗堟湰
 4.1.1 (ADI 07R1)) #2 Tue Sep 25 11:24:43 CST 2007
Warning: limiting memory to 53MB due to hardware anomaly 05000263
Blackfin support (C) 2004-2007 Analog Devices, Inc.
Compiled for ADSP-BF561 Rev 0.3
Blackfin Linux support by http://blackfin.uclinux.org/
Processor Speed: 600 MHz core clock and 60 Mhz System Clock
Board Memory: 64MB
Kernel Managed Memory: 64MB
Memory map:
 text      = 0x00001000-0x000b0db0
 init      = 0x000b1000-0x000bd23c
 data      = 0x000bf1b8-0x000e5588
 stack     = 0x000c0000-0x000c2000
 bss       = 0x000e5590-0x000f14d8
 available = 0x000f14d8-0x03500000
 rootfs    = 0x03500000-0x03f00000
 DMA Zone = 0x03f00000-0x04000000
Instruction Cache Enabled
Data Cache Enabled (write-through)
Hardware Trace Enabled
Built 1 zonelists. Total pages: 13462
Kernel command line: root=/dev/mtdblock0 rw console=ttyBF0,57600 init=/sbin/init
 
Configuring Blackfin Priority Driven Interrupts
PID hash table entries: 256 (order: 8, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Physical pages: 3500
Memory available: 52668k/64771k RAM, (48k init code, 703k kernel code, 47k data,
 1024k dma)
Blackfin Scratchpad data SRAM: 4 KB
Blackfin DATA_A SRAM: 16 KB
Blackfin DATA_B SRAM: 16 KB
Blackfin Instruction SRAM: 16 KB
Security Framework v1.0.0 initialized
Capability LSM initialized
Mount-cache hash table entries: 512
Blackfin GPIO Controller
Blackfin DMA Controller
ezkit_init(): registering device resources
BF561 Core B driver v0.1 initialized.
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler cfq registered
Serial: Blackfin serial driver
bfin-uart.1: ttyBF0 at MMIO 0xffc00400 (irq = 35) is a BFIN-UART
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
uclinux[mtd]: RAM probe address=0x3500000 size=0xa00000
Creating 1 MTD partitions on "RAM":
0x00000000-0x00a00000 : "ROMfs"
uclinux[mtd]: set ROMfs:EXT2 to be root filesystem
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 48k freed (0xb1000 - 0xbc000)
dma_alloc_init: dma_page @ 0x000b8000 - 256 pages at 0x03f00000
No usable address families found.
socket: Function not implemented
Unable to create socket
Unable to create socket
Unable to create socket
 
Welcome to:
       ____ _ _
      / __| ||_|             _ _
 _   _| | | | _ ____ _   _ / // /
| | | | | | || | _ /| | | | / /
| |_| | |__| || | | | | |_| | / /
| ___/____|_||_|_| |_|/____|/_//_/
|_|
 
For further information see:
http://www.uclinux.org/
http://blackfin.uclinux.org/
 
 
 
BusyBox v1.4.1 (2007-09-25 11:26:44 CST) Built-in shell (msh)
Enter 'help' for a list of built-in commands.
 
root:~> Unable to create socket
Unable to create socket
6、关闭与网络有关的选项后一切OK!
7、最后一步:将uclinux映象写入NorFlash,设置u-boot的环境变量
setenv ramboot bootm 20030000
复位后自动引导进入uclinux的提示符。
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

从bootm看u-boot引导内核的过程

  • 2011年12月21日 14:14
  • 59KB
  • 下载

U-BOOT下使用bootm引导内核方法

  • 2008年10月29日 10:43
  • 46KB
  • 下载

U-boot引导流程分析一

U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与Linux内核很相...

u-boot-1.1.3引导程序

  • 2009年01月12日 17:45
  • 10.03MB
  • 下载

u-boot-1.1.3引导程序

  • 2009年01月08日 21:35
  • 908B
  • 下载

u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统

uboot最主要的功能就是能够引导内核启动。本文就介绍如何实现该功能,并组成一个最简单的系统,这不仅要移植uboot,还要移植linux内核及创建一个根文件系统。   首先我们对nandflash...
  • zhaocj
  • zhaocj
  • 2012年09月05日 16:57
  • 5550

U-Boot直接引导zImage内核

U-Boot直接引导zImage内核         U-boot1.1.6只能只能就能过mkimage工具加工后的内核镜像文件。mkimage工具给zImage增加了一个64B大小的头。U-Boot...
  • ce123
  • ce123
  • 2012年03月11日 23:13
  • 8893

u-boot移植随笔:解决引导内核遇到undefined instruction的错误

前天解决了内核不能引导的问题了。在网上搜索了一些资料,才有点明白这个是怎么回事。 ...
  • subfate
  • subfate
  • 2011年03月07日 13:13
  • 5179

u-boot-2009.08在mini2440上的移植 增加引导内核功能

移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-ea...

real210移植记录-u-boot2013.10引导linux3.10.30进入控制台

这篇文章下周再写。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用u-boot引导uclinux
举报原因:
原因补充:

(最多只允许输入30个字)