在第六部分,我们讲解了如何给开发板烧写系统,比如讲系统烧写到 U 盘,烧写当固态等,那么我们使用的这些镜像是如何来的呢,在一部分会一一给大家揭晓。
7.1 编译 PMON
龙芯 2K1000 的 bootloader 目前支持 pmon 和 uboot,但是截止到本开发板教程编写的时间点,官方只提供了 pmon 的 bsp 源码,uboot 的资料并未对外开放,所以 2k1000 开发板的 bootloader 使用的 pmon。本节我们来讲解一下 pmon 的编译。
7.1.1 安装库文件
7.1.1.1 安装 bison
我们在 Ubuntu 的终端命令窗口输入“sudo apt-get install bison”安装 bison 库,如下图所示:
安装完成如下图:
7.1.1.2 安装 flex
我们在 Ubuntu 的终端命令窗口输入“sudo apt-get install flex”命令,安装 flex 库,如下图所示:
安装完成如下图所示:
7.1.1.3 安装 makedepand
我们在 Ubuntu 的终端命令窗口输入“sudo apt-get install xutils-dev”命令,安装 makedepand,安装完成如下图所示:
7.1.1.4 安装 python
我们在 Ubuntu 的终端命令窗口输入“sudo apt-get install python”命令,安装 python,如下图所示:
安装完成如下图所示:
7.1.2 安装 pmon 交叉编译器
编译 pmon 使用的是“gcc-4.4-gnu.tar.gz”,可以在迅为龙芯开发板资料中找到,位置:“LS2K1000 开发板资料\02_开发及烧写工具”。我们将编译器拷贝到 Ubuntu 的任意目录下,如下图所示:
然后我们输入“sudo tar -xf gcc-4.4-gnu.tar.gz -C /”解压命令,将交叉编译器解压到“/”目录下,注意:解压命令必须为这个命令,目录是保证脚本里面的交叉编译器环境变量的路径跟编译器实际解压的路径一致。因为我们在编译的时候使用的是均为绝对路径并已经在编译脚本中写好,大家只要按照这个路径解压即可,也就不用给编译器设置环境变量了。解压完成后会在/opt 下得到解压生成的编译器文件夹,如下图所示:
7.1.3 安装 pmoncfg
如果我们的 Ubuntu 系统是第一次编译 pmon,我们首先需要安装 pmoncfg 命令(如果我们已经安装过pmoncfg 可以跳过本小节),安装 pmoncfg 的具体步骤如下:
首先将pmon源码拷贝到Ubuntu的任意路径下,pmon源码包位置LS2K1000开发板资料\04_pmon&Linux内核源码,拷贝完成后使用命令 tar -xf pmon-loongson3_20210525.tar.gz 解压 pmon 源码,pmon-loongson3文件夹即为解压得到的源码,最后使用命令 cd pmon-loongson3/进入到 pmon 源码目录下,如下图所示:
然后使用“cd tools/pmoncfg”命令,进入到 pmoncfg 的源码目录下,使用命令 make clean 清理之前编译生成的文件,清理完成后执行 make 编译 pmoncfg,如下图所示:
我们输入“ls”命令,可以看到在“pmoncfg”目录下生成了“pmoncfg”文件,如下图所示:
接着我们输入“sudo cp pmoncfg /usr/bin/”,将“pmoncfg”文件拷贝到 Ubuntu 系统的“/usr/bin/”目录下,运行结果如下图所示:
至此,pmoncfg 的安装就完成了。
7.1.4 编译 pmon 源码
34.1 到 33.4 准备工作做好以后,我们就可以编译 pmon 了,首先我们需要进到 pmon 的源码根目录下,如下图所示:
输入“cd zloader.ls2k”命令,进入到“zloader.ls2k”目录,如下图所示:
然后输入“./create.sh”命令,开始编译 pmon,如下图所示:
编译成功如下图所示:
create.sh 脚本文件里面执行了三行代码,如下:
1. export PATH=/opt/gcc-4.4-gnu/bin/
PATH
2. make cfg all tgt=rom ARCH=mips CROSS_COMPILE=mipsel-linux- DEBUG=-g
3. make dtb
简析:
export PATH=/opt/gcc-4.4-gnu/bin/
PATH
设置交叉编译器 gcc-4.4-gnu 的环境变量
make cfg all tgt=rom ARCH=mips CROSS_COMPILE=mipsel-linux- DEBUG=-g
解析:其中 cfg 为使用默认的配置文件进行编译,编译目标为 all,tgt=rom 为编译生成 gzrom.bin 文件
make dtb
编译设备树,生成的设备树文件和 gzrom.bin 文件会合并成最终的 gzrom-dtb.bin编译成功以后最终会在上一级“zloader”目录下生成“gzrom-dtb.bin”镜像文件(后面 pmon 镜像烧写章节将会用到该文件),如下图所示:
至此,pmon 的编译就完成了。