2、qq物联环境搭建
1.使用easyopenjtag、openjtag来烧写uboot
2.体验uboot
插讲《网络设置_ping问题解决_远程登录ssh_文件互传ftp》
192.168.1.183 windows系统的IP地址
192.168.1.184 ubuntu系统的IP地址
192.168.1.185 JZ2440开发板的IP地址
3.安装交叉编译工具链arm-linux-gcc
资源:arm-linux-gcc-4.3.2.tar.bz2
cd /work/tools/
sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /
修改/etc/environment 环境变量
修改成:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"
使环境变量生效
source /etc/environment
检查环境变量
echo $PATH
检查交叉编程工具链的版本
arm-linux-gcc -v
4.编译uboot
资源:
u-boot-1.1.6.tar.bz2
u-boot-1.1.6_20161226_all.patch
把这两个文件复制到/work/system目录
如下步骤:
cd /work/system
tar xjf u-boot-1.1.6.tar.bz2
cd u-boot-1.1.6/
patch -p1 < ../u-boot-1.1.6_20161226_all.patch
make 100ask24x0_config
make
5.编译linux内核
资源:
linux-3.4.2.tar.bz2
linux-3.4.2_20161226_all.patch
先把这两个文件复制到/work/system目录下
tar xjf linux-3.4.2.tar.bz2
cd linux-3.4.2/
patch -p1 < ../linux-3.4.2_20161226_all.patch
cp config_jz2440 .config
make uImage
6.使用已经制作好的根文件系统rootfs
资源:
fs_mini_mdev_new_auto_wifi.tar.bz2
注意:根文件系统rootfs位于nand flash,而不是位于nfs文件系统中。
sudo tar xjf fs_mini_mdev_new_auto_wifi.tar.bz2
mkyaffs2image fs_mini_mdev_new fs_mini_mdev_new.yaffs2
7.向开发板烧入uboot/kernel/rootfs
1)使用eop烧写uboot
//========================分区大小
输入print后:
mtdparts=mtdparts=nandflash0:512k@0(bootloader),128k(params),4m(kernel),-(root)
(上述设置的环境变量仅在uboot下有效)
Linux-3.4.2/arch/arm/mach-s3c24xx/common-smdk.c(内核下分区信息在该文件下定义)
Uboot 512K Easyopenjtag烧入nand flash
Uboot环境变量 128K
Kernel 4M Uboot中nfs下载,并烧入到nand flash
rootfs 剩余全部 Uboot中nfs下载,并烧入到nand flash
192.168.1.183 windows系统的IP地址
192.168.1.184 ubuntu系统的IP地址
192.168.1.185 JZ2440开发板的IP地址
//========================设置uboot的ip地址
setenv serverip 192.168.1.184
setenv ipaddr 192.168.1.185
saveenv
再使用print来查看
//========================设置和测试nfs服务器,
vi /etc/exports
加上“/work/nfs_root *(rw,sync,no_root_squash)”//会通过nfs挂载的目录
cat /etc/exports
复位nfs服务器
sudo service portmap restart
sudo /etc/init.d/nfs-kernel-server restart
测试nfs服务器能否本地挂载
sudo mount -t nfs localhost:/work/nfs_root /mnt
cd /mnt 切换mnt目录去查看相关内容
cd ~ ##返回到非/mnt目录,才能卸载挂载到/mnt上的文件系统
sudo umount /mnt
然后把内核复制/work/nfs_root
//========================下载、擦除、烧写内核
在uboot环境下:
nfs 30000000 192.168.1.184:/work/nfs_root/uImage
nand erase kernel
nand write.jffs2 30000000 kernel
//========================下载、擦除、烧写rootfs
在uboot环境下:
nfs 30000000 192.168.1.184:/work/nfs_root/fs_mini_mdev_new.yaffs2
nand erase root
nand write.yaffs 30000000 4a0000 $(filesize)
512*1024 =524288 =0x 80,000
128*1024 =131072 =0x 20,000
4*1024*1024=4194304=0x400,000
加起来就是0x4a0,000
//========================设置启动参数(这一步骤不用设置)
使用print来查看bootcmd和bootargs
setenv bootcmd nand read.jffs2 0x30007FC0 kernel \; bootm 0x30007FC0
setenv bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200
saveenv
//========================启动内核
boot
8.驱动的编译、安装和测试
1)网络驱动的测试
linux-3.4.2/drivers/net/ethernet/davicom/dm9dev9000c.c
已经将该网络驱动编译进内核。
//========================在开发板linux环境挂载nfs文件系统
mount -t nfs -o nolock 192.168.1.184:/work/nfs_root /mnt
2)led驱动
注意一下:
编译驱动模块的前提是:内核已经顺利编译通过。
mkdir -p /lib/modules/3.4.2
cp first_drv.ko /lib/modules/3.4.2/
insmod first_drv.ko
./firstdrvtest on
./firstdrvtest off
3)按键驱动
cp buttons.ko /lib/modules/3.4.2/
insmod buttons.ko
./buttons_test
4)LCD驱动
cp lcd.ko /lib/modules/3.4.2/
insmod lcd.ko
./fb_test /dev/fb0