ARM 系统移植开发环境搭建

ARM系统移植搭建环境

一、把开发板串口与电脑串口相连,若电脑无串口,可使用USB转串口线,在设备管理器中找到对应串口号


二、打开中端软件,来连接开发板(此处我是用的是SecureCRT,你也可以使用其他终端软件)


连接好后进入如下界面


打开开发板电源进入u-boot后,可以看到终端上打印信息


1. 板子串口能显示信息

   {//? 无串口打印信息    
      波特率设置不对, 流控未选为无
      电脑用的可能是其他COM口,而不是你自己开发板连的COM口
      u-boot被破坏了需用USB  dnw_v0.60c.exe 重烧录最初USB Installer_DDR2.bin 和u-boot.bin
     /* 烧录USB Installer_DDR2.bin u-boot.bin 失败
        USB 地址应设为 0x27e00000   //或0x2ff80000 
        有的window系统不行,换能行的电脑
        下载Installer_DDR2.bin u-boot.bin后,后tftp u-boot.bin烧录到板子张
        界面上要显示 USB:OK   注意:板子第四个开关,应拨下去
        换一个电脑的USB口 
        换一个板子试试
        
        ? 关板子电源会导致电脑重启。
          板子的USB口有问题,会导致电脑重启。 最好不用USB口,除非boot被破坏了
      */      
   }
      
   {//usb方式烧录u-boot
1. 安装USB驱动

2. 打开USB  dnw_v0.60c.exe,设置 USB 地址应设为 0x27e00000 或0x2ff80000 

3. 把板子第四个开关,拨下去,接上USB线,上电
  如果成功, USB  dnw_v0.60c.exe 会又显示
  
4. 打开串口终端
  
5. 点  dnw_v0.60c.exe ->USB port -> Transmit -> 下载Installer_DDR2.bin u-boot.bin
 后会看到串口终端有信息显示

6. 烧录新的u-boot
  #setenv serverip 192.168.9.120
  #setenv ipaddr 192.168.9.200
  #setenv gatewayip  192.168.9.1    
  #tftp 0x20008000 u-boot.bin
#nand erase 0 40000                              
#nand write 20008000 0 40000
#saveenv
把开关第四个开关拨回, 拔掉USB线         
  #reset
   }   
      
}     


{//2. 板子能ping通虚拟机
  ------------------------           
     |板子    192.168.9.200 |
     ------------------------
                |
     ------------------------
     |电脑    192.168.9.222 |    //做中转用,和板子虚拟机IP要在同一网段, 且不能和它们IP一样     
     ------------------------
                |
  ------------------------
     |虚拟机  192.168.9.120 |
     ------------------------
        
     //---------确认电脑和板子是能通信的
     设置电脑网卡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
    $ setenv gatewayip  192.168.9.1
    $ print  查看设置后效果
        /*
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. vmware -> Edit ->Virtual Network Editor -> VMnet0 bridge 指定连接的网卡 //注意不要用automic 手动指定对应的网卡
                              
2. vmware -> VM->Setting -> Network Adapder  -> Custom(VMnet0)                                                 
    
   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不通, 把虚拟机重启一下
            
    //---------确认板子能ping通虚拟机
    $ reset  重启boot
    $ ping 192.168.9.120         //注意: boot阶段是板子能ping 外面 ,外面是不能ping它的
        host 192.168.9.120 is alive  //通讯OK  ,失败会显示not alive
        
}        


{//3. tftp 下载文件 (产品出厂时需烧录bin文件)     
//----虚拟机上安装tftp服务
#dpkg   -s   tftpd-hpa   //检查是否安装tftp server
#apt-get  install  tftpd-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"
  #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 的分区    可通过arch/arm/mach-s5pc100/mach-smdkc100.c 中nand 的 mtd_partition s5pc100_nand_part来修改
|====Flash===| 0x10000000(256M)
|            |
|            |
|------------| 0x800000
|   rootfs   |           mtdblock2
|------------| 0x400000
|   kernel   |           mtdblock1
|------------| 0x100000   
|    ...     |         
|------------| 0x40000
|   u-boot   |           mtdblock0
|============| 0    
NandFlash             //没有物理基地址,  它是通过0xE7200000控制去获取数据,见copy_uboot_to_ram  nandll_read_blocks    
*/




  //-----下载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                              
  $ nand write 20008000 0 40000
  $ 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   保存设置  


  //-----下载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     
  //-----下载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
   
}       


{//4. 网络自动 tftp 加载内核,并挂载nfs  rootfs 启动
1. 设置网络加载内核
 #setenv  bootcmd tftp 20008000 zImage \; go 20008000
 #saveenv
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
    $ savenenv
    $ 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- 表示安装交叉编译工具成功了
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值