Loongson Kernel编译与使用
原文:http://wiki.loongnix.org/index.php/Loongson_Kernel%E7%BC%96%E8%AF%91%E4%B8%8E%E4%BD%BF%E7%94%A8
龙芯处理器使用的是开源Linux操作系统,同时结合龙芯处理器的特点进行了移植优化。Kernel源码的编译采用的是交叉编译方式,研发中心目前进行bios与kernel开发的服务器是http://www.loongnix.org/gitweb/。
目前龙芯kernel全部基于git进行管理,下载kernel前需要熟悉一下git版本管理工具的使用,常用命令为git-clone、git-diff、git-status、git-format-patch、git-apply等。
注意:目前龙芯的编译器分为两种:
1.旧编译器:2012-11-26 Meng xiaofu loongson3 serial set baudrate will clear ier register...(不包含次patch)之前的用户和编译龙芯2hsoc kernel的用户使用。编译器下载地址:http://ftp.loongnix.org/toolchain/gcc/release/CROSS_COMPILE/loongson-clean-gcc-4.4.0.tar.gz
2.新编译器:2012-11-26 Meng xiaofu loongson3 serial set baudrate will clear ier register...此patch之后的用户使用:
编译器下载地址http://ftp.loongnix.org/toolchain/gcc/release/CROSS_COMPILE/loongson3-gcc4.4.tar.gz
Kernel的下载网址为:http://www.loongnix.org/gitweb,查看git版本库中源码信息。
kernel源码下载方式为:git clone http://www.loongnix.org/gitweb/linux-loongson-all
新编译器配置方式:将编译器解压到/opt/目录下,执行loongson3-gcc4.4下的path脚本设置相应的环境变量(path 设置了PATH和LD_LIBRARY_PATH 环境变量)
export PATH=/opt/loongson3-gcc4.4/install/bin:$PATH export LD_LIBRARY_PATH=/opt/loongson3-gcc4.4/library/mpfr/lib:/opt/loongson3-gcc4.4/library/ppl/lib: /opt/loongson3-gcc4.4/library/gmp-5.0.1/lib:/opt/loongson3-gcc4.4/library/cloog/lib: /opt/loongson3-gcc4.4/install/i686-linux/mips64el-linux/lib:/opt/loongson3-gcc4.4/source/gmpmpfr/lib/:$LD_LIBRARY_PATH
测试使用编译器的方法:
1)下载测试小程序:http://ftp.loongnix.org/toolchain/gcc/release/test/gcc-test.tar.gz
把a.s编译成a.o,然后反汇编后,看ll前面是否有sync,如果有sync,就是使用的新编译器 mips64el-linux-objdump -D a.o
2)直接校验编译好的kernel二进制
mips64el-linux-objdump -d vmlinux > ../v.s在交叉编译环境下用此命令 用 awk -f count_sync_ll_pair.awk v.s 校验ll前是否都添加了sync,正确的结果如下所示 9400 ll的数量 9400 sync的数量
出现的两个数字应该相同。
count_sync_ll_pair.awk内容如下:
#check if every LL has one SYNC that exactly placing before LL. #countsync must equal to countll BEGIN{ before=0; countll=0; countsync=0; } { if($3~/^ll/) { countll++; if(before~/^sync$/) { countsync++; } } before= $3; } END{ print(countll); print(countsync); }
注意:需要用新下载的编译器里objdump
旧编译器编译方式(针对2012-11-26号之前的龙芯3系列源码及最新的龙芯2Hsoc源码)
GCC下载地址:http://ftp.loongnix.org/toolchain/gcc/release/CROSS_COMPILE/loongson-clean-gcc-4.4.0.tar.gz
将编译器解压到/opt/目录下,执行loongson-clean-gcc-4.4.0下的path脚本设置相应的环境变量。配置完成后下载源码git clone http://www.loongnix.org/gitweb/linux-loongson-all
源码下载后,进入linux-loongson-all,依次执行如下命令:
cd linux-loongson-all
进入linux-loongson-all目录
编译龙芯3系列板卡kernel则按照下面方式拷贝配置文件
cp arch/mips/configs/loongson3_defconfig .config
编译龙芯2Hsoc板卡kernel则按照下面方式拷贝配置文件
cp arch/mips/configs/loongson2h_defconfig .config make menuconfig ARCH=mips CROSS_COMPILE=mips64el-linux-
读入.config中的配置信息,生成以下的界面,可以手动的对kernel进行裁剪。例如可以选择把某个选项是编译进kernel,还是编译成模块的形式,也可以裁剪掉该选项等。
make ARCH=mips CROSS_COMPILE=mips64el-linux- -j8
新编译器编译方式(针对最新的龙芯3系列源码)
GCC下载地址:http://ftp.loongnix.org/toolchain/gcc/release/CROSS_COMPILE/loongson3-gcc4.4.tar.gz将编译器解压到/opt/目录下,执行loongson3-gcc4.4下的path脚本设置相应的环境变量。配置完成后下载源码git clone http://www.loongnix.org/gitweb/linux-loongson-all源码下载后,进入linux-loongson-all,依次执行如下命令:
cd linux-loongson-all
进入linux-loongson-all目录
cp arch/mips/configs/loongson3_defconfig .config
把龙芯3系列板卡缺省的配置文件拷贝到.config
make menuconfig ARCH=mips CROSS_COMPILE=mips64el-linux-
读入.config中的配置信息,生成以下的界面,可以手动的对kernel进行裁剪。例如可以选择把某个选项是编译进kernel,还是编译成模块的形式,也可以裁剪掉该选项等。
make ARCH=mips CROSS_COMPILE=mips64el-linux- -j8
编译成功后,会在当前目录下生成vmlinux.32(32位)、vmlinux(64位),接下来把vmlinux.32拷贝到硬盘、或者服务器的/tftpboot目录就可以进行测试了。
make modules_install
执行该命令会把编译的模块安装到/lib/modules/,由于我们是在x86服务器上交叉编译龙芯的kernel源码,所以不要执行该命令。可以创建一个目录,然后执行下面命令,就可以把编译的模块安装到自己指定的目录。
mkdir ~/mymodules
make modules_install INSTALL_MOD_PATH=~/mymodules