龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 13960|回复: 19

编译PMON指南

  [复制链接]
发表于 2006-12-24 10:29:28 | 显示全部楼层 |阅读模式
编译PMON指南
蔡军生

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

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

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

三、        安装交叉编译器
当你从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参数,这个问题我也没有搞清楚。
发表于 2006-12-24 11:08:24 | 显示全部楼层
赞,兄弟真是积极阿,支持加精~

修正一下 git没有getit的别名

按照我的理解,工具链里面链接器找的c库路径是在硬编码的,并且是在编译交叉工具链的时候指定的,所以,一般来说工具链的解压缩位置不会改变的
发表于 2006-12-24 16:56:47 | 显示全部楼层
这个要顶.
发表于 2007-3-3 20:25:15 | 显示全部楼层
找不到mips-elf.tar.gz,去哪了/???
发表于 2007-3-3 23:04:22 | 显示全部楼层
发表于 2007-3-4 10:57:46 | 显示全部楼层
好东东
A
发表于 2007-3-5 01:30:45 | 显示全部楼层
学习中
发表于 2007-10-21 10:21:37 | 显示全部楼层
不知大侠在群里的QQ名是什么
发表于 2007-10-23 22:20:29 | 显示全部楼层
强烈抗议,,那个文件包解开后,没有Bonite.notebook,,只有与EV6420相关的文件
发表于 2008-8-1 14:59:16 | 显示全部楼层
我按照上面说的试了,不过没有成功。。。

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2019-9-16 08:03 , Processed in 0.197061 second(s), 19 queries .

快速回复 返回顶部 返回列表