龙芯软件开发(7) -- 编译PMON指南

编译PMON指南
蔡军生

为了学习怎么样开发龙芯的BIOS,也就是PMON。经历好几天深夜的探索,遇到各种各样的问题,后来又上论坛问到kkmao,总算解决了,在这里谢谢kkmao的帮忙。现在就把我的编译过程介绍一下。

一、下载SVN工具
由于要下载PMON代码,就要使用SVN工具。目前,所有的代码都是按版本控制形式保存在服务器上的,并且没有打包的代码,这样就需要使用SVN的工具来下载代码。如果在WINDOWS下,就要下载WINDOWS的SVN工具。如果在LINUX下,就需要下载LINUX的GETIT工具。

二、注册帐号
先到网站dev.lemote.com上面注册一个帐号,然后才能登录进入开发网站,否则不能登录进去的,由于目前没有开通诺名功能。注册帐号后,就可以登录网站dev.lemote.com,然后通过SVN的工具下载http://dev.lemote.com/svn/pmon-lm2e/branches/kkmao/分支的代码和文档。

三、安装交叉编译器
当你从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参数,这个问题我也没有搞清楚。

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License