Ubuntu 配置Pmon编译环境

1.前言

首先,感谢龙芯团队的耐心指导以及他们的开源精神。

最近在工作,接到一个任务:适配龙芯国产化芯片的BIOS工作。目前还在学习PMON的编程,在配置的时候就遇到了很多问题。目前已经搭载完了一版Pmon编译环境。下面将讲解我是如何配置的。

官方参考网站: PMON编译方法-龙芯开源社区: (如有需要请联系购买芯片的对接市场人员。)

2.运行平台

本次编译环境依托Ubuntu 18.04.4 STL和Ubuntu 20.04.1 STL版本,目前使用22.04.1版本。Ubuntu20与Ubunut18区别在python环境,Ubuntu20默认使用python,所以我在编译前修改了编译脚本。在Ubuntu18配置环境前,我已经按照官网配置教程在Ubuntu16 i386_32位版本中配置成功。修改为Ubuntu18的原因是目前新的pmon支持设备树挂载使用的dtc工具需要使用64位运行环境。

3.依赖组件

在Ubunt18系统下需要安装以下运行支持组件:

名称指令
g++ -multilibsudo apt-get install g++ -multilib
libncurses5:i386sudo apt-get install libncurses5:i386
libstdc++5:i386sudo apt-get install libstdc++5:i386
libstdc++6:i386sudo apt-get install libstdc++6:i386
libz.so.1sudo apt-get install lib32z1
flexsudo apt-get install flex
bisonsudo apt-get install bison
xutils-devsudo apt-get install xutils-dev
python2.7sudo 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
龙芯官网已经改版,已经对开源项目进行了整合。可在龙芯开源GNU下载所需要的编译链接工具。下文中还是以mips-gcc-4.4.0进行搭建描述。

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

环境变量生效:

source ~/.bashrc

插入位置

保存后,关闭编辑器,关闭所有的控制台。
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 针对Ubuntu20的适配

Ubuntu20 中默认环境无pyhon这个指令索引,被区分为python2.7和python3(默认为python3.8)。在工程环境中zloader/Makefile.inc文件夹下line149 依然是python。有两种解决方法一种为增加一个软连接将python2.7连接到python。

sudo mkdir python
sudo ln -s python3 python

另外一种是修改工程中的Makefile.inc文件中dtb指令脚本python 为 python2.7。

line 149: [ -f gzrom.bin ] && cp gzrom.bin gzrom-dtb.bin && python2.7 ../tools/pmonenv.py -O $$((`tail -n 1 dtbinfo.txt`)) -o $$((`tail -n 2 dtbinfo.txt|head -n 1`)) -f gzrom-dtb.bin -d ${TARGET}.dtb -w  al=\(usb0,0\)/boot/vmlinuz al1=\(wd0,0\)/boot/vmlinuz append="'console=ttyS0,115200 console=tty initcall_debug=1 loglevel=20'" FR=1

5.4 编译gzrom.bin文件

根据自己开发的平台在pmon-loongson3文件夹内进入相应的zloader文件夹。映射表如下表所示:

开发架构PMON编译文件夹
3A300+7A1000zloader.3a3000_7a
2K1000zloader.ls2k

输入以下指令:

make cfg
make tgt=rom

就可以编译出执行文件。

6.示例

以编译适配2K1000的Pmon为例:

#进入2K1000编译目录中
root@ubuntu:~/桌面/pmon-loongson3$ cd zloader.ls2k	
#编译Pmon可执行文件
root@ubuntu:~/桌面/pmon-loongson3/zloader.ls2k$ make cfg
root@ubuntu:~/桌面/pmon-loongson3/zloader.ls2k$ make tgt=rom
#此时编译完成,当前文件夹下会出现一个gzrom.bin文件

如果需要组合linux设备树,则需要如下指令:

root@ubuntu:~/桌面/pmon-loongson3/zloader.ls2k$ make dtb
#当前文件夹下会出现一个gzrom-dtb.bin文件
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值