ubuntu12.04下 linux 开发环境的搭建 2

原创作品:http://write.blog.csdn.net/postedit/7956383    

欢迎大家一起交流学习,知识在与分享。

希望结交一些志同道和之士 

QQ: 474530676

longguopeng168@163.com


    

linux 开发环境的搭建 2

   

平台:虚拟机 和 ubuntu12.04 和 up6410开发板


虚拟机 pc机 开发板 要在同一个网段
先在pc机下装好串口驱动 


老师资料存放在根目录下 /home/up6410 文件夹下


虚拟机下操作:


//  安装编译器:


1. [root@longguopeng:/#] mkdir /usr/local/arm
[root@longguopeng:/#] tar -jvxf /home/up6410/src/arm-linux-gcc-4.3.2.tar.bz2 -C /usr/local/arm
//现在交叉编译程序集都在/usr/local/arm/3.4.1/bin下面了






2,解压完成后将目录加到环境变量里
            [root@longguopeng:/#] vim /etc/profile                      
            在最后加一行: 
            export PATH="$PATH:/usr/local/arm/4.3.2/bin"
            或
   [root@longguopeng:/#] vim /etc/bash.bashrc
            在最后加上:
            export PATH=$PATH:/usr/local/arm/3.4.1/bin
            export PATH

    3,立即使新的环境变量生效,不用重启电脑
            [root@longguopeng:/#] source /root/.bashrc  //生效
            [root@longguopeng:/#] source /etc/profile
    4. 检查是否将路径加入到PATH:
          root@longguopeng:~# echo $PATH
  /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin


   [root@longguopeng:/#]# arm-linux-gcc -v // 测试是否安装成功
             ...........................
             ...........................
   gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) 




    5,重新启动后--完成就可以直接输入arm-linux-gcc 命令编译了
                编译目录就是在/home/nfsroot下


*****************************************************************************************
// 编译定制 u-boot:


第一步:
        [root@longguopeng:/#] tar -vxf /home/up6410/src/u-boot-1.1.6.tar.bz2 
[root@longguopeng:/#] cd /home/up6410/src/u-boot-1.1.6


第二步:
    进到u-boot-1.1.6 定制u-boot 文件
        1,删除不需要的文件
            留下:
                arm-config.mk
                config.mk
Makefile
MAKEALL
mkconfig

mknand  //没有
                mkmovi  //没有
write-sd //没有
tags     //没有


README
                rules.mk
                System.map
                                                            
                u-boot
                u-boot.map
                u-boot.bin
                u-boot.dis               
                u-boot.sre.c


                board
common
cpu
disk
drivers
dtt
examples
fs
                include
lib-arm
lib-generic
nand-spl
                net               
                post
                rtc
                tools
               
 
                
               
        2,进到留下的boarde文件夹,留下samsung(三星),其他的全部删除
                                        进到samsung,留下smdk6410,其他的全部删除


        3,删除完毕,改u-boot-1.1.6_smdk6410 下的Makefile
                将193行改为 
                           ARCH            := arm
  CROSS_COMPILE    := arm-linux-
                                         (记得最后面不要加空格!)
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] gedit include/configs/up6410_sd.h 


         增加run 命令
  171: CFG_CMD_RUN| \   调到 165: CFG_CMD_RUN| \


         可以修改环境变量:
---------------------------------------------------------------------------------------------
182: #define CONFIG_BOOTARGS"root=/dev/nfs rw nfsroot=2.2.2.168:/home/up6410/nfsroot    ip=2.2.2.234:2.2.2.233:2.2.2.1:255.255.255.0:www.longguopeng.com:eth0:off                           console=ttySAC0,115200 mem=128M" 
183:    #define CONFIG_ETHADDR 11:22:33:44:55:66
#define CONFIG_NETMASK      255.255.255.0 
#define CONFIG_IPADDR   2.2.2.167//开发板
#define CONFIG_SERVERIP2.2.2.168   //pc机
#define CONFIG_GATEWAYIP2.2.2.1     //网关
203行:PTF-PROMPT  "ubuntu@longguopeng #"         改工作环境的显示的名称
---------------------------------------------------------------------------------------------
            SD启动
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] make up6410_sd_config
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] make
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] cp  u-boot.bin /home/up6410/tftpboot/
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] cd /home/up6410/tftpboot/
[root@longguopeng:/home/up6410/tftpboot/#] cp u-boot.bin u-boot-sd.bin 

NVND启动
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] make up6410_nand_config
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] make
[root@longguopeng:/home/up6410/src/u-boot-1.1.6#] cp u-boot.bin /home/up6410/tftpboot/
            [root@longguopeng:/#] cd /home/up6410/tftpboot/
   [root@longguopeng:/home/up6410/tftpboot#] cp u-boot.bin u-boot-nand.bin cd 



写u-boot到nand flash:
        uboot下操作:
nand erase 0 0x40000
tftp 0x50000000 u-boot-nand.bin
nand write 0x50000000 0 0x40000
*******************************************************************************************
// 编译烧写内核(zImage):


  第一步:
        解压内核压缩包:
[root@longguopeng:/#] tar jvxf /home/up6410/src/linux-2.6.28.tar.bz2
 
第二步:
        进到linux-2.6.28
[root@longguopeng:/#] cd linux-2.6.28


    第三步:
    1:告诉Makefile 哪些要编译
             1) 在这个目录下执行 make config ,
                这样的话会有很多项要选择,所以可以直接
                make defconfig    编译默认选项
             2) 在这个目录下执行 make menuconfig
                    进到内核定制对话框,最终保存之后会生成一个.config(这个文件是隐藏的)
             3)因为在当前目录下已经有一个up6410_config
             文件,所以可以暂时不去定制内核,直接将这个文件命名为.config文件就可以了


[root@longguopeng:/home/up6410/src/linux-2.6.28#] cp up6410_config .config
[root@longguopeng:/home/up6410/src/linux-2.6.28#] make zImage  或 make j2  2表示双核
[root@longguopeng:/home/up6410/src/linux-2.6.28#] cp arch/arm/boot/zImage /home/up6410/tftpboot //将内核移到tftpboot
                                                                     




// 第四步:烧写boot到sd卡和nandfalsh上  通过nfs挂载文件系统


//sd卡
    1)root@longguopeng:/home/up6410# cd /home/up6410/tools/
    2) 插上一张sd卡
    3) root@longguopeng:/home/up6410# fdisk -l //查看sd卡在dev下面枚举的文件(可以查看容量来确定)我的sd卡的枚举的文件是/dev/sdb
    4)root@longguopeng:/home/up6410/tools/# ./sd_write/dev/sdb /home/up6410/images/u-boot-movi.bin //下载
    5) root@longguopeng:/home/up6410# umount /dev/sdb // 解挂
    6)把sd卡插在开发板上面选择sd卡启动
    7)minicom开发板上电然后狂敲回车至到出现有#的字符串
    8) [uboot-longguopeng #] pri
    9)[uboot-longguopeng #] set bootargs "root=/dev/nfs nfsroot=192.168.1.168:/home/up6410/nfsroot ip=192.168.1.167 console=ttySAC0;115200"
    10)[uboot-longguopeng #] save
    11)配置好后环境变量为
  ---------------------------------------------------------------------------------------------     
   bootdelay=3
        baudrate=115200
        ethaddr=00:40:5c:26:0a:5b
        ipaddr=192.168.1.167
        serverip=192.168.1.168涩痛
        gatewayip=192.168.1.1
        netmask=255.255.255.0
        bootcmd=tftp 50008000 zImage;bootm 50008000
        nfsboot=root=/dev/nfs nfsroot=192.168.1.168:/home/up6410/nfsroot ip=192.168.1.167 console=ttySAC0;115200
        bootargs=root=/dev/nfs nfsroot=192.168.1.168:/home/up6410/nfsroot ip=192.168.1.167 console=ttySAC0;115200
        stdin=serial
        stdout=serial
        stderr=serial


Environment size: 408/16380 bytes 
----------------------------------------------------------------------------------------------
    12)用tftp下载zImage到0x50008000 从0x50008000启动 bootm 0x50008000
[uboot-longguopeng #] tftp 0x50008000 zImage
[uboot-longguopeng #] bootm 
           或
[uboot-longguopeng #] set bootcmd tftp 0x50008000 zImage \;bootm  
/*====================================================================================================================================*/


0x00000000-0x00040000 : "Bootloader"         ==> /dev/mtdblock0                                             
0x00040000-0x00400000 : "Kernel"             ==> /dev/mtdblock1                                                 
0x00400000-0x05400000 : "Rootfs"             ==> /dev/mtdblock2                                                 
0x05400000-0x10000000 : "File System"     ==> /dev/mtdblock3




//nandfalsh


    1)写u-boot到nand flash:
2) [uboot-longguopeng #] nand erase 0 0x40000
    3) [uboot-longguopeng #] tftp 50000000 u-boot-nand.bin
    4) [uboot-longguopeng #] nand write 0x50000000 0 0x40000
5)手动 内核到nand flash:
6) [uboot-longguopeng #] nand erase 0x40000 0x300000
    6) [uboot-longguopeng #] tftp 50000000 zImage


    7)自动启动
       [uboot-longguopeng #] set bootcmd nand read 0x50008000 0x40000 0x220000\; bootm 0x50008000
       [uboot-longguopeng #] set bootargs "root=/dev/nfs nfsroot=192.168.1.168:/home/up6410/nfsroot ip=192.168.1.167 console=ttySAC0;115200"
       [uboot-longguopeng #] save 

    8)  [uboot-longguopeng #] nand write 0x50000000 0x40000 0x220000
9)  [uboot-longguopeng #] nand read 0x50008000 0x40000 0x220000
10) [uboot-longguopeng #] bootm 0x50008000
        [uboot-longguopeng #] save 
  


****************************************************************************************************
//  制作根文件系统:


[root@longguopeng:/#] tar jvxf /home/up6410/src/busybox-1.19.4.tar.bz2    //不显示进度条
[root@longguopeng:/#] cd busybox-1.19.4
[root@longguopeng:/home/up6410/src/busybox-1.19.4#] vim Makefile
--------------------------------------
:164   //直接跳转到164行
164:CROSS_COMPILE ?= arm-linux-
190:ARCH ?= arm
---------------------------------------


[root@longguopeng:/home/up6410/src/busybox-1.19.4#] make defconfig //默认  配置  //或者  make menuconfig(显示配置菜单)
[root@longguopeng:/home/up6410/src/busybox-1.19.4#] make busybox


[root@longguopeng:/home/up6410/src/busybox-1.19.4#] mkdir /home/up6410/nfsroot
[root@longguopeng:/home/up6410/src/busybox-1.19.4#] chmod 777 /home/up6410/nfsroot  //修改权限

[root@longguopeng:/home/up6410/src/busybox-1.19.4#] make install CONFIG_PREFIX=/home/up6410/nfsroot //安装到相应的目录
            //也可以
[root@longguopeng:/home/up6410/src/busybox-1.19.4#] cp -rf _install //   /home/nfsroot/


[root@longguopeng:/home/up6410/src/busybox-1.19.4#] cd /home/up6410/nfsroot
[root@longguopeng:/home/up6410/nfsroot#] mkdir dev etc lib proc sys tmp mnt
 
[root@longguopeng:/home/up6410/nfsroot#] mkdir -p lib/modules/2.6.28.6 #for rmmod //模块命令


[root@longguopeng:/home/up6410/nfsroot#] ll dev/console  //查看
[root@longguopeng:/home/up6410/nfsroot#] mknod dev/console c 5 1 //先创建串口


  cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib // lib///拷贝所有的
     //只需这三个  ld-linux.so.3   libc.so.6     libm.so.6   
[root@longguopeng:/home/up6410/nfsroot#] cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/ld-linux.so.3 lib/
[root@longguopeng:/home/up6410/nfsroot#] cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/libc.so.6 lib/
[root@longguopeng:/home/up6410/nfsroot#] cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/libm.so.6  lib/




[root@longguopeng:/home/up6410/nfsroot#] vim etc/fstab
   ------------------------------------
proc    /proc   proc    defaults        0       0
sysfs   /sys    sysfs   defaults        0       0
tmpfs   /tmp    tmpfs   defaults        0       0
tmpfs   /dev    tmpfs   defaults        0       0
   ------------------------------------



[root@longguopeng:/home/up6410/nfsroot#] mkdir etc/init.d
[root@longguopeng:/home/up6410/nfsroot#] vim etc/init.d/rcS
            ----------------------------------
#!/bin/sh
mount -a
echo "XXXXXXXXXXXXXXX"
echo "XXXXXXXXXXXXXXX"
echo "XXXXX long XXXX"
echo "XXXXX guo XXXXX"
echo "XXXXX peng XXXX"
echo "XXXXXXXXXXXXXXX"
echo "XXXXXXXXXXXXXXX"
echo "/sbin/mdev" > /proc/sys/kernel/hotplug
mdev -s
  ----------------------------------




[root@longguopeng:/home/up6410/nfsroot#] chmod +x etc/init.d/rcS


[root@longguopeng:/home/up6410/nfsroot#]tar cf ../mini_rootfs.tar *


/*===========================================================================================*/


// 写根文件系统到nand flash, 脱离nfs挂载。


PC机操作:
1.拷贝文件系统:
[root@longguopeng:/#] cp-rf /home/up6410/src/qt_rootfs.tar /home/up6410/nfsroot 


u-boot操作:          
         2.清除硬盘                               4M       252M
   [uboot-longguopeng #] nand erase 0x400000 0xfc00000

进入文件系统:
[qt@longguopeng /]# mount /dev/mtdblock2 /mnt         //挂载
[qt@longguopeng /]# tar -vxf /qt_rootfs.tar -C /mnt  //解压
[qt@longguopeng /]# sync                             //同步
[qt@longguopeng /]# rm -rf /etc/pointercal          //触屏校对

u-boot操作:
            设置启动方式:
[uboot-longguopeng #] set bootargs root=/dev/mtdblock2 rw console=ttySAC0,115200 mem=128M
[uboot-longguopeng #] save


**************************************************************************************************





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值