系统移植

【系统移植】
    系统的移动、植入(加+减);
    内容:环境搭建、BootLoader的移植、内核移植(系统+设备树+驱动)、跟文件系统移植;
    特点:写代码少、实际动手较多;
    
【嵌入式】
    特点: 三低(成本、体积、耗能)一高(性能);
    应用:
    嵌入式系统:
        无os嵌入式系统:应用、驱动、硬件(实现功能相对单一、如果要是多个功能,只有通过逻辑来处理,运行效率很低);
        有os嵌入式系统:应用、内核、驱动、硬件(可以并发的多任务执行,实现功能相对复杂)
    
    常见的嵌入式系统:
        linux、wince、vxworks
    常见的架构:
        arm、x86、mips、
【系统移植】
    开发主机:程序的编写,编译成目标机所对应的指令;
    目标机:程序运行的主机
    文件传输的方式:
        串口:传输效率低,对于大文件的传输很慢,使用不方便。
        SD卡:烧写执行程序到SD卡中(启动代码);
            SD卡的烧写方式:
                1. 将SD烧写的工具拷贝到虚拟机中,环境搭建/工具/sdfuse_q
                2. 进入到sdfuse_q目录;
                    cd sdfuse_q
                3. 加入SD到虚拟中。
                    虚拟机-->可移动设备-->设备名称(usb)-->连接
                    成功:或者弹出SD卡的目录,或者也可以通过ls /dev/sdb 找到对应的sd卡设备文件名
                4. 烧写u-boot-fs4412.bin到SD卡中
                    sudo ./mkuboot.sh    (等待的过程);
                5. 通过SD方式启动开发板。
        网络:
            1. 网络能够进行通信:ping命令能够ping通;
            
【网络设置】
    开发主机: 
        1. 网卡的绑定:编辑 --> 虚拟网络编辑器 --> 将VMnet0设置成为桥接模式(绑定网卡:和目标机连接的网卡)
        2. 网络IP地址的设置:设置虚拟机的IP地址: 192.168.1.250
    
    目标机:
        常用到命令:
            set bootcmd loadb\;go 20008000   //直接发送文件就可以运行
            set bootcmd tftp 20008000\;go 20008000
            
            prientenv(pri):输出环境信息 ---观察开发板环境变量
            setenv(set):设置环境信息
                set bootdelay 2        //将启动延时变量 bootdelay的值设置为2s
                set server            //删除环境变量server;
            saveenv(save):保存环境信息
        
        1. 目标机IP的设置:
            IP地址:
                set serverip 192.168.1.250    //设置服务器的IP地址,也就是虚拟机的IP地址,一定要和虚拟机的ip地址保持一致;
                set ipaddr 192.168.1.191    //设置目标机的IP地址,也就开发板的IP地址,要和虚拟的IP处于同一个网段;
                set gatewayip 192.168.1.1    //设置的网关
                set netmask 255.255.255.0    //设置的是子网掩码
                save
        2. 检查是目标机和开发主机是否能够建立连接
            ping 192.168.1.250(在执行该指令的时候,只能在目标板上执行)
            现象:
                ping failed; host 192.168.1.250 is not alive
            则说明,目标机和开发主机不能够建立连接
            分析结果:    1.检查ip是否设置成功(开发主机、目标机、网线是否连接)
                        2.连接的方式(采用桥接的方式)
            
            现象:
                Using dm9000 device
                host 192.168.1.190 is alive
            则说明,目标机和开发主机能够建立连接;
            
【文件的传输】
    终端命令   tftp localhost
                ps aux | grep tftp 
    设置TFTP文件传输服务器:
    1. 服务器(开发主机):
        1) 能够和外网建立连接:ping通百度
            ping www.baidu.com 
        2) 安装服务器:
            sudo apt-get install tftp-hpa tftpd-hpa        //tftp-hpa表示客户端,tftpd-hpa表示服务器;
        3) 配置tftp服务器:
            sudo vim /etc/default/tftpd-hpa 
            
                1 # /etc/default/tftpd-hpa
                2 
                3 TFTP_USERNAME="tftp"
                4 TFTP_DIRECTORY="/var/lib/tftpboot"        //tftp 服务器文件共享目录;
                5 TFTP_ADDRESS="0.0.0.0:69"                    //tftp 服务器的IP地址和端口号
                6 #TFTP_OPTIONS="--secure"
                7 TFTP_OPTIONS="-l -c -s"                    //既可以共享文件,也可以上传文件 
        4) 修改文件共享目录的权限:
            sudo chmod 777 /var/lib/tftpboot
        5) 启动tftp服务器
            sudo service tftpd-hpa restart
        6) 将所有传输的文件拷贝到tftp共享目录/var/lib/tftpboot
            
    2. 客户端(目标机):
        tftp 41000000 uImage                        //下载kernel
        tftp 42000000 exynos4412-fs4412.dtb            //下载设备树
        tftp 43000000 ramdisk.img        //下载根文件系统
        
        如果出现如下现象: T T T
        分析原因:在等待服务器发送数据;说明服务器没有启动,或者没有文件等;
        重启tftp服务器;
        
        bootm     41000000         43000000             42000000
                kernel地址        根文件系统地址        设备树地址
                
        出现的现象:系统不支持;
        分析原因:uboot的版本是2010,版本太低;
        解决办法:更新启动uboot,更新2013的版本;
            1. 下载u-boot为2013的版本;
                tftp 41000000 u-boot-fs4412.bin 
            2. 烧写:
                movi write u-boot 41000000
            3. 重启:看到版本为2013
        更新uboot,重新配置操作:
        
        出现时钟:set bootargs
        
        发现问题:
            如果重启开发板,需要重新下载内核、设备树和根文件系统,才能正常;
            解决:
            1. 可以将所有下载和执行的命令用环境参数保存:
            利用自启动参数来实现:bootcmd
            set bootcmd tftp 41000000 uImage\; tftp 42000000 exynos4412-fs4412.dtb\; tftp 43000000 ramdisk.img\; bootm 41000000 43000000 42000000
            重启开发板后,根文件系统中文件发生了改变,不便于调试;
        
【nfs挂载】
    需要配置nfs服务器和客户端:
    1. 服务器的配置:
        1. 服务的安装:在能够和外网建立连接的情况下安装
            ping www.baidu.com
            sudo apt-get install nfs-kernel-server 
        2. 确定要挂载目录
            1) 拷贝根文件系统到你的目录中
            cp rootfs.tar.xz /home/farsight/workspace/fs4412
            2) 进入到目录中
            cd /home/farsight/workspace/fs4412
            3) 解压跟文件系统
            tar xf rootfs.tar.xz
            4) 进入到跟文件系统目录中
            cd rootfs
            5) 查看根文件系统目录名称
            pwd ===> /home/farsight/workspace/fs4412/rootfs
        3. 配置nfs挂载
            sudo vim /etc/exports
            11 /home/farsight/workspace/fs4412/rootfs *(rw,sync,no_root_squash,no_subtree_check)
        4. 启动nfs服务器
            sudo service nfs-kernel-server restart
    2. 客户端的配置
        set bootargs root=/dev/nfs nfsroot=192.168.1.250:/home/farsight/workspace/fs4412/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.1.191

板子启动参数:
set serverip 192.168.1.250    //设置服务器的IP地址,也就是虚拟机的IP地址,一定要和虚拟机的ip地址保持一致;
set ipaddr 192.168.1.191    //设置目标机的IP地址,也就开发板的IP地址,要和虚拟的IP处于同一个网段;
set gatewayip 192.168.1.1    //设置的网关
set netmask 255.255.255.0    //设置的是子网掩码
save
set bootcmd tftp 41000000 uImage\; tftp 42000000 exynos4412-fs4412.dtb\; bootm 41000000 - 42000000
set bootargs root=/dev/nfs nfsroot=192.168.1.250:/home/farsight/workspace/fs4412/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.1.191
                nfs挂载            挂载在的主机:挂载的目录                                读写    调试终端            启动程序        开发板的ip
        
    
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.100.111:/home/nfsdir rw console=ttySAC2,115200n8 init=/linuxrc ip=192.168.100.11 clk_ignore_unused
这个叫内核启动参数                    内核版本为exynos4412-origen.dtb   uImage
    

            
            
            
            
                
                
        
    
    

    
    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值