我爱南开站 -- 同主题阅读 [讨论区: LinuxDev]
[查看全文] [回复本文] [回复作者] [作者: catchupwith ] [讨论区:LinuxDev]
发信人: catchupwith (catchupwith), 信区: LinuxDev
标 题: 基于u-boot-1.1.4的xsbase的bootloader的配置(原创?发信站: 我爱南开站 (2006年05月02日17:03:09 星期二)
最近看了看u-boot的源代码,发现u-boot虽然能够支持好些cpu和板子,但是代码不是很
方便阅读,而且编译生成的u-boot.bin文件120k左右,比较大,但是研究它对于熟悉
bootloader还是很有帮助的。下面的文章是这几天的总结,如有不足之处希望bbsers们
能够指出来,共同交流。
u-boot-1.1.4中的/cpu/pxa/config.mk在编译的时候不支持-march=armv5 -
mtune=xscale -mabi=apcs-gnu
是交叉变异环境的版本不够新,使用arm-linux-gcc3.3.2可以解决这个问题,但是-
mabi=apcs-gnu仍然不支持,kill it!
1.cpu 中包含pxa
Config.mk的配置如下:






其它文件不作任何改动。
2.board中新建xsbase目录
由于xsbase板子与lubbock板相似,拷贝lubbock目录中的文件过来
Config.mk文件:TEXT_BASE = 0xa3f80000
Lowlevel_init.s最后加上:














表示把内核从flash拷贝入sdram中。
Makefile:
OBJS := xsbase.o flash.o
Lubbock.c改名为xsbase.c,其中/* gd->bd->bi_arch_number = MACH_TYPE_LUBBOCK;*/
gd->bd->bi_arch_number = 200;//因为在内核文件Kernel/2.4.18-rmk7-pxa1-
XSBase255B/arch/arm/tools/mach-types中
xhyper255 ARCH_XHYPER255 XHYPER255 200
3.common/cmd_boot.c文件更改为(参照了emdoor板子的bootloader)










































4.drivers/cs8900.c更改
a.加入函数说明







b.只要有往寄存器CS8900_PPTR写入地址片内偏移地址,并读取寄存器
CS8900_PDATA的值时,如下


需要在前面加上代码改为:



为什么?因为0x04000000只是CS8900的片选地址,要想片选有效,必须向这个地址
输入0,使片选信号cs=0,选通cs8900
当出现cs8900 can not be found!说明cs8900的驱动有问题,本板子就是一个很好
的例子,这时需要参照自己的bootloader。
5. include/configs 目录下添加xsbase.h
板子配置文件(参照了lubbock.h),参数的具体意思可以看u-boot中的README文档
















































































































































































































































6.MAKEALL文件更改







7.Makefile文件更该
xsbase_config : unconfig
@./mkconfig $(@:_config=) arm pxa xsbase
arm为cpu种类,pxa为arm中对应的目标代码,xsbase是自己的开发板对应的目录
mkconfig是一段shell程序,同时自动生成include/config.h文件,根据
include/configs/xsbase.h生成
8.最后编译,生成u-boot.bin文件的命令:
make clean
make xsbase_config
make all
9.检测网卡:
leibo$ tftp 0xa0008000 my_kernel
TFTP from server 192.168.0.1; our IP address is 192.168.0.10
Filename 'my_kernel'.
Load address: 0xa0008000
Loading: #################################################################
#################################################################
###############################################################
done
Bytes transferred = 986520 (f0d98 hex)
10.最后的结果:
U-Boot 1.1.4 (May 2 2006 - 09:49:09)
U-Boot code: A3F80000 -> A3F9C884 BSS: -> A3FA0F9C
//由ld文件决定
RAM Configuration:
Bank #0: a0000000 64 MB
Bank #1: a4000000 0 kB
Bank #2: a8000000 0 kB
Bank #3: ac000000 0 kB
Flash: 32 MB
In: serial
Out: serial
Err: serial
ethaddris 15 //为了调试网卡cs8900的方便,自己加上去的
ethaddris 14
ethaddris 36
ethaddris 18
ethaddris 8A
ethaddris 11
ID is:630E
cs8900 is ok!
Hit any key to stop autoboot: 0
## Starting application at 0xA0008000 ...
Uncompressing
Linux.............................................................Linux
version 2.4.18-rmk7-pxa1-xhyper255 (root@localhost) (gcc version 2.95.3
25CPU:
Intel XScale-PXA255 revision 6
Machine: HYBUS X-Hyper255
Warning: bad configuration page, trying to continue
MCS0 = 0x7ff87ff0
MCS1 = 0x5aa85aa8
MCS2 = 0x24482448
On node 0 totalpages: 16384
zone(0): 16384 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=1f03 rw console=ttyS0,115200 init=/linuxrc
Console: colour dummy device 80x30
Calibrating delay loop... 397.31 BogoMIPS
Memory: 64MB = 64MB total
Memory: 61728KB available (2028K code, 334K data, 372K init)
Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes)
Inode-cache hash table entries: 4096 (order: 3, 32768 bytes)
Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Today is : 2165. 85. 85. 45:85:80
PXA USB Controller Core Initialized
get_random_bytes called before random driver initialization
USB Function Ethernet Driver Interface
Starting kswapd
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications
AB.
Console: switching to colour frame buffer device 80x30
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with no serial options enabled
ttyS00 at 0x0000 (irq = 14) is a PXA UART
ttyS01 at 0x0000 (irq = 13) is a PXA UART
ttyS02 at 0x0000 (irq = 12) is a PXA UART
ads7843 touch screen driver initialized
init FPGA Board 0 , Made by Ray.xian
init FPGA Board 1, Made by Ray.xian
init FPGA Board 2, Made by Ray.xian
init FPGA Board 3, Made by Ray.xian
init FPGA Board 4, Made by Ray.xian
init FPGA Board 5, Made by Ray.xian
block: 128 slots per queue, batch=32
Cirrus Logic CS8900A driver for Linux (V0.01)
eth0: CS8900A rev E at 0xf0000300 irq=0, no eeprom , addr: 00:12:34:56:78:9A
Linux video capture interface: v1.00
SCSI subsystem driver Revision: 1.00
request_module[scsi_hostadapter]: Root fs not mounted
request_module[scsi_hostadapter]: Root fs not mounted
ac97_codec: AC97 Audio codec, id: 0x4352:0x5914 (Cirrus Logic CS4297A rev B)
Probing X-Hyper250 Flash at physical address 0x00000000
Using buffer write method
No RedBoot partition table detected in X-Hyper255 Flash
Using static partition definition
Creating 4 MTD partitions on "X-Hyper255 Flash":
0x00000000-0x00040000 : "Bootloader"
0x00040000-0x000c0000 : "Partition Tables"
0x000c0000-0x002c0000 : "Kernel"
0x002c0000-0x02000000 : "Filesystem"
Linux Kernel Card Services 3.1.22
options: none
Intel PXA250/210 PCMCIA (CS release 3.1.22)
X-Hyper250 PCMCIA INIT
usb.c: *****registered new driver usbdevfs
usb.c: registered new driver usbdevfs
usb.c: *****registered new driver hub
usb.c: registered new driver hub
usb.c: *****registered new driver usb_mouse
usb.c: registered new driver usb_mouse
usbmouse.c: v1.6:USB HID Boot Protocol mouse driver
usb.c: *****registered new driver keyboard
usb.c: registered new driver keyboard
usbkbd.c: :USB HID Boot Protocol keyboard driver
usb.c: *****registered new driver quickcam
usb.c: registered new driver quickcam
usb.c: *****registered new driver ov511
usb.c: registered new driver ov511
ov511.c: v1.50 for Linux 2.4 : OV511 USB Camera Driver
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 1 port detected
Initializing USB Mass Storage driver...
usb.c: *****registered new driver usb-storage
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
mice: PS/2 mouse device common for all mice
MMC subsystem, $Revision: 0.3.1.14 $
MMC block device driver, $Revision: 0.3.1.16 $
PXA250 MMC controller driver, $Revision: 0.3.1.12 $
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com
IrCOMM protocol (Dag Brattli)
FAT: bogus logical sector size 381
UMSDOS: msdos_read_super failed, mount aborted.
FAT: bogus logical sector size 381
FAT: bogus logical sector size 381
VFS: Mounted root (jffs2 filesystem).
Freeing init memory: 372K
Setting up RAMFS, please wait ...
done and exiting
INIT: version 2.78 booting
INIT: Entering runlevel: 3
Starting syslog Starting system logger:
Starting pcmcia Starting PCMCIA
Starting etwork Starting network
Starting X...
XSBASE login:
--
LEIBO HAOHUA
___ ___
{~._.~} {~._.~}
( Y ) ( Y )
()~*~() ()~*~()
(_)-(_) (_)-(_)
※ 来源:·我爱南开站 nkbbs.org ·Web[FROM: 202.113.229.144]