赞
踩
很多小伙伴拿到龙芯派后不知从何下手学习,一脸困惑,本文将解决小伙伴的遇到的困惑。龙芯派默认安装loongxin系统,开机后自动启动到系统下,此时龙芯派可以理解成一台pc机,连接上屏幕、鼠标、键盘就可以在桌面下办公。但很多小伙伴想从“零”开始学习龙芯派,接下来带领大家熟悉龙芯派整个开发流程。
友情提示:高手请跳过
龙芯派软件由:pmon、内核、文件系统组成
龙芯派是从sip flash启动的,pmon存在flsah前1M里
1)pmon源码获取
pmon:http://ftp.loongnix.cn/loongsonpi/pi_2/source/
解压:
$ sudo tar -xvf pmon-loongson3-pai.tar.gz
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 /
解压完在系统的 /opt 目录下得到gcc-4.4-gnu,可以通过ls命令查看 ls /opt
1)安装makedepand
$ sudo apt-get install xutils-dev
2)安装pmoncfg
$ sudo apt-get install bison flex build-essential patch
$ cd pmon-loongson3/tools/pmoncfg (pmon源码里)
$ make pmoncfg
$ sudo cp pmoncfg /usr/bin
Pmon采用交叉编译,在源码目录下创建编译脚本,操作如下:
1)在pmon源码pmon-loongson3目录下创建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
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)在线更新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
① 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/
b、ejtag烧写pmon(二进制文件为gzrom-dtb.bin)
$ cd /opt/ejtag-debug
$ sudo ./ejtag_debug_usb -t
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-;否则烧写失败,请重新检查连接情况。
1)内核源码获取
内核:http://ftp.loongnix.cn/embedd/ls2k/linux-3.10.tar.gz
解压:
$ sudo tar -zxvf linux-3.10.tar.gz
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 /
解压完在系统的 /opt 目录下得到gcc-4.9.3-64-gnu,可以通过ls命令查看 ls /opt
在ubuntu上交叉编译之前需要安装以下库文件:
$ sudo apt-get install -y bison flex
$ sudo apt-get install libncurses5-dev
1)内核配置
cd linux-3.10
cp arch/mips/configs/loongson2k_defconfig .config
./mymake menuconfig 可以对内核进行图形化配置
2)内核编译
./mymake vmlinuz
开发时有需要将内核与文件系统编译到一起,有时需要分开。在内核配置里操作如下:
1)内核和文件系统编译到一起
使用ramdisk文件系统启动内核后,会在内存中形成一个根文件系统,这需要在编译内核时,告诉内核根文件系统所在的目录,把根文件系统编译到内核中。
下面的步骤是如何把根文件系统编译到内核中:
a、内核源码目录下执行 ./mymake menuconfig
用上下键选择General setup —>,执行过上述操作后
蓝色停留在上图位置按 Enter 键进入该选项,并用上下键按照下图所示选择:
黑色选中为[*],蓝色停留在上图位置,单击 Enter 键,输入文件系统的绝对路径,假设文件系统的绝对路径为/home/rootfs/,执行上述步骤后,如下图所示:
然后保存退出,并通过命令 ./mymake vmlinuz 编译内核。
2)内核和文件系统分开
蓝色位置,括号里为空即可,然后保存退出,并通过命令 ./mymake vmlinuz 编译内核。
文件系统: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
注:文件系统是ramdisk_2,如果想与内核编译到一起,配置填写的路径则是ramdisk_2目录的绝对路径
一般文件系统都要包含很多第三方软件,比如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
2)buildroo编译
在buildroot的顶层目录下写个cmd.sh编译的脚本文件,内容如下:
$ cd buildroot
$ vim cmd.sh
$ chmod 777 cmd.sh
$ cp configs/ls2k_docker-gcc-4.9.3.config .config
执行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)从电脑上将内核和文件系统拷贝到U盘里
① cp vmlinuz u盘
② cp rootfs.cpio.gz u盘
2)将龙芯派启动到系统下后,打开终端,执行
① $ sudo cd /boot
② $ sudo cp u盘/vmlinuz /boot
③ $ sudo cp u盘/rootfs.cpio.gz /boot
④ 修改/boot目录下的boot.cfg文件
$ sudo vim boot.cfg
在第四行后添加如下内容:
title loongson ls2k pai test
kernel (wd0,0)/vmlinuz
initrd (wd0,0)/rootfs.cpio.gz
args console=ttyS0,115200 console=tty
保存退出
⑤ 重启reboot
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
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
4)启动到内核下
假如ssd硬盘盘符是/dev/sda
① 使用fdisk命令对硬盘分区(存放内核只能放到第一分区里,否则pmon找不到)
$ fdisk /dev/sda
② 使用mkfs.ext2 对/dev/sda0格式化
$ mkfs.ext2 /dev/sda0
③ 挂载/dev/sda0分区
mount /dev/sda0 /mnt/
④ 将boot文件夹从U盘拷贝到mnt目录下 (u盘也需要手动挂载)
$ cp “u盘/boot” /mnt -ad
$ sync
⑤ 拷贝完成后卸载硬盘和u盘
umount /mnt/
⑥ 拔掉u盘后重启
reboot
备注:因为pmon下只能对ssd盘进行读取,不能写入数据,所以往ssd盘里写数据必须先启动一个带文件系统的内核镜像,然后启动到内核下再对ssd盘操作。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。