微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > uClinux在S3C44B0X上的移植

uClinux在S3C44B0X上的移植

时间:11-10 来源:互联网 点击:
LED at 5.
Hunk #2 FAILED at 40.
Hunk #3 FAILED at 187.
3 out of 3 hunks FAILED -- saving rejects to file Makefile.rej
patching file linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in
Hunk #1 succeeded at 63 (offset 4 lines).
cant find file to patch at input line 16504
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|
|diff -Naur uClinux-dist/vendors/Samsung/44B0/Makefile vendors/Samsung/44B0/Makefile
|--- uClinux-dist/vendors/Samsung/44B0/Makefile 2004-04-08 08:27:25.000000000 +0800
|+++ uClinux-dist/vendors/Samsung/44B0/Makefile 2004-08-01 02:43:50.000000000 +0800
--------------------------
File to patch:

这是由于源代码uClinux-dist/vendors/Samsung/路径下的文件夹名是4510B,而不存在44B0这个文件夹,所以报错.解决办法很简单,直接将4510B改名成44B0就OK了.
[root@localhost uClinux-dist]# mv vendors/Samsung/4510B vendors/Samsung/44B0
也可以根据补丁文件的描述自己手动地改写源代码,这样就不需要再打补丁了.
接下来就是代码的编译了.

4.内核的下载,烧录
在下载内核之前确保板子上已经烧录了引导装载程序bootloader,可以根据超级终端的显示来判断,如果出现了
...
1.Download code to SDRAM.
2.Download code to SDRAM & Nandflash.
3.Burn flashROM.
4.Copy code from flashROM to SDRAM.
5.Run at specify address.
6.Run code in Nandflash.
7.Start uClinux.
8.Format Nandflash.
9.Test hardware
这9个选项,说明已经有bootloader烧录到板子了,否则还要进行bootloader的烧录.
4.1bootloader.bin的烧录
烧录方法一:使用fluted烧录工具
烧录步骤
S1.连线.使用并口线和20针排线,通过JTAG模块,连接主板(开发板)和宿主机主板并口
S2.打开主板电源,运行JTAG.exe
S3.将bootloader.bin拷贝到programmer目录下,运行F.bat(Win2000 or XP运行F_2000xp.bat),开始烧录.
Fluted烧录分三个过程:擦除,写入,校验.如果没有报错,则烧录成功.可以按复位键,观察超级终端显示.

烧录方法二:使用flashprgm工具
它是一个工程文件,需要在ADS或SDT中编译运行.其优点是速度快.
在SDT中的烧录步骤:
S1.连接 jtag口,编译工程,启动ADW
S2.菜单|file|get files...,填写地址0xc200000,打开bootloader.bin,ADW就开始下载
S3.下载完成后点工具栏上(GO)图标执行flashprgm程序,开始烧录.

4.2下载image.ram到开发板
uClinux的运行有两种模式:一种是用USB或Xmodem下载内核映象文件到SDRAM指定位置,直接运行;另一种是先将内核压缩文件烧录到flashROM,再从flashROM解压缩到SDRAM开始运行.
将image.ram下载到开发板的步骤:
S1.开发板上电,用USB供电就可以了(反正需要USB下载器);启动JTAG.exe,打开超级终端
S2.在bootloader的9个选项中选择功能项1
S3.根据超级终端提示输入下载地址,默认是0xc8000,所以如果不用其它地址的话可以直接按回车键
S4.提示使用哪种下载工具,USB下载器orXmodem,选择前者按[U],后者按[X]
S5.按下[U],出现提示信息:
USB Interface is active!
You can use USBdownload.exe to download *.bin file!
这样就可以开始使用USB下载器进行程序下载了
提示信息也可能是这样的
...(以前看到过,具体什么忘了)failed!
可以按复位键重启bootloader,基本可以解决问题
注意:在使用USB下载器地时候最好断开jtag口.
S6.USB下载器的使用.菜单|file|open file...,先选择要下载的文件,它提供了三种格式的文件:.bin,.txt,还有.ram,然后点击主界面上的"下载文件"按钮开始下载,有提示信息显示和进度条变化.这里有两个问题:
1.如果直接选择image.ram,会发现它的大小只有几十k,而且到下一步启动uClinux时就死机了,所以我们将.ram文件改成.bin文件;
2.下载imageram.bin文件并不是每一次都可以成功,有时可能提示超时,那就多试几次(具体原因再作了解)
S7.下载成功后,选择功能项5,从指定位置运行程序,因为我们需要地址0xc8000,直接回车就可以了,这样就可以看到uClinux的启动画面了

4.3烧录image.rom到主板
image.rom是image.ram的压缩版本.
烧录步骤:
S1.复位开发板.选功能项1,输入地址0xc200000,回车
S2.USB下载器下载bootloader.bin(可以在光盘找到)
S3.下载成功后,再次选择功能项1,输入地址0xc220000,回车
S4.USB下载器下载imagerom.bin
S5.下载成功后,还是选择功能项1,输入地址0xc8000,回车
S6.USB下载器下载flashprgm目录下的44bapp.bin
S7.下载成功后,选功能项5,从指定位置0xc8000运行程序
S8.flashprgm开始运行,超级终端显示询问是否开始烧录,按[Y],开始烧录,可以看到开发板上绿色发光管的变化.烧录完成提示是否再次烧录,回答[N]
S9.复位开发板,输入7,运行uClinux

可以看到启动界面:
...
Load image.rom...

Start uClinux
Uncompressing Linux.............................................................Linux version 2.4.24-uc0 (root@localhost) (gcc version 2.95.3 20010315 (release5Processor: 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/rom0 init=/linuxrc
Calibrating delay loop... 31.84 BogoMIPS
Memory: 8MB = 8MB total
Memory: 6044KB available (1799K code, 170K data, 44K 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
ttyS0 at I/O 0x1d00000 (irq = 3) is a S3C44B0
ttyS1 at I/O 0x1d04000 (irq = 2) is a S3C44B0
ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
Last modified Nov 1, 2000 by Paul Gortmaker
NE*000 ethercard probe at 0x8000000: 52 54 ab 12 34 56
eth0: NE1000 found at 0x8000000, using IRQ 22
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: C0ECA80-C1D4E7F [VIRTUAL C0ECA80-C1D4E7F] (RO)
RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksize
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 512 bind 512)
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 44K
Shell invoked to run file: /etc/rc
Command: hostname Samsung
Command: /bin/expand /etc/ramfs.img /dev/ram0
Command: /bin/expand /etc/ramfs2048.img /dev/ram1
Command: mount -t proc proc /proc
Command: mount -t ext2 /dev/ram0 /var
Command: mount -t ext2 /dev/ram1 /ramdisk
Command: chmod 777 /ramdisk
Command: mkdir /var/config
Command: mkdir /var/tmp
Command: mkdir /var/log
Command: mkdir /var/run
Command: mkdir /var/lock
Command: cat /etc/motd
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ | | | | / /
| |_| | |__| || | | | | |_| |/
| ___/____|_||_|_| |_|/____|/_//_/
| |
|_|

For further information check:
http://www.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top