pmon:
编译:
cd zloader.ls1b
bin 格式
make cfg all tgt=rom
elf 格式
make cfg all tgt=ram
在当前目录下生成 gzrom.bin
烧pmon 到 nor flash:
pmon> load -r -f bfc00000 tftp://192.168.1.167/gzrom.bin
filesys(烧文件系统到nand flash):
cramfs:
pmon> devcp tftp://192.168.1.100/rfs1b.img /dev/mtd0
pmon> set append "console=ttyS4,115200 root=/dev/mtdblock1"
yaffs2:
pmon> devcp tftp://192.168.1.100/rfs_y.img /dev/mtd1 yaf
pmon> set append "console=ttyS4,115200 root=/dev/mtdblock1 rw rootfstype=yaffs2 init=/sbin/init"
注意:rfs_y.img 必须所有用户可读写的权限,否则会提示 nand erase等错误
nfs:
pmon> set append 'root=/dev/nfs rw nfsroot=192.168.1.167:/nfs noinitrd init=/linuxrc console=ttyS0,115200 ip=192.168.1.90:::::eth0:off'
4.3'的LCD
set append 'root=/dev/nfs rw nfsroot=192.168.1.167:/nfs noinitrd init=/linuxrc video=ls1bfb:800x480-16@70 console=ttyS0,115200 ip=192.168.1.90:::::eth0:off'
7'的LCD
PMON> set xres "800"
PMON> set yres "480"
PMON> set append "root=/dev/mtdblock1 console=ttyS0,115200 init=/linuxrc video=ls1bfb:800x480-16@60"
yaffs2:
set append "root=/dev/mtdblock1 console=ttyS0,115200 init=/linuxrc rw rootfstype=yaffs2 video=ls1bfb:800x480-16@60"
nfs:
set append 'root=/dev/nfs rw nfsroot=192.168.1.188:/nfs noinitrd init=/linuxrc video=ls1bfb:800x480-16@60 console=ttyS0,115200 ip=192.168.1.90:::::eth0:off'
ramdisk:
append = "console=ttyS0,115200 console=tty rdinit=/linuxrc"
vga:
set append "console=ttyS0,115200 console=tty rdinit=/linuxrc video=ls1bfb:1440x900-16@60"
用 ejtag(需在root 用户下使用):
烧写内核(烧写内核时板子要停在pmon的输入状态):
# ./ejtag_debug_usb
-set
-q
# ./ejtag_debug_usb
-putelf vmlinux
-karg console=ttyS0,115200 console=tty rdinit=/linuxrc
-cont
-q
烧写pmon:
./ejtag_debug_usb
在板上用tftp
下载文件:
tftp -r libasound.so.2.0.0 -g 192.168.1.100
上传文件:
tftp -p 192.168.1.100 -l libasound.so.2.0.0
查看分区
PMON> load /dev/mtd
擦除分区
pmon> mtd_erase /dev/mtd1
修改内核分区
$ vi arch/mips/loongson/sb2f-board/platform.c
修改分区
$ vi sys/dev/nand/ls1g-nand.c
通过pmon调CPU的主频:
$ vim Targets/LS1B/ls1b/start.S
282 #ifdef LS1ASOC/* to adjust the DDR frequency */
283 li a0, 0xbfe78030
284 #define DDRCFG_DATA (0x8888|(CPU_MULT-1)|((DDR_MULT-3)<<8))
285 li a1, DDRCFG_DATA // 1fboard 25MHz
286 sw a1, 0x0(a0)
287 nop
288 #else
289 li a0, 0xbfe78030
290 /*31:dc_div_en,30-26:dc_div,25:cpu_div_en,24-20:cpu_div,19:ddr_div_en,18-14:ddr_div*/
291 li v1, (1<<31)|(4<<26)|(1<<25)|(2<<20)|(1<<19)|(4<<14)|0x2a00
292 sw v1, 4(a0)
293 li a1,0x11 //调整此值
294 sw a1, (a0);
295 1:
296 lw v1, (a0)
297 bne a1, v1, 1b
298 nop
299 #endif
ejtag:
# ./ejtag_debug_usb //测试是否可
-set //下面会列出一些寄存器的值
-q //正常之后退出
# ./ejtag_debug_usb < config-sst.pmon //先把编译好的gzrom.bin 复制到此,因为config-sst.pmon 指定了名字
注意需使用ejtag_debug_usb需在 root 用户下
打开7' 屏的LCD背光
# vi pmon/Targets/LS1B/ls1b/dc.c
358 //背光使能
359 *(volatile int *)0xbfd010c0 |= 0x01; //GPIO0使能
360 *(volatile int *)0xbfd010d0 &= ~(0x01); //GPIO0输出使能
361 *(volatile int *)0xbfd010f0 |= 0x01; //GPIO0输出1 使能LCD背光
debug
# ./strace //执行一系列可执行文件时(编译为静态库的除外)
-/bin/sh: ./strace: not found
解决方法:
造成这个错误的原因是没有链接器,复制 ld.so 到 /lib 下即可
/ # mount -t vfat /dev/sda1 /mnt/
FAT: IO charset iso8859-1 not found
mount: mounting /dev/sda1 on /mnt/ failed: Invalid argument
添加iso8859-1 语言支持
udhcpc 配置
内核中将 Packet socket和IP: DHCP support编译进内核或编译成模块。在编译Busybox时把 Networking Utilities下udhcp Server/Client中的 udhcp Client (udhcpc)选上。
关键点要把examples/udhcp/simple.script 脚本文件做为default.script拷贝到/usr/share/udhcpc/default.script
运行udhcpc 即可
测试网络:
1. iptraf
wget 2>/dev/null &
iptraf
2. iperf
TCP:
server(pc): iperf -s -i 1
client(ls1b): iperf -t 20 -i 1 -c 192.168.1.167 (pc-ip)
UDP:
server:iperf -u -s -i 1
client:iperf -t 10 -i 1 -u -b 1000M -c 192.168.1.90
编译内核时2.6.21.5 (make (该配置内置了initramfs 文件系统),第一次make 成功, 但是此后再也不行了!make , make clean 等后都会出错):
# make
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CHK include/linux/compile.h
/home/work/bsp_1b/linux-kernel/usr/Makefile:49: *** multiple target patterns. Stop.
make: *** [usr] Error 2
解决方法:
# make -d //会列出详细信息,下面就最后的一信息
Reading makefile `/home/work/kenrel/1b-linux-bsp-5542fd5/usr/Makefile' (search path) (no ~ expansion)...
Reading makefile `usr/.initramfs_data.cpio.gz.d' (search path) (no ~ expansion)...
/home/work/kenrel/1b-linux-bsp-5542fd5/usr/Makefile:49: *** multiple target patterns. Stop.
Reaping losing child 0x09b1ecb8 PID 25934
make: *** [usr] Error 2
# rm usr/.initramfs_data.cpio.gz.d
# make //就好了
阅读(2035) | 评论(0) | 转发(0) |