龙芯派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板级开发包的支持。部分驱动可以参考,基本上就是换一下寄存器地址即可。