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

原文地址:https://www.cnblogs.com/liusiluandzhangkun/p/8993157.html