当前位置:   article > 正文

龙芯派教学

龙芯派

龙芯派教学

很多小伙伴拿到龙芯派后不知从何下手学习,一脸困惑,本文将解决小伙伴的遇到的困惑。龙芯派默认安装loongxin系统,开机后自动启动到系统下,此时龙芯派可以理解成一台pc机,连接上屏幕、鼠标、键盘就可以在桌面下办公。但很多小伙伴想从“零”开始学习龙芯派,接下来带领大家熟悉龙芯派整个开发流程

友情提示:高手请跳过

龙芯派软件由:pmon、内核、文件系统组成
框架
龙芯派是从sip flash启动的,pmon存在flsah前1M里

一、pmon

1.1 pmon相关资源

1)pmon源码获取
pmon:http://ftp.loongnix.cn/loongsonpi/pi_2/source/
解压:

$ sudo tar -xvf pmon-loongson3-pai.tar.gz
  • 1

2)pmon工具链获取
工具链: http://ftp.loongnix.cn/loongsonpi/pi_2/toolchain/gcc-4.4-gnu.tar.gz
解压:

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

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

1.2 pmon编译依赖工具安装

1)安装makedepand

$ sudo apt-get install xutils-dev 
  • 1

2)安装pmoncfg

$ sudo apt-get install bison flex build-essential patch
$ cd pmon-loongson3/tools/pmoncfg   (pmon源码里)
$ make pmoncfg
$ sudo cp pmoncfg /usr/bin 
  • 1
  • 2
  • 3
  • 4
1.3 pmon 编译

Pmon采用交叉编译,在源码目录下创建编译脚本,操作如下:
1)在pmon源码pmon-loongson3目录下创建cmd.sh文件

$ sudo vim cmd.sh
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3)修改cmd.sh执行权限

$ sudo chmod 777 cmd.sh
  • 1

4)编译pmon

$ sudo ./cmd.sh
  • 1

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盘更新
  • 1
  • 2

2)ejtag烧写pmon
① linux系统下使用简介
a、ejtag软件下载
网址:ftp://ftp.loongnix.cnembedd/ls1b/ejtag/打开上面的网址下载以ejtag-debug-v×××开头ejtag最新的软件版本,当前最新版本为:ejtag-debug-v3.25.9.tar.gz
如果不能下载,直接联系龙芯技术人员获取!!!
b、ejtag安装
命令:

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

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

$ cd /opt/ejtag-debug
$ sudo ./ejtag_debug_usb -t
  • 1
  • 2

ejtag里输入:

cpu0 -source configs/config.ls2k
在这里插入图片描述

ejtag里输入:

cpu0 -loop -1 stop
给板卡上电,开机后
ctrl + c 打断
在这里插入图片描述

ejtag里输入:

jtagregs d8 1 1
在这里插入图片描述

注:jtagregs d8 1 1读处理器的ejtag id寄存器,如果是0x20010819或者0x5a5a5a5a都说明连接正确,如果不是则硬件有问题。

ejtag里输入:

program_cachelock /home/tftpboot/gzrom-dtb.bin
在这里插入图片描述

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

② Win系统下使用简介
a、ejtag软件(本人仅验证过win7和XP系统)
网址:ftp://ftp.loongnix.cn/embedd/ls1b/ejtag/old/打开上面的网址下载以ejtag-debug-cygwin×××开头ejtag最新的软件版本,当前最新版本为:ejtag-debug-cygwin-v3.25.9.zip
如果不能下载,直接联系龙芯技术人员获取!!!
b、驱动安装 注:pwd代表任何位置
ejtag-debug-cygwin-v3.25.9.zip解压到pwd,将ejtag与pc端链接好,此时在设备管理器里看到未知设备,点击未知设备更新,手动更新路径为pwd,操作流程:
在这里插入图片描述
在这里插入图片描述
备注:路径位pwd/ejtag-debug-cygwin
在这里插入图片描述在这里插入图片描述在这里插入图片描述c、烧录写流程
把烧录的gzrom-dtb.bin拷贝到ejtag-debug-cygwin-v3.25.9.zip解压后目录内,将ejtag连接到pc上,另一端连接到龙芯派模块上,进入ejtag-debug-cygwin,双击可执行文件ejtag_debug_usb.exe出现一个命令行终端,如图:
在这里插入图片描述烧写gzrom-dtb.bin方式和linux下操作一样,输入gzrom-dtb.bin 绝对路径,program_cachelock ./gzrom-dtb.bin
如果烧写成功,则最后会返回命令提示符cpu0-;否则烧写失败,请重新检查连接情况。

二、内核

2.1 内核相关资源

1)内核源码获取
内核:http://ftp.loongnix.cn/embedd/ls2k/linux-3.10.tar.gz
解压:

$ sudo tar -zxvf linux-3.10.tar.gz
  • 1

2)工具链获取
工具链:http://ftp.loongnix.cn/loongsonpi/pi_2/toolchain/gcc-4.9.3-64-gnu .tar.gz
http://ftp.loongnix.cn/embedd/ls3a/toolchain/gcc-4.9.3-64-gnu.tar.gz

解压:

$ sudo tar  -zxvf  gcc-4.9.3-64-gnu.tar.gz  -C  /
  • 1

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

2.2 内核编译依赖工具安装

在ubuntu上交叉编译之前需要安装以下库文件:

$ sudo apt-get install -y bison flex
$ sudo apt-get install libncurses5-dev
  • 1
  • 2
2.3 内核配置与编译

1)内核配置

cd linux-3.10
cp arch/mips/configs/loongson2k_defconfig  .config
./mymake menuconfig  可以对内核进行图形化配置
  • 1
  • 2
  • 3

2)内核编译

./mymake vmlinuz
  • 1
2.4 内核和文件系统

开发时有需要将内核与文件系统编译到一起,有时需要分开。在内核配置里操作如下:
1)内核和文件系统编译到一起
使用ramdisk文件系统启动内核后,会在内存中形成一个根文件系统,这需要在编译内核时,告诉内核根文件系统所在的目录,把根文件系统编译到内核中。
下面的步骤是如何把根文件系统编译到内核中:
a、内核源码目录下执行 ./mymake menuconfig
用上下键选择General setup —>,执行过上述操作后
在这里插入图片描述蓝色停留在上图位置按 Enter 键进入该选项,并用上下键按照下图所示选择:
在这里插入图片描述黑色选中为[*],蓝色停留在上图位置,单击 Enter 键,输入文件系统的绝对路径,假设文件系统的绝对路径为/home/rootfs/,执行上述步骤后,如下图所示:
在这里插入图片描述
然后保存退出,并通过命令 ./mymake vmlinuz 编译内核。

2)内核和文件系统分开
在这里插入图片描述蓝色位置,括号里为空即可,然后保存退出,并通过命令 ./mymake vmlinuz 编译内核。

三、文件系统

3.1 现成文件系统

文件系统:http://ftp.loongnix.cn/loongsonpi/pi_2/source/ramdisk_2.tar.gz
http://ftp.loongnix.cn/embedd/ls2k/rootfs.cpio.gz
解压:

$ sudo tar -zxvf ramdisk_2.tar.gz   
  • 1

注:文件系统是ramdisk_2,如果想与内核编译到一起,配置填写的路径则是ramdisk_2目录的绝对路径

3.2 buildroot

一般文件系统都要包含很多第三方软件,比如busybox,tftp,apache,PHP,DNS,qt等等,为了避免繁琐的移植工作,buildroot应运而生,通过menuconfig来配置我们需要的功能,不需要的去掉,再执行make编译,buildroot就会自动从指定的服务器上下载源码包,自动编译,自动搭建成我们所需要的嵌入式文件系统。
1)buildroo源码获取
http://ftp.loongnix.cn/embedd/ls2h/buildroot/buildroot.tar.gz
解压:

$ sudo tar -xvf buildroot.tar.gz 
  • 1

2)buildroo编译
在buildroot的顶层目录下写个cmd.sh编译的脚本文件,内容如下:

$ cd  buildroot
$ vim cmd.sh
  • 1
  • 2

在这里插入图片描述

$ chmod 777  cmd.sh
$ cp configs/ls2k_docker-gcc-4.9.3.config   .config
  • 1
  • 2

执行make menuconfig开始配置buildroot:
当前配置是ls2k_docker-gcc-4.9.3.config的默认配置,所以不需要修改,保存推出即可。

执行./cmd.sh开始编译,buildroot编译需要连网,编译完成后,结果在output/target目录里。

$ cd  output/target
$ find  . | cpio  -o  -H  newc > rootfs.cpio
$ gzip  -c  rootfs > rootfs.cpio.gz 
  • 1
  • 2
  • 3

四、更换内核与文件系统

4.1 在loongnix系统基础上添加启动项

1)从电脑上将内核和文件系统拷贝到U盘里

① cp  vmlinuz    u盘
② cp  rootfs.cpio.gz	u盘
  • 1
  • 2

2)将龙芯派启动到系统下后,打开终端,执行

① $ sudo  cd  /boot
② $ sudo  cp  u盘/vmlinuz  /boot
③ $ sudo  cp  u盘/rootfs.cpio.gz  /boot
  • 1
  • 2
  • 3

④ 修改/boot目录下的boot.cfg文件

$ sudo  vim  boot.cfg
  • 1

在第四行后添加如下内容:

title loongson ls2k pai test
	kernel (wd0,0)/vmlinuz
	initrd (wd0,0)/rootfs.cpio.gz
	args console=ttyS0,115200 console=tty
  • 1
  • 2
  • 3
  • 4

保存退出
⑤ 重启reboot

4.2 不要loongnix系统,硬盘里只有内核和文件系统

1)将内核和文件放到ssd盘里准备工作
① vmlinuz-ramdisk 带文件系统 (在内核配置里添上文件系统,编译内核生成的vmlinuz,将vmlinuz修改名称为vmlinuz-ramdisk防止混交)
② vmlinuz 不带文件系统 (内核配置里去掉文件系统配置,编译内核生成vmlinuz)
③ 文件系统rootfs.cpio.gz (从ftp网址获取)
2)准备boot文件夹
① 创建一个文件夹,起名为boot
② 将vmlinuz和rootfs.cpio.gz拷贝到boot目录下
③ 在boot目录下创建文件boot.cfg,boot.cfg里内容如下

timeout 5
default 0
showmenu 1

title kernel or fs on ssd
	kernel /dev/fs/ext2@wd0/boot/vmlinuz
	initrd /dev/fs/est2@wd0/boot/rootfs.cpio.gz
	args console=tty console=ttyS0,115200
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3)启动到pmon命令行下(启动时按C即可进入pmon 命令行下)

① load tftp://ip/vmlinuz-ramdisk           //网络加载
 或 load /dev/fs/fat@usb0/vmlinuz-ramdisk    //u盘加载,上电前将U盘插到板卡
② g console=ttyS0,115200 rdinit=/sbin/init
  • 1
  • 2
  • 3

4)启动到内核下
假如ssd硬盘盘符是/dev/sda
① 使用fdisk命令对硬盘分区(存放内核只能放到第一分区里,否则pmon找不到)

$ fdisk  /dev/sda
  • 1

② 使用mkfs.ext2 对/dev/sda0格式化

$ mkfs.ext2  /dev/sda0
  • 1

③ 挂载/dev/sda0分区

mount /dev/sda0  /mnt/
  • 1

④ 将boot文件夹从U盘拷贝到mnt目录下 (u盘也需要手动挂载)

$ cp  “u盘/boot”  /mnt  -ad
$ sync
  • 1
  • 2

⑤ 拷贝完成后卸载硬盘和u盘

umount /mnt/
  • 1

⑥ 拔掉u盘后重启

reboot
  • 1

备注:因为pmon下只能对ssd盘进行读取,不能写入数据,所以往ssd盘里写数据必须先启动一个带文件系统的内核镜像,然后启动到内核下再对ssd盘操作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/220923
推荐阅读
相关标签
  

闽ICP备14008679号