ARM (FS_S5PC100)系统移植一 环境搭建

一、//---------确认电脑和板子是能通信的
     设置电脑网卡ip 为192.168.9.222  255.255.255.0 192.168.9.1
         
     启动板子,快速按任意键停在boot处,设置u-boot 的环境变量
    $ setenv serverip 192.168.9.120    //注意它与虚拟机里 ubuntu 的ip要一致
    $ setenv ipaddr 192.168.9.200   //设置板子的IP
    $ setenv gatewayip  192.168.9.1
    $ pri  查看设置后效果
        /*
FSC100 # pri
baudrate=115200
bootdelay=3
ethact=dm9000
ethaddr=11:22:33:44:55:66
bootcmd=tftp 20008000 zImage ; go 20008000
filesize=735000
fileaddr=20008000
gatewayip=192.168.9.1
netmask=255.255.255.0
ipaddr=192.168.9.200
serverip=192.168.9.120
bootargs=root=nfs nfsroot=192.168.9.120:/nfs/rootfs console=ttySAC0,115200 init=/linuxrc ip=192.168.9.200
stdin=serial
stdout=serial
stderr=serial
Environment size: 380/131068 bytes
*/
    $ ping 192.168.9.222   //测试网络是否连通  ,注意在u-boot中, 它能ping电脑, 电脑不能ping它  
                          //注意,要拔掉jtag线,否则ping 会重启  
        host 192.168.9.222 is alive    //is alive 表示ok    
    $ saveenv   保存设置        
           
    //---------确认电脑和虚拟机时能通信
      
1.1. vmware -> Edit ->Virtual Network Editor -> VMnet0 bridge 指定连接的网卡 //注意不要用automic 手动指定对应的网卡
                              
 1.2. vmware -> VM->Setting -> Network Adapder  -> Custom(VMnet0)                                                 
    
     1.3. 点linux中 System  -> Preferences -> Network Connections ->全删掉-> add 新建一个 -> IPV4 Settings -> Method 选Manual -> 点add
         设置为 192.168.9.120 255.255.255.0 192.168.9.1 ->apply -> close
         点右上角网卡图标,先disable,再enable 激活一下   //如果后面还是ping不通, 把虚拟机重启一下
            
     1.4 //---------确认板子能ping通虚拟机
    $ reset  重启boot
    $ ping 192.168.9.120         //注意: boot阶段是板子能ping 外面 ,外面是不能ping它的
        host 192.168.9.120 is alive  //通讯OK  ,失败会显示not alive      

二、 tftp 下载文件 (产品出厂时需烧录bin文件)     
//----虚拟机上安装tftp服务
#dpkg   -s   tftpd-hpa   //检查是否安装tftp server
#apt-get  install  tftpd-hpa  tftp-hpa  //如果未安装,安装 tftp-server
#vi  /etc/default/tftpd-hpa  //修改tftp服务器配置文件为
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-c  -s  -l"           //原linux为P_OPTIONS="--secure" 
   #mkdir  /tftpboot   //创建tftpboot目录,
  #chmod  a+w  /tftpboot
  #service   tftpd-hpa   restart  //启动 tftp-server
          
  //-----验证虚拟机tftp服务是否OK
 # cat /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
  #service   tftpd-hpa   restart  //如果有更改配置,需要重启一下 tftp-server
#cd /tftpboot
#touch test
#cd /tmp
#tftp 127.0.0.1    
tftp>get test  
tftp>q
#ls           //看到有test文件,表示该tftp服务是OK的     


/*--flash 的分区
|====Flash===| 0x10000000(256M)
|             |
|             |
|------------ | 0x800000
|   rootfs    |           mtdblock2
|-------------| 0x400000
|   kernel   |           mtdblock1
|------------ | 0x100000   
|    ...       |         
|-------------| 0x40000
|   u-boot   |           mtdblock0
|============| 0    
NandFlash             //没有物理基地址,  它是通过0xE7200000控制去获取数据,见copy_uboot_to_ram  nandll_read_blocks    
*/

  2.1//-----下载u-boot  
      #ls /tftpboot/  //查看tftp服务器上有什么文件,可以传输    
  #cp ~/e/pkg/u-boot.bin /tftpboot

$ tftp 0x20008000 u-boot.bin      //下载u-boot.bin到板子的内存0x20008000上,tftp可能失败,可能原因,网路不好,虚拟机种tftp配置,或未起来                                
  $ nand erase 0 40000              //擦出nandflash中,从100000开始,长度为300000的内容                
  $ nand write 20008000 0 40000 //把内存20008000中的内容写入nandflash的100000地址中,长度为300000
  $ reset  后迅速停止
  $ pri   //烧写新u-boot后,serverip有可能改变,如果发现serverip 都变了,要重设环境变量
  $ setenv serverip 192.168.9.120
  $ setenv ipaddr 192.168.9.200
  $ setenv gatewayip  192.168.9.1    
  $ saveenv   保存设置  


  2.2//-----下载kernel
  $ tftp 0x20008000 zImage   //从tftp服务器里下载内核zImage 到内存20008000地址中   ,tftp服务器的ip地址由serverip 变量确定
  $ nand erase 100000 300000  //擦除nandflash中,从 100000 开始,长度为300000的内容
  $ nand write 20008000 100000 300000   //把内存20008000 中的内容 写入nandflash的100000地址中,长度为300000
  $ setenv bootcmd nand read 20008000 100000 300000 \; go 20008000 //u-boot倒数计数时,如果不干预,它会自动加载bootcmd中命令运行。 如果有多个命令 用 \; 分隔开来
                                                                   //这里是指,自动从nandflash中读入内核, 然后运行内核。
  $ saveenv     
  2.3//-----下载rootfs
  $ tftp 0x20008000 rootfs.cramfs
  $ nand erase 400000 400000    
  $ nand write 20008000 400000 400000
  $ setenv  bootargs  root=/dev/mtdblock2 init=/linuxrc  console=ttySAC0,115200  
  $ saveenv
  $ reset     

三、 网络自动 tftp 加载内核,并挂载nfs  rootfs 启动
3. 1. 设置网络加载内核
 #setenv  bootcmd tftp 20008000 zImage \; go 20008000
 #saveenv
 3.2. 挂载nfs  rootfs 
 //--在电脑上输入
 #mkdir /nfs
 #cd /nfs
 #cp ~/e/pkg/rootfs.tgz .
 #tar -xvf  rootfs.tgz
        #vim /etc/exports  修改为下面的内容
        /nfs/rootfs *(rw,sync,no_root_squash)
 #/etc/init.d/nfs-kernel-server restart  //重启nfs服务,使得前面修改生效   
 //--在板子上输入
    $ setenv bootargs root=nfs nfsroot=192.168.9.120:/nfs/rootfs console=ttySAC0,115200 init=/linuxrc ip=192.168.9.200
    $ saveenv
    $ pri
        /*
baudrate=115200
bootargs=root=nfs nfsroot=192.168.9.120:/nfs/rootfs console=ttySAC0,115200 init=/linuxrc ip=192.168.9.200
bootcmd=tftp 0x20008000 zImage ; go 20008000
bootdelay=3
ethact=dm9000
ethaddr=11:22:33:44:55:66
fileaddr=20008000
filesize=1D8664
gatewayip=192.168.9.1
ipaddr=192.168.9.200
netmask=255.255.255.0
serverip=192.168.9.120   
*/
    $ reset  //后能顺利挂载nfs rootfs   当显示Please press Enter to activate this console. 表示成功。 按enter 进入后创建一个文件, 电脑的/nfs/rootfs上同步看得到
            
}         


{//5. 交叉编译工具安装
  #tar -xvf arm-cortex_a8-linux-gnueabi.tar.bz2
  #cd arm-cortex_a8/bin
  #pwd
   显示/root/store/arm-cortex_a8/bin   //注意这个路径下面export中用到的要一
  #echo export PATH=/root/store/arm-cortex_a8/bin/:$PATH >> ~/.bashrc //添加到启动脚本,使其再次启动后仍有效      
  #source ~/.bashrc  //使其马上生效
  #arm-c  然后按Tab键补全 //如果能补全为arm-cortex_a8-linux-gnueabi- 表示安装交叉编译工具成功了
}
    
{//6. u-boot编译
#tar -xvf u-boot-2010.03-ok.tar.gz
  #make  fsc100_config
  #make
  #cp u-boot.bin /tftpboot/
}


{//7. 内核编译
配置编译关系 kconfig  -> make menuconfig  -> .config  ->  makefile ->zImage    



#tar -xvf linux-2.6.35-farsigt.tar.gz
#cd   linux-2.6.35-farsigt
#make meunconfig  //图像界面进行配置(如 指定新的驱动,内核裁剪)
#make zImage  //只编译内核
// #make modules //只编译模块文件(.ko文件)
#cp arch/arm/boot/zImage /tftpboot/
}




































你可能感兴趣的:(ARM,cortex-A8,FS-S5PC100-A)