1.前言
2.运行平台
3.依赖组件
4.安装与配置安装专用GCC编译器
4.1下载GCC编译器
4.2解压GCC编译器
4.3配置系统运行
5.编译龙芯PMON执行文件
5.1下载PMON源码
5.2 编译并配置git tools插件
5.3编译gzrom.bin文件
6.示例
1.前言
首先,感谢龙芯团队的耐心指导以及他们的开源精神。
最近在工作,接到一个任务:适配龙芯国产化芯片的BIOS工作。目前还在学习PMON的编程,在配置的时候就遇到了很多问题。目前已经搭载完了一版Pmon编译环境。下面将讲解我是如何配置的。
官方参考网站: PMON编译方法-龙芯开源社区:
2.运行平台
本次编译环境依托Ubuntu 18.04.4 STL版本,这个版本是我目前使用最多的操作系统版本。在Ubuntu18配置环境前,我已经按照官网配置教程在Ubuntu16 i386_32位版本中配置成功。修改为Ubuntu18的原因是目前新的pmon支持设备树挂载使用的dtc工具需要使用64位运行环境。
3.依赖组件
在Ubunt18系统下需要安装以下运行支持组件:
名称 指令
g+±multilib sudo apt-get install g+±multilib
libncurses5:i386 sudo apt-get install libncurses5:i386
libstdc++5:i386 sudo apt-get install libstdc++5:i386
libstdc++6:i386 sudo apt-get install libstdc++6:i386
libz.so.1 sudo apt-get install lib32z1
flex sudo apt-get install flex
bison sudo apt-get install bison
xutils-dev sudo apt-get install xutils-dev
python2.7 sudo apt-get install python2.7
配置好的bash执行脚本:
sudo apt-get install g++-multilib libncurses5:i386 libstdc++5:i386 libstdc++6:i386 lib32z1 flex bison xutils-dev python2.7
实验电脑安装结果如下:
注:如果是刚配置成功的Ubuntu系统,当以上组件安装成功后还需要下载git,make插件。
4.安装与配置安装专用GCC编译器
4.1下载GCC编译器
根据官网教程描述,需要使用龙芯提供的GCC编译器。专用GCC4.0下载:gcc-4.4.0-pmon.tgz
4.2解压GCC编译器
将下载好的gcc-4.4.0-pmon.tgz压缩包存放在任意位置。在压缩包存储的位置打开控制台,输入如下bash指令:
sudo mkdir -p /usr/local/comp/mips-elf/
sudo tar -zxvf gcc-4.4.0-pmon.tgz -C /usr/local/comp/mips-elf/
4.3配置系统运行
输入如下Bash指令进入Bashrc配置文件。
sudo gedit ~/.bashrc
在文件末尾添加三行环境配置:
export LD_LIBRARY_PATH=/usr/local/comp/mips-elf/gcc-4.4.0-pmon/lib:
export CROSS_COMPILE=mipsel-linux-
export PATH=/usr/local/comp/mips-elf/gcc-4.4.0-pmon/bin/:$PATH
保存后,关闭编辑器,关闭所有的控制台。
GCC编译器配置完成。
5.编译龙芯PMON执行文件
5.1下载PMON源码
龙芯官网使用Git进行版本控制,因此需要操作系统安装git组件。
打开控制台,在任意位置(不需要Root权限)的位置下载PMON源码。
git clone http://cgit.loongnix.org/pmon/pmon-loongson3.git
下载完毕后需要安装git tools插件
5.2 编译并配置git tools插件
进入pmon-loongson3文件夹,打开在文件夹中控制台。输入以下指令:
cd tools/pmoncfg
make
#等待编译完成
sudo cp pmoncfg /usr/bin
5.3编译gzrom.bin文件
根据自己开发的平台在pmon-loongson3文件夹内进入相应的zloader文件夹。映射表如下表所示:
开发架构 PMON编译文件夹
3A300+7A1000 zloader.3a3000_7a
2K1000 zloader.ls2k
输入以下指令:
make cfg
make tgt=rom
就可以编译出执行文件。
6.示例
以编译适配2K1000的Pmon为例:
#进入2K1000编译目录中
jimma@ubuntu:~/桌面/pmon-loongson3$ cd zloader.ls2k
#编译Pmon可执行文件
jimma@ubuntu:~/桌面/pmon-loongson3/zloader.ls2k$ make cfg
jimma@ubuntu:~/桌面/pmon-loongson3/zloader.ls2k$ make tgt=rom
#此时编译完成,当前文件夹下会出现一个gzrom.bin文件
如果需要组合linux设备树,则需要如下指令:
jimma@ubuntu:~/桌面/pmon-loongson3/zloader.ls2k$ make dtb
#当前文件夹下会出现一个gzrom-dtb.bin文件