uboot编译: make CROSS_COMPILE=mipsel-linux- distclean make CROSS_COMPILE=mipsel-linux- ls1c300a_openloongson_config make CROSS_COMPILE=mipsel-linux- 编译后生成u-boot.bin tftp更新u-boot tftp a0200000 u-boot.bin sf probe sf update a0200000 0 80000 tftp服务器默认地址为serverip=192.168.1.3 可以使用命令修改环境来设置该地址 setenv serverip 192.168.1.3 saveenv 或者修改配置文件 u-boot-2013.10/include/configs/ls1c300a_openloongson.h来修改 开发板配置文件: u-boot-2013.10/include/configs/ls1c300a_openloongson.h 编译和烧录linux内核 内核源码目录下: cp arch/mips/configs/ls1c300a_openloongson_v2.0_defconfig .config make ARCH=mips CROSS_COMPILE=mipsel-linux- menuconfig 保存退出,执行编译: make ARCH=mips CROSS_COMPILE=mipsel-linux- 生成的vmlinux或vmlinuz可以使用pmon加载到内存中运行或烧录到nand flash中。 如果使用u-boot,则要生成uImage,以下是生成uImage的方法: linux内核编译完成后,查看内核的elf信息: mipsel-linux-readelf -e vmlinux 执行这个命令后会打印很多信息,找到Entry point这个字段,例如: ... Entry point address: 0x806632e0 ... 可以确认ep地址为0x806632e0,这个入口点地址在下面的制作uImage的过程中要用到。 注意:这个地址不是固定的,更改内核配置从新编译后这个地址可能就变了,所以要根据自己编译出来的内核获取实际的地址。 制作uImage: /home/loongson/1C/u-boot-2013.10/tools/mkimage -A mips -O linux -T kernel -C gzip -a 0x80200000 -e 0x806632e0 -n "Linux-3.x" -d arch/mips/boot/compressed/vmlinux.bin.z uImage 其中/home/loongson/1C/u-boot-2013.10/tools/mkimage 是编译u-boot时候生成的工具,路径根据实际情况修改,这里u-boot源码路径是/home/loongson/1C/u-boot-2013.10/ 其中-a 0x80200000 是内核在内存中的加载地址,与arch/mips/loongson/Platform文件中的 load-$(CONFIG_LS1B_MACH) += 0xffffffff80200000 地址一致,一般不用修改。 -e 0x806632e0 则是刚才使用mipsel-linux-readelf -e vmlinux查看到的入口点地址,每次编译linux内核后都查看以下这个地址,因为这个地址可能会有所变化,把新地址替换-e 0x806632e0这个地址即可。 生成的uImage就可以在u-boot命令行下使用命令烧录到nand flash中或加载到内存中运行。 烧录内核和根文件系统: 使用tftp烧录linux内核(压缩的uImage)和根文件系统(yaffs2)到nand flash nand erase.part kernel tftp a0100000 uImage 注意加载后打印出来的长度 nand write 80100000 kernel xxx xxx表示使用加载后打印出来的长度,需要转换为16进制 nand erase.part root tftp a0100000 rootfs-yaffs2.img 注意加载后打印出来的长度 nand write.yaffs 80100000 root xxx xxx表示使用加载后打印出来的长度,需要转换为16进制 内核启动参数: setenv bootargs console=ttyS2,115200 root=/dev/mtdblock2 noinitrd init=/linuxrc rootfstype=yaffs2 rw video=ls1xfb:480x272-16@60 setenv bootcmd nboot kernel\;bootm 81000000 注意不能有引号 saveenv nand flash分区: 开发板配置文件:u-boot-2013.10/include/configs/ls1c300a_openloongson.h 中修改分区 #define MTDPARTS_DEFAULT "mtdparts=ls1x_nand:" \ /* "512k(uboot)," \ "512k(env)," \*/\ "1M(uboot_env)," \ "13M(kernel)," \ "50M(root)," \ "-(user)" uboot_env 1MByte 保留给nand启动用 kernel 13MByte 用于烧录内核 root 50MByte 用于烧录根文件系统 user 剩余容量(64MByte) 可以用作其他 注意分区大小要与linux kernel中的一致