2k1000 PMON编译及下载流程(ubuntu18.04)

2K1000是从sip flash启动的,pmon存在flsah前1M里

1.1 pmon相关资源

pmon源码获取
pmon:pmon
解压:

$ sudo tar -xvf pmon-loongson3-pai.tar.bz2

pmon工具链获取
工具链: gcc
解压:

$ sudo tar  -zxvf gcc-4.4-gnu.tar.gz  -C  /

解压完在系统的 /opt 目录下得到gcc-4.4-gnu,可以通过ls命令查看 ls /opt

1.2 pmon编译依赖工具安装

1)安装makedepand

$ sudo apt-get install xutils-dev 

2)安装pmoncfg

$ sudo apt-get install bison flex build-essential patch
$ cd pmon-loongson3-20200728/tools/pmoncfg   (pmon源码里)
$ make pmoncfg
$ sudo cp pmoncfg /usr/bin 

1.3 pmon 编译

Pmon采用交叉编译,在源码目录下创建编译脚本,如果已经有cmd.sh文件,直接进行步骤4执行编译。

操作如下:
1)在pmon源码pmon-loongson3-20200728目录下创建cmd.sh文件

$ sudo vim cmd.sh

2)将下面内容写到cmd.sh文件里

#!/bin/bash
cd zloader.ls2k
export PATH=/opt/gcc-4.4-gnu/bin/:$PATH
make cfg 
make all tgt=rom ARCH=mips CROSS_COMPILE=mipsel-linux- DEBUG=-g
make dtb

3)修改cmd.sh执行权限

$ sudo chmod 777 cmd.sh

4)编译pmon

$ sudo ./cmd.sh

问题:/bin/sh: 1: python: not found
解决:

sudo apt-get install python2.7
sudo ln -s /usr/bin/python2.7 /usr/bin/python

5)编译完成后在pmon源码目录下的zloader.ls2k/目录下生成gzrom-dtb.bin
如更改了配置文件Targets/LS2K/conf/ls2k, 则在编译前要执行make cfg, 使得更改生效,如果普通编译没有更改配置,则每次无需都执行make cfg命令。
执行make dtb 可以将dtb和gzrom.bin 结合生成gzrom-dtb.bin,此命令可以在上面编译完成后执行,dtb为设备树。

1.4 pmon 烧写

1)在线更新pmon,启动到pmon命令下

load -r -f 0xbfc00000 tftp://ip/gzrom-dtb.bin		 //网络更新
load -r -f 0xbfc00000 /dev/fs/fat@usb0/gzrom-dtb.bin //U盘更新

2)ejtag烧写pmon

ejtag安装

$ tar  zxvf  ejtag-debug-v3.25.9.tar.gz -C /opt/

ejtag烧写pmon(二进制文件为gzrom-dtb.bin)

$ cd /opt/ejtag-debug
$ sudo ./ejtag_debug_usb -t

ejtag里输入:

source configs/config.ls2k

在这里插入图片描述
板卡上电 (若设置开机按键,需要按下开机按键)
ejtag里输入set使系统停止运行,如果没有返回结果说明硬件异常:
在这里插入图片描述
ejtag里输入:

cpu0 -program_cachelock /路径/gzrom-dtb.bin

执行完program_cachelock命令,默认将/路径/gzrom.bin 烧录到芯片里。program_cachelock命令后可以放gzrom.bin的绝对路径,例如:program_cachelock /home/tftpboot/gzrom.bin

烧写完成后:

在这里插入图片描述

1.5 调试

参考链接:https://blog.csdn.net/tongxin1101124/article/details/113240099

ejtag中用到的命令

    硬件指令断点
    设置软件指令断点到addr: hb addr [ibm]
    删除addr上的指令断点: unhb addr [ibm]
    查看断点: hbls

    单步调试
    单步count次: si [count]
    取消单步: unsi

    暂定
    停住CPU命令:set

    继续执行
    继续执行命令:cont

pmon汇编代码 ejtag单步调试

    板卡先断电
    链接ejta、串口
    打开串口,波特率112500
    打开ejtag软件sudo ./ejtag_debug_usb -t
    a、执行:source configs/config.ls2k
    b、执行:loop -1 stop
    c、板卡上电 (2K1000上电后,需要按下开机按钮)
    d、执行:ctrl + c (目的打断loop -1 stop)
    e、执行:set
 

pmon汇编代码 ejtag单步调试

    板卡先断电
    链接ejta、串口
    打开串口,波特率112500
    打开ejtag软件sudo ./ejtag_debug_usb -t
    a、执行:source configs/config.ls2k
    b、执行:loop -1 stop
    c、板卡上电 (2K1000上电后,需要按下开机按钮)
    d、执行:ctrl + c (目的打断loop -1 stop)
    e、执行:set

备注:执行set后,可以看到 pc 值是0xffffffffbfc00004。龙芯处理器起始地址是:0xbfc00000

反汇编 gzrom
/opt/gcc-4.4-gnu/bin/mipsel-linux-objdump -d zloader.ls2k/gzrom > test.log

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值