龙芯派lite如何更新pmon

2020-05-11 11:29:17 浏览数 (1)

龙芯派lite如何更新pmon

1.文章说明

本文主要描述龙芯派lite的固件更新相关的原理。在使用龙芯派lite时,要很清楚的理解龙芯派的执行流程。

对于现有的更新方式,可以更新的方式有U盘,网络等等。

例如当使用U盘更新时,在启动Pmon后输入

代码语言:javascript复制
load -r -f 0xbfc00000 (usb0,0)/gzrom.bin

当然也可以通过设置网络更新方式

代码语言:javascript复制
load -r -f 0xbfc00000 http://www.xxx.xx/gzrom.bin

从tftp服务器上更新

代码语言:javascript复制
load -r -f 0xbfc00000 tftp://10.2.5.22/gzrom.bin

这两种办法本职上都是将固件烧录到了spi flash中。

需要注意的是,龙芯派lite上有两个型号都是GD25Q80的1MB大小的spi flash,其中存放pmon的在固态硬盘的下面,上面的一个是作为USB3.0使用的。

如果不小心更新pmon失败了,那么板子变砖了,该如何恢复?

此时就需要把下面的一个SPI flash用电络铁取下来,然后用烧录器进行烧录。

具体的项目地址,可以根据这个编译出龙芯派lite需要的pmon。

代码语言:javascript复制
https://github.com/FlyGoat/pmon-ls2k-edu

在release中可以下载已经编译好的固件。

然后用spi flash编程器,将flash.bin烧录到spi flash中,焊接到板子上,就可以正常启动pmon了。这是板子变砖后的情况,其实并不复杂,只需要弄清楚流程即可。

2.龙芯派lite的固件更新

前面我们说了pmon的更新,以及板子变砖后,如何恢复的办法,下面来讲一下龙芯派lite固件的更新情况。

当启动完成pmon后,通过控制台输入可以加载内核固件。

从U盘加载

代码语言:javascript复制
load /dev/fs/ext2@usb0/vmlinuxboot
load (usb0,0)/vmlinuxboot

从硬盘加载

代码语言:javascript复制
load /dev/fs/iso9660@wd0/boot/vmlinuxboot
load (wd0,0)/boot/vmlinuxboot

这两种写法都是可行的。

当然也可以从网络加载,前提是网络模块可以正常访问。

代码语言:javascript复制
load tftp://10.2.5.22/vmlinux

以上操作都是加载到内存中,下次断电后如果继续启动,那么就需要固化和设置pmon的启动环境变量。

用户可以通过设置龙芯派的al1来进行不同介质的启动

代码语言:javascript复制
set al1 /dev/fs/fat@wd0/rtthread.elf

表示从磁盘启动rt-thread。

或者从nand flash的第一个分区开始启动。

代码语言:javascript复制
devcp tftp://xxx.xxx.xx.xx/rtthread.elf /dev/mtd0

从TFTP中获取镜像,并且进行烧录到mtd0中。

然后设置

代码语言:javascript复制
set al1 /dev/mtd0

此时就可以正常的执行了。

3.关于龙芯派lite驱动部分

龙芯派在rt-thread已经有了基础版本的支持,如果要做驱动开发,一方面,可以从pmon中去进行代码分析,然后用于驱动部分的开发。

另外在https://github.com/RT-Thread/rt-thread/tree/master/bsp,rt-thread的相关的bsp包中已经有了ls2c,ls2b板级开发包的支持。部分驱动可以参考,基本上就是换一下寄存器地址即可。

0 人点赞