龙芯ls1b开发板 基础操作

一、 工具链

1、工具链获取
pmon与kernel使用同一个工具链:gcc-4.3-ls232
http://ftp.loongnix.org/embedd/ls1b/toolchain/
备注:如果上面网址不能访问,可以尝试访问:http://ftp.loongnix.org 网址

2、操作流程
a、工具链gcc-4.3-ls232.tar.gz解压,操作如下

tar  zxvf gcc-4.3-ls232.tar.gz  -C  /

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

ls  /opt

二、PMON

1、源码获取
http://ftp.loongnix.org/embedd/ls1b/bootloader/

2、工具与依赖库安装
安装方式:
要求 PC 机连接有互联网,使用 apt-get(ubuntu 系统)命令来安装
2.1编译 PMON 过程需要使用到工具 pmoncfg,制作过程如下
A、apt-get install bison build-essential patch flex
B、解压pmon.tar.gz源码

tar xzvf pmon.tar.gz
cd pmon
cd tools/pmoncfg
make

C、编译完成会在目录下生成 pmoncfg,拷贝该工具至用户工具目录下

cp pmoncfg /usr/bin/

2.2编译pmon还依赖于工具 makedepend

apt-get install xutils-dev

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

touch cmd.sh

B、将下面内容写到cmd.sh文件里

#!/bin/bash
export PATH=/opt/gcc-4.3-ls232/bin:$PATH
cd zloader.ls1b
make cfg
make all tgt=rom CROSS_COMPILE=mipsel-linux- DEBUG=-g

C、修改cmd.sh执行权限

chmod 777 cmd.sh

D、编译pmon

./cmd.sh

E、编译完成后在pmon源码目录下的zloader.ls1b/目录下生成gzrom.bin

4、pmon更新
4.1 ejtag烧写pmon
ejtag驱动获取
http://ftp.loongnix.org/embedd/ls1b/ejtag/
备注:linux系统:ejtag-debug-v3.xx.x.tar.gz
win7与xp系统:ejtag-debug-cygwin-v3.xx.x.zip
打开上面的网址下载以ejtag-debug-x×××开头ejtag最新的软件版本
当前linux最新版本为:ejtag-debug-v3.25.9.tar.gz
当前win7与xp最新版本为:ejtag-debug-cygwin-v3.25.9.zip

这里只介绍linux系统下使用简介:
将下载ejtag-debug-v3.25.9.tar.gz解压到/opt/目录下

tar  zxvf  ejtag-debug-v3.25.6.tar.gz -C /opt/
cd /opt/ejtag-debug
sudo ./ejtag_debug_usb -t
source configs/config.ls1b
program_cachelock

注:执行完program_cachelock命令,默认将/tmp/目录下的gzrom.bin 烧录到芯片里
program_cachelock命令后可以放gzrom.bin的绝对路径
例如:program_cachelock /home/tftpboot/gzrom.bin
4.2 pmon命令行下更新pmon
A、网络更新
load -f 0xbfc00000 -r tftp://10.0.0.1/gzrom.bin
B、U盘更新
load -f 0xbfc00000 -r /dev/fs/fat@usb0/gzrom.bin
load -f 0xbfc00000 -r /dev/fs/ext2@usb0/gzrom.bin

5、pmon中添加 xx.c 文件
关于在pmon中加入 *.c 文件,在pmon的目录中有两个文件分别为: conf/files 、 Targets/LS1B/conf/files.LS1B。当pmon被编译时,以这两个文件为基础把相应的 *.c 文件编译成 *.o 文件,这两个文件的主要区别是:Targets/LS1B/conf/files.LS1B 依赖于不同的龙芯 CPU,CPU 不同该文件的内容就可能不同;conf/files是整个pmon所依赖的,比如ext2文件系统,所有的pmon都用相同的ext2文件系统。当然需要强调的是你加入的 *.c 文件必须被其他函数直接或间接的调用的。假如设备的驱动文件为 xxx.c该文件中有一个设备的初始化函数 xxx_init(),假如该文件的路径:Targets/LS1B/ls1b/xxx.c并且可以根据配置来决定是否加载该驱动,需要操作步骤:Targets/LS1B/ls1b/tgt_machdep.c文件的函数 initmips(unsigned int memsz)中调用该函数。
如果编译时报错找不到该函数,因为该文件没有被编译成 *.o 需要在conf/files 或 Targets/LS1B/conf/files.LS1B (二者任选其一)中加入:
file Targets/LS1B/ls1b/xxx.c (这里选Targets/LS1B/conf/files.LS1B )
假如希望通过配置移除该文件,需要在 Targets/LS1B/conf/ls1b 中加入:
select xxx
上面的添加内容也许要修改:
file Targets/LS1B/ls1b/xxx.c xxx
当然需要把调用 xxx_init() 的地方注释掉,由于加入的该 *.c 文件是与 CPU 的种类有关,所以在 Targets/LS1B/conf/files.LS1B 中加入,若加入的内容被不同的 CPU 使用,可以考虑在 conf/files 中加入。

6、pmon常用命令
帮助
h 列出所有命令 例如:查看ping命令帮助信息 h ping
调试
d1/d2/d4 读取某地址值 例如:d4 0x80300000
m1/m2/m4 向某地址写值 例如:m4 0x80300000 0xa
内存
load 加载vmlinux到内存 例如:load tftp://ip/vmlinux
更新gzrom.bin load -r -f 0xbfc00000 tftp://ip/gzrom.bin
网络
ifaddr 设置板的 ip 地址(只当次有效,断电后会丢失) 例如:ifaddr syn0 10.50.1.10
ifconfig 查看设置 ip 地址信息 例如:ifconfig syn0
ping 测试网络 例如:ping 10.50.1.100
env 查看已设置的环境变量
set 设置环境变量 例如:set bootdelay 10
unset 取消设置的环境变量 例如:unset bootdelay
ifconfig 设置板的 ip 地址(断电后不丢失) 例如:set ifconfig syn0: 10.50.1.10
flash操作
mtdparts 查看分区情况 例如:mtdparts
mtd_erase 擦除分区 例如:mtd_erase /dev/mtd1
devcp 写数据到分区 例如:devcp date /dev/mtd1
其他
devls 查看设备列表
reboot 重启

三、内核

1、源码获取
内核版本为:linux-2.6.32
http://ftp.loongnix.org/embedd/ls1b/kernel/

2、kernel配置
下载内核源码linux-2.6.32.tar.gz解压,操作流程如下

tar -zxvf linux-2.6.32.tar.gz
cd linux-2.6.32/
cp config.ls1b .config
make menuconfig ARCH=mips

安装图形化配置“make menuconfig”依赖的工具 Ncurses:

apt-get install libncurses5-dev

3、kernel编译
kernel采用交叉编译,在源码目录下创建编译脚本,操作如下
A、在linux-2.6.32源码目录下创建cmd.sh文件

touch cmd.sh

B、将下面内容写到cmd.sh文件里

#!/bin/bash
export PATH=/opt/gcc-4.3-ls232/bin:$PATH
make ARCH=mips CROSS_COMPILE=mipsel-linux-  -j2  vmlinux 
mipsel-linux-strip vmlinux 

C、修改cmd.sh执行权限

chmod 777 cmd.sh

D、编译kernel

./cmd.sh

E、编译完成后在linux-2.6.32源码目录下生成vmlinux

4、加载vmlinux
4.1设置自启动
采用 ramdisk 方式
A、启动到pmon命令行下,通过tftp或者U盘将内核放到指定分区里
PMON> mtd_erase /dev/mtd0r
PMON> devcp tftp://ip/vmlinux /dev/mtd0
B、设置环境变量
PMON> set al /dev/mtd0
PMON> set append “console=ttyS0,115200 rdinit=/sbin/init”
C、重新上电
采用 yaffs2 根文件系统
A、启动到pmon命令行下,通过tftp或者U盘将内核放到指定分区里
PMON> mtd_erase /dev/mtd0r
PMON> devcp tftp://ip/vmlinux /dev/mtd0
B、将yaffs2文件系统镜像rootfs.img放到指定分区里
PMON> mtd_erase /dev/mtd1r
PMON> devcp tftp://ip/rootfs.img /dev/mtd1y
C、设置环境变量
PMON> set al /dev/mtd0
PMON> set append “console=ttyS0,115200 init=/linuxrc rw root=/dev/mtdblock1 rootfstype=yaffs2”
D、重新上电
4.2加载到内存启动
启动pmon命令行下,通过tftp或者U盘将内核加载到内存里
PMON> load tftp://ip/vmlinux
PMON> g console=ttyS0,115200 rdinit=/sbin/init

LS1B 用户手册 http://www.loongson.cn/product/cpu/1/Loongson1B.html

你可能感兴趣的:(龙芯)