halloween 发表于 2008-4-27 16:15:38

u-boot和uClinux(基于s3c44b0x)

一直对嵌入式操作系统感兴趣,几个月前移植了uc/os-II,感觉不过瘾,去海淀中发二楼买了块44b0的开发板,板子不错,核心板4层,先赞一个^_^
板子带有bootloader,但是感觉u-boot功能强大,所以决心移植,下面说一下u-boot-1.1.4的注意事项:
1、我的nor flash是sst39vf1601,为了擦写方便,配置成32个sector,每个sector大小为64k,共2M大小,网上有的移植笔记配置成512个sector,但是每个sector还是64k,汗!!!执行显示flash命令flinfo(fl)的时候会导致系统崩溃。
2、移植网卡的时候,大多的44bx板都是rtl8019 我的是cs8900,注意地址偏移量,和baseaddr,我的8900接在ngcs3上,所以地址是0x06000000,至于是6000000还是6000300,其实都一样(个人感觉,因为都能ping通),但是执行ping以后,用md命令看网卡的id号是在6000000,所以我用的是6000000,还有,要用16bit。
3、环境变量要设置在flash(默认是eeprom)
4、cpu/s3c44b0/start.s中断向量表修改,网上有现成的,拿来就用没有问题
5、最重要的,也是我费时最长的就是入口地址的修改,lowlevel_int.S,配置bank,我网上的都不能发现我的cs8900,只能根据开发板光盘例程里的改了,才好的,这里不列出我的了,免的误导大家,只要看厂家给的例程就行了。
以上就是uboot的移植,网上资料不少,但没有没错的,我就算做个补充吧。

http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_261344.JPG
(原文件名:uboot.JPG)

接下来是uClinux的移植,网上文章一大片,但仔细一看其实都是差不多的,真正原创的很少,2.6以上要自己编写串口控制台的驱动,比较麻烦,所以先从2.4开始。我用的uClinux-dist-20040408.tar.gz和uClinux-20040408-ARMSYS.patch
一开始解压源码、打补丁什么的就不说了,太多了。我说一下关键的地方:
1、按照http://blog.21ic.com/user1/738/archives/2006/18153.html来基本没问题,但是找不到网卡。
2、网卡问题,我的8900要自己添加驱动cs8900a。c放到driver/net文件夹,修改ne.c中ne2000的基址为自己的0x6000000 。make menuconfig的时候选网络设备的时候要选三项 cs8900 ne2000 16bit
修改后,cs8900正常工作
http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_261349.JPG
(原文件名:cs8900.JPG)

http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_261350.JPG
(原文件名:ping.JPG)

3、Sash command shell 功能太弱,换busybox,Busybox中集成进去的Shell有以下几个。
①Lash:很小,加起来有10k,非常适合执行命令,支持管道和重定向,但不支持Bourne Shell语法,无法解释脚本。
②Hush:也非常小, 18k左右,支持Bourne Shell语法,能够很好地处理if/then/else/fi结构语句,但是处理不了像for/do/done或者case/esac等循环语句。
③Msh:加起来有30k左右,能够处理for/do/done、case/esac等循环语句。只要是Bourne shell能够做的,Msh一般都能做到,它的语法与Bourne Shell语法可能不完全相同,但大多数Bourne Shell语法都能被Msh解释。Msh是用vfork来创建新进程的,所以适于uClinux操作系统。
④Ash:在默认配置下大约有60k左右,是Busybox里最完整的Shell,但无法在uClinux 上编译通过。
综上所述,Busybox里的Msh是目前uClinux下最好的Shell。

http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_261351.jpg
(原文件名:uClinux(busybox).jpg)

最后的运行过程




Welcome To XW World!

U-Boot 1.1.4 (Apr 24 2008 - 17:54:43)

U-Boot code: 0C700000 -> 0C71A1E8BSS: -> 0C71E33C

RAM Configuration:

Bank #0: 0c0000008 MB

NOR Flash:2 MB

In:    serial

Out:   serial

Err:   serial

CS8900 Ethernet chip ID:630E

Hit any key to stop autoboot:0

## Booting image at 00040000 ...

   Image Name:   XW-uClinux-2.4.24-uc0

   Created:      2008-04-2714:18:38 UTC

   Image Type:   ARM Linux Kernel Image (uncompressed)

   Data Size:    1063372 Bytes =1 MB

   Load Address: 0c300000

   Entry Point:0c300040

   Verifying Checksum ... OK

OK


Starting kernel ...


Uncompressing Linux........................................................................ done, booting the kernel.

Linux version 2.4.24-uc0 (root@localhost) (gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from http://fiddes.net/coldfire/)(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #33 日 4月 27 22:15:28 CST 2008
Processor: Samsung S3C44B0X revision 0
Architecture: S3C44B0X
On node 0 totalpages: 2048
zone(0): 0 pages.
zone(1): 2048 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/ram0 console=ttyS0,115200
Console: colour dummy device 80x30
Calibrating delay loop... 23.85 BogoMIPS
Memory: 8MB = 8MB total
Memory: 5700KB available (2049K code, 243K data, 60K init)
Dentry cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 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
Starting kswapd
NTFS driver v1.1.22
LCD buffer : 0c2d0000
fbcon_setup: No support for fontwidth 8
fbcon_setup: type 0 (aux 0, depth 0) not supported
Console: switching to colour frame buffer device 80x30
pty: 256 Unix98 ptys configured
Samsung S3C44B0X UART driver version 0.1 <thomas.eschenbacher@sympat.de>
ttyS0 (irq = 3) is a builtin Samsung S3C44B0X UART
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: C12F958-C217557 (RO)
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
eth0: cs8900 rev K(3.3 Volts) found at 0x6000000
cs89x0 media RJ-45, IRQ 23
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 512)
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 60K
Welcome to
          ____ __
         /__| ||_|               
    _   _| || | _ _____   ___
   | | | | || || |_ \| | | |\ \/ /
   | |_| | |__| || | | | | |_| |/    \
   |___\____|_||_|_| |_|\____|\_/\_/
   | |
   |_|

For further information check:
http://www.uclinux.org/
XW_powered <genuinetata@163.com>



BusyBox v0.60.5 (2008.04.27-14:13+0000) Built-in shell (msh)
Enter 'help' for a list of built-in commands.

# ls -F
bin/dev/etc/home/ lib/mnt/proc/ sbin@ tmp@usr/var/
#

以上是本人最近学习linux的心得,希望老鸟多加指点,给咱们想学嵌入式的人一些帮助

halloween 发表于 2008-4-27 16:19:21

补充一点,u-boot的运行地址最好设到内存的高端,默认是c100000,下载的默认地址是c008000,所以下载大文件会冲突

ifree64 发表于 2008-4-27 16:30:11

顶楼主。

一直以来都是玩PC机上的Linux,最近下了一个16G的ARM-Linux教程,才发现原来嵌入式Linux更好玩。

halloween 发表于 2008-4-27 16:32:01

pc上的不是不好玩是太复杂,光驱动就能难倒一大片人,嵌入式的linux移植性比较强,相对简单。

zxq6 发表于 2008-4-27 17:58:33

laoki8888 发表于 2008-4-27 19:08:21

问下楼主uboot可以移植到任何arm核心的处理器上面么?

halloween 发表于 2008-4-28 08:16:47

回楼上 s64什么的估计不行 因为44b0的uboot编译完有100多k

ifree64 发表于 2008-5-18 21:20:14

今天把uboot-1.3.1移植成功了。
过两天上我的uboot移植笔记。

my_avr 发表于 2008-5-18 21:23:07

我正想把U-boot移植到LPC2200 ARM上

weiyongwill 发表于 2008-6-8 22:14:49

感谢楼主,楼主的博客是个好地方,已收藏!

thomasdu 发表于 2008-6-12 18:09:06

嵌入式Linux最有趣的地方可能是可以调试操作系统的启动代码了,这在PC上通常是很困难的,不然,谁调试一个XP来看看。

halloween 发表于 2008-7-8 11:32:24

谢谢楼上几位的支持,我只是看到网上移植的文章不少,但是没有几个原创的,所以把我的经验分享分享./emotion/em123.gif./emotion/em123.gif./emotion/em123.gif

Rocker 发表于 2009-1-12 14:48:55

2楼的仁兄,在那下载的视频,能否给个链接?

mikefeiee 发表于 2009-7-29 11:33:15

标记

mikefeiee 发表于 2009-7-29 11:34:08

标记

mikefeiee 发表于 2009-7-29 11:38:17

标记

mikefeiee 发表于 2009-7-29 11:40:31

标记

mikefeiee 发表于 2009-7-29 11:43:19

标记

mikefeiee 发表于 2009-7-29 11:45:33

标记

mikefeiee 发表于 2009-7-29 11:48:22

标记

mikefeiee 发表于 2009-7-29 11:50:35

标记

mikefeiee 发表于 2009-7-29 11:53:24

标记

mikefeiee 发表于 2009-7-29 11:55:38

标记

mikefeiee 发表于 2009-7-29 11:58:26

标记

mikefeiee 发表于 2009-7-29 12:00:40

标记

mikefeiee 发表于 2009-7-29 12:03:28

标记

mikefeiee 发表于 2009-7-29 12:05:42

标记

mikefeiee 发表于 2009-7-29 12:08:30

标记

linghai 发表于 2009-8-4 21:48:53

标记一个

lwy86 发表于 2009-8-4 22:06:49

mark

ljqlaq 发表于 2009-12-27 23:12:53

赞一个。。。

eagle_avr 发表于 2010-1-8 18:00:58

强人!

river0830 发表于 2010-8-15 17:03:35

mark

wjhltk 发表于 2010-8-30 08:42:11

mark

wangle315065 发表于 2010-9-3 22:05:40

学习学习啦

huangtonggao 发表于 2010-10-18 22:52:46

学习了

Jigsaw 发表于 2010-10-18 23:47:58

可不可以在虚拟机上玩?

zhijianli88 发表于 2011-7-5 14:05:52

mark

xinjie1023 发表于 2011-12-31 22:11:56

收藏

troyishere 发表于 2012-1-19 14:42:46

刚刚申请账号。。。认真学习丫。。。
页: [1]
查看完整版本: u-boot和uClinux(基于s3c44b0x)