拿到模块后,找到调试串口,这是第一步。
没有打印,无法进入linux console。不要紧,按ctrl+C,进入uboot操作界面。
设置为nfs引导:
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.8.10:/home/tftpboot/rootfs-diqi ip=192.168.8.11:192.168.8.10:192.168.8.1:255.255.255.0::eth0:off mtdparts=hi_sfc:512K(boot),5M(romfs),7424K(user),1536K(web),256K(custom),256K(logo),1280K(mtd)'
可以进去了!有打印了!
# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00010000 "boot"
mtd1: 00500000 00010000 "romfs"
mtd2: 00740000 00010000 "user"
mtd3: 00180000 00010000 "web"
mtd4: 00040000 00010000 "custom"
mtd5: 00040000 00010000 "logo"
mtd6: 00140000 00010000 "mtd"
# mount -o mand -t cramfs /dev/mtdblock1 /mnt/mtd
# ls /mnt/mtd/
bin etc linuxrc proc share tmp var
boot home mnt root slv usr
dev lib opt sbin sys utils
#
cramfs是只读文件系统,无法更改rcS。但rcS中有一句:
if [ -f /mnt/custom/extapp.sh ];then
/mnt/custom/extapp.sh &
fi
显然,这是留给客户扩展准备的。
[mtd1,mtd5]都是cramfs文件系统,mtd6即/mnt/mtd才是jffs2的可读写文件系统。
//=================================
# cat rcS
#! /bin/sh
/etc/init.d/dnode
udevd --daemon
udevstart
mount -t cramfs /dev/mtdblock2 /usr
mount -t cramfs /dev/mtdblock3 /mnt/web
mount -t cramfs /dev/mtdblock4 /mnt/custom
mount -t cramfs /dev/mtdblock5 /mnt/logo
mount -t jffs2 /dev/mtdblock6 /mnt/mtd
mount -t ramfs /dev/mem /var/
mkdir -p /var/tmp
mount -t ramfs /dev/mem2 /utils
mount -t usbfs usbfs /proc/bus/usb/
mount /usr/share/fonts /mnt/custom/data/Fonts
#openssl dgst -sign /usr/sbin/ec_key.pem -sha256 -out /mnt/mtd/licence.sign.file /mnt/mtd/tx_guid_file &
mkdir -p /mnt/mtd/Config /mnt/mtd/Log /mnt/mtd/Config/ppp /mnt/mtd/Config/Json
if [ -f /mnt/mtd/Config/ppp/3gdigal ]; then
chmod 777 /mnt/mtd/Config/ppp/3gdigal
fi
/usr/etc/loadmod
netinit
if [ -f /usr/lib/modules/extdrv/load3G.sh ];then
. /usr/lib/modules/extdrv/load3G.sh
fi
cp /usr/bin/upgraded /utils/ -f
/utils/upgraded &
ifconfig eth2 down
macGuarder &
sysinit &
wlandaemon &
searchIp &
dogtest &
route_switch &
if [ -f /mnt/mtd/Config/ppp/pppoe-start ];then
PPPOE_START=/mnt/mtd/Config/ppp/pppoe-start
else
PPPOE_START=/etc/ppp/pppoe-start
fi
/usr/bin/pppd pty $PPPOE_START file /etc/ppp/pppoe-options &
if [ -f /mnt/custom/extapp.sh ];then
/mnt/custom/extapp.sh & //这个是为用户自定义引导程序准备的,可以增加一个extapp.sh,在里面启动自己的程序。
fi
mkdir /dev/net
mknod /dev/net/tun c 10 200
#Vpn &
dvrHelper /lib/modules /usr/bin/Sofia 127.0.0.1 9578 1 &
#
# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00010000 "boot"
mtd1: 00500000 00010000 "romfs"
mtd2: 00740000 00010000 "user" //这个目录就是rootfs的/usr目录。有7M多字节,完全可以把自己的程序放进去。
mtd3: 00180000 00010000 "web"
mtd4: 00040000 00010000 "custom"
mtd5: 00040000 00010000 "logo"
mtd6: 00140000 00010000 "mtd" //放1 MB的程序进去,应该没有问题。
/usr/lib/下面的libdrv.so应该就是提供NetLib功能的库。
# ls libdvr.so -l
-rwxr-xr-x 1 root root 200148 Oct 24 2016 libdvr.so
# vi modules/extdrv/load3G.sh
#load 3G modules
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then
insmod /usr/lib/modules/extdrv/usb-storage.ko
fi
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then //这是个小小的bug吧?
insmod /usr/lib/modules/extdrv/usb_wwan.ko
fi
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then //这是个小小的bug吧?哈哈!
insmod /usr/lib/modules/extdrv/option.ko
fi
没有打印,无法进入linux console。不要紧,按ctrl+C,进入uboot操作界面。
设置为nfs引导:
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.8.10:/home/tftpboot/rootfs-diqi ip=192.168.8.11:192.168.8.10:192.168.8.1:255.255.255.0::eth0:off mtdparts=hi_sfc:512K(boot),5M(romfs),7424K(user),1536K(web),256K(custom),256K(logo),1280K(mtd)'
可以进去了!有打印了!
# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00010000 "boot"
mtd1: 00500000 00010000 "romfs"
mtd2: 00740000 00010000 "user"
mtd3: 00180000 00010000 "web"
mtd4: 00040000 00010000 "custom"
mtd5: 00040000 00010000 "logo"
mtd6: 00140000 00010000 "mtd"
# mount -o mand -t cramfs /dev/mtdblock1 /mnt/mtd
# ls /mnt/mtd/
bin etc linuxrc proc share tmp var
boot home mnt root slv usr
dev lib opt sbin sys utils
#
cramfs是只读文件系统,无法更改rcS。但rcS中有一句:
if [ -f /mnt/custom/extapp.sh ];then
/mnt/custom/extapp.sh &
fi
显然,这是留给客户扩展准备的。
[mtd1,mtd5]都是cramfs文件系统,mtd6即/mnt/mtd才是jffs2的可读写文件系统。
//=================================
# cat rcS
#! /bin/sh
/etc/init.d/dnode
udevd --daemon
udevstart
mount -t cramfs /dev/mtdblock2 /usr
mount -t cramfs /dev/mtdblock3 /mnt/web
mount -t cramfs /dev/mtdblock4 /mnt/custom
mount -t cramfs /dev/mtdblock5 /mnt/logo
mount -t jffs2 /dev/mtdblock6 /mnt/mtd
mount -t ramfs /dev/mem /var/
mkdir -p /var/tmp
mount -t ramfs /dev/mem2 /utils
mount -t usbfs usbfs /proc/bus/usb/
mount /usr/share/fonts /mnt/custom/data/Fonts
#openssl dgst -sign /usr/sbin/ec_key.pem -sha256 -out /mnt/mtd/licence.sign.file /mnt/mtd/tx_guid_file &
mkdir -p /mnt/mtd/Config /mnt/mtd/Log /mnt/mtd/Config/ppp /mnt/mtd/Config/Json
if [ -f /mnt/mtd/Config/ppp/3gdigal ]; then
chmod 777 /mnt/mtd/Config/ppp/3gdigal
fi
/usr/etc/loadmod
netinit
if [ -f /usr/lib/modules/extdrv/load3G.sh ];then
. /usr/lib/modules/extdrv/load3G.sh
fi
cp /usr/bin/upgraded /utils/ -f
/utils/upgraded &
ifconfig eth2 down
macGuarder &
sysinit &
wlandaemon &
searchIp &
dogtest &
route_switch &
if [ -f /mnt/mtd/Config/ppp/pppoe-start ];then
PPPOE_START=/mnt/mtd/Config/ppp/pppoe-start
else
PPPOE_START=/etc/ppp/pppoe-start
fi
/usr/bin/pppd pty $PPPOE_START file /etc/ppp/pppoe-options &
if [ -f /mnt/custom/extapp.sh ];then
/mnt/custom/extapp.sh & //这个是为用户自定义引导程序准备的,可以增加一个extapp.sh,在里面启动自己的程序。
fi
mkdir /dev/net
mknod /dev/net/tun c 10 200
#Vpn &
dvrHelper /lib/modules /usr/bin/Sofia 127.0.0.1 9578 1 &
#
# cat /proc/mtd
dev: size erasesize name
mtd0: 00080000 00010000 "boot"
mtd1: 00500000 00010000 "romfs"
mtd2: 00740000 00010000 "user" //这个目录就是rootfs的/usr目录。有7M多字节,完全可以把自己的程序放进去。
mtd3: 00180000 00010000 "web"
mtd4: 00040000 00010000 "custom"
mtd5: 00040000 00010000 "logo"
mtd6: 00140000 00010000 "mtd" //放1 MB的程序进去,应该没有问题。
/usr/lib/下面的libdrv.so应该就是提供NetLib功能的库。
# ls libdvr.so -l
-rwxr-xr-x 1 root root 200148 Oct 24 2016 libdvr.so
# vi modules/extdrv/load3G.sh
#load 3G modules
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then
insmod /usr/lib/modules/extdrv/usb-storage.ko
fi
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then //这是个小小的bug吧?
insmod /usr/lib/modules/extdrv/usb_wwan.ko
fi
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then //这是个小小的bug吧?哈哈!
insmod /usr/lib/modules/extdrv/option.ko
fi