早年写的笔记,压箱底了,翻出来晒晒
目录
移植uClinux2.4到IXP425DP.1
实验环境...1
配置,编译,安装相关文件...1
1. 解压snapgear-3.5.0.tar.gz.2
2. 安装arm-linux-tools-20051123.2
3. 准备snapgear补丁文件...3
4. 安装patchsnapgear4
5. 集成IXP驱动...4
6. 配置内核...4
7. 编译内核...8
7. 启动IXP网卡...9
可能遇到的问题...9
1. Uudecode错误...9
2. 交叉编译器版本不对...9
3. Error initialising queue manager9
4. flone错误...10
IXP425DP(P720板) 266Mhz 64M ram16M flash
u Vmware6.5, 2CPU.
u FC4: kernel 2.6.11-1.1369_FC4smp(FC6也行),安装在虚拟机上
u arm-linux-tools-20051123.tar.gz:gcc 3.4.4编译器
u snapgear-3.5.0.tar.gz: snapgear发布的uClinux包
u snapgear-modules-20071004.sh: snapgear发布的uClinux包
u BSD_ixp400AccessLibrary-2_4.zip: IXP网卡驱动
u IPL_ixp400NpeLibrary-2_4.zip: IXP网卡驱动补丁
u files in /home/linuxuser/snapgear
解压snapgear-3.5.0.tar.gz到/home/linuxuser/snapgear。解压完后目录应该像这样
解压arm-linux-tools-20051123得到usr文件夹,在本次实验里,将其复制到/home/linuxuser, 最后文件夹应该如下:
先安装sharutils-4.2.1-27.i386.rpm,安装成功后在/home/linuxuser/ixp425下执行
#chmod+x snapgear-modules-20071004.sh
#./snapgear-modules-20071004.sh
会弹出画面,按空格到最后有一个选择
……
NCLUDING WITHOUT LIMITATION ANY VALID LICENSETO THE SOFTWARE FROM INTEL).
Accept (yes/no):
当然是输入yes,回车。
执行完会得到如下信息,说明得到了8个新文件:
x - extractingREADME (text)
x - extractingsnapgear-20071004.patch (binary)
x - extractingmodules-csr1.4-20071004.patch (binary)
x - extractingmodules-csr1.4-with-crypto-dsr-20071004.patch (binary)
x - extractingmodules-csr2.1-20071004.patch (binary)
x - extractingmodules-csr2.1-with-crypto-20071004.patch (binary)
x - extractingmodules-csr2.4-20071004.patch (binary)
x - extractingmodules-csr2.4-with-crypto-20071004.patch (binary)
复制刚刚生成的snapgear-20071004.patch文件到/home/linuxuser/snapgear,执行如下操作
# cd/home/linuxuser/snapgear
# patch -p1 <snapgear-20071004.patch
会有如下信息打印
patching filelinux-2.4.x/arch/arm/mach-ixp425/ixp425-pci.c
patching filelinux-2.4.x/net/core/dev.c
patching filelinux-2.4.x/net/core/Makefile
……
切换到/home/linuxuser/snapgear文件夹,执行如下命令
#mkdir -p modules/ixp425/ixp400-2.4
将BSD_ixp400AccessLibrary-2_4.zip,IPL_ixp400NpeLibrary-2_4.zip 和modules-csr2.4-20071004.patch复制到/home/linuxuser/snapgear/modules/ixp425/ixp400-2.4,执行如下命令:
#cd /home/linuxuser/snapgear/modules/ixp425/ixp400-2.4
#unzip BSD_ixp400AccessLibrary-2_4.zip
#unzip IPL_ixp400NpeLibrary-2_4.zip
#patch -p1 < modules-csr2.4-20071004.patch
modules-csr补丁有很多个版本,但是从BSD_ixp400AccessLibrary-2_4和IPL_ixp400NpeLibrary-2_4上可以看出,驱动的版本是2.4,并且是没有with-crypto,所以决定使用modules-csr2.4-20071004.patch进行打补丁
#cd /home/linuxuser/snapgear/
#export PATH=$PATH:/home/linuxuser/usr/local/bin
#make menuconfig
1.选中intel/ix425DP
2. 选中linux-2.4.x / uClibc /Customize Kernel Settings (NEW) / Customize Module Settings (NEW)
选中之后exit,会出现一个命令行选择
Intel IXP400Access Library (CONFIG_IXP400_LIB) [M/n/y/?]
Intel Access Library version (1.4, 2.1, 2.4)[2.4] (NEW)
Names networkinterfaces as eth, not ixp (CONFIG_IXP425_IXP_AS_ETH) [Y/n/?]
Use NAPI (CONFIG_IXP400_NAPI) [N/y/?] (NEW)
都直接回车就行了,然后会弹出另外一个窗口,选择general setup
出现generalsetup窗口如下:
选中Forcedefault kernel command string,并且选中并修改Default kernel command string。
将原来的
console=ttyS0,115200root=/dev/ram0 initrd=0x00800000,8Mmem=64M@0x00000000
改为
console=ttyS1,115200root=/dev/ram0 initrd=0x00800000,8Mmem=64M@0x00000000
需要注意的一点是,系统会自动加上console,所以要避免出现consoleconsole的字样。
选好以后,进入Main Menu->Networking options选中QoS and/or fairqueueing。
在QoS and/or fair queueing菜单中, 选择[ ] QoS and/or fair queueing后,会出现很多选项,选择其中的一种queue,比如RED queue。
所有的选好之后保存退出。之后会出现一个新的菜单
选择XSCALE/IXP400 Modules --->,取消[ ] Names network interfaces as eth, not ixp
选完以后,保存退出。
执行如下命令
#make dep
#make
编译完成之后会在/home/linuxuser/snapgear/images下形成ramdisk和zImage,使用tftp将这个文件load到IX425DP上,
load -r -v -b0x00800000 ramdisk.gz
load -r -v -b0x01600000 zImage
exec
成功运行就可以运行看到如下画面
RAMDISK:Compressed image found at block 0
Freeing initrdmemory: 8192K
VFS: Mountedroot (ext2 filesystem).
Freeing initmemory: 228K
Welcome to
S N A P G E A R L I N U X
For furtherinformation check:
http://www.snapgear.org/
在IX425DP的串口终端上执行以下命令
#insmod ixp400
#modprobe ixp400
#cat/etc/IxNpeMicrocode.dat > /dev/ixNpe
#modprobeixp400_eth
#ifconfig ixp0up
#ifconfig ixp0 10.0.0.203
#ping 10.0.0.101
其中10.0.0.203是设定的IXP的IP地址,10.0.0.101是局域网内另外一台机器,可以从此判断网卡的连通情况
如果host没有安装sharutils-4.2.1-27.i386.rpm,在执行snapgear-modules-20071004.sh时候就会提示如下错误
x - created lock directory `_sh20011'.
x - extracting README (text)
x - extracting snapgear-20071004.patch(binary)
./snapgear-modules-20071004.sh: line 318:uudecode: command not found
编译2.4 kernel uClinux需要使用arm-linux-tools-20051123.tar.gz。
如果使用arm-linux-tools-20070808.tar.gz,会出现“mapcs-32” “–malignment-traps”错误,这在第一章里面提到过。
如果在makemenuconfig->network options 没有选中一种queue,会出现如下错误
# insmod ixp400_eth.o
Using ixp400_eth.o
ixp400_eth: Initializing IXP400 NPEEthernet driver software v. 1.7SG
ixp400_eth: CPU clock speed (approx) = 262MHz
ixQMgrInit: IxQMgr already initialised
ixp400_eth: Error initialising queuemanager!
insmod: init_module: ixp400_eth: Operationnot permitted
如果在XSCALE/IXP400Modules ---> 选中了Intel IXP400 Ethernetdevice Driver Fast skb recycling support,编译的时候就会出现和fclone相关的错误