编译PMON指南
蔡军生
为了学习怎么样开发龙芯的BIOS,也就是PMON。经历好几天深夜的探索,遇到各种各样的问题,后来又上论坛问到kkmao,总算解决了,在这里谢谢kkmao的帮忙。现在就把我的编译过程介绍一下。
一、下载SVN工具
由于要下载PMON代码,就要使用SVN工具。目前,所有的代码都是按版本控制形式保存在服务器上的,并且没有打包的代码,这样就需要使用SVN的工具来下载代码。如果在WINDOWS下,就要下载WINDOWS的SVN工具。如果在LINUX下,就需要下载LINUX的GETIT工具。
二、注册帐号
三、安装交叉编译器
当你从dev.lemote.com上下载完所有代码后,就可以到目录/kkmao/tools/compiler下面找到交叉编译器,它的名称是mips-elf.tar.gz。这是一个压缩包,当然要解压后才能使用。那么需要解压到那里呢?通常都是解压到目录/usr/local/下面,这样就形成目录:/usr/local/comp/。
四、设置交叉编译路径
上面已经把交叉编译器安装好后,并不能直接在任何路径里就运行它。比如到目录Targets/Bonito/compile/Bonito下,如果运行make就会出错,因为它找不到编译mips-elf-gcc。如果要找到它,就需要把它所在的目录加到当前环境变量里,这样才可进行编译。而在LINUX下,设置环境变量,需要打很长的字符,为了不用每次都浪费这么多功夫,就可以写一个bash的脚本文件go.sh,它的内容如下:
#!/bin/sh
export PMONBASE=$(pwd)
export PATH=/usr/local/comp/mips-elf/gcc-2.95.3/bin/:$PMONBASE/bin:$PATH
然后打开终端显示窗口,就可以用source go.sh来运行这个脚本,这样会把交叉编译器的路径添加到当前运行的路径里,这样就可以在任何地方找到交叉编译器了。
五、生成pmoncfg工具
在我没有问kkmao之前,根本就不知道还需要这样的一个过程。因此,就编译不通过。由于PMON是根据配置选择不同的源程序进行编译,所以就需要一个工具来分析那个配置文件,而这个工具就是pmoncfg。生成这个工具要到目录tools/pmoncfg下面,然后运行make就会生成pmoncfg工具。
六、配置Bonito文件
进入Targets/Bonito/conf目录,选择一个Bonito配置文件。在目前龙芯里是选择Bonito.notebook配置文件,为了方便运行,就进行符号连接。再接着运行pmoncfg工具来生成目标源程序的目录。执行下面的命令:
ln -s Bonito.notebook Bonito
tools/pmoncfg/pmoncfg Bonito
这样就形成目标目录Bonito了。
七、编译PMON
进入到上面生成的目录Targets/Bonito/compile/Bonito里,然后运行make,就会生成pmon.bin文件。接着再到zloader目录make,或者直接到zloader下面make,
最后在zloader目录生成gzrom.bin文件,就可以烧到龙芯的Flash存储器里,就可以进行主板初始化了。(模拟器也可以运行)
八、模拟器运行PMON
解压gxemul-0.3.8-good.tar.gz源程序,然后进入到目录里,运行
./configure文件,就会生成makefile文件。接着运行make文件就可以生成模拟器
gxemul
。如果把
pmon.bin
文件拷贝到这个目录下,就可以如下运行:
./gxemul -Xe bonito 0xbfc00000:pmon.bin
这样就可以运行
PMON
了,上面的命令行意思是输出到
X
窗口,而代码
ROM
开始地址是
0xbfc00000
,也就是从那里取第一条指令。
在我的
LINUX
里可以编译通过
gxemul-0.4.2.current.tar.gz
,但运行它时,就不支持
-X
参数,这个问题我也没有搞清楚。