Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1557363
  • 博文数量: 290
  • 博客积分: 3468
  • 博客等级: 中校
  • 技术积分: 3461
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-28 22:21
文章分类

全部博文(290)

文章存档

2016年(13)

2015年(3)

2014年(42)

2013年(67)

2012年(90)

2011年(75)

分类: 嵌入式

2011-12-01 22:14:41

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  //就好了
阅读(2026) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~