• 在linux环境下搭建嵌入式开发平台


    根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。一般的嵌入式系统都由以下几部分组成:
         1.特定的应用程序    比如QQ ,浏览器,游戏
         2.嵌入式库支持        比如标准C库,嵌入式qt库
         3.根文件系统            根文件系统是内核启动后挂载的第一个文件系统
         4.操作系统内核        Linux内核
         5.Bootloader            BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。Bootloader在嵌入式系统中的作用相当于x86机器中的BIOS和GRUB。比如u-boot

         6.硬件平台               Arm  mips powerpc

    要搭建一个嵌入式开发平台必须具备以下工具:

    1.嵌入式开发板,在这里我们使用三星的SMDK6410开发板,主控芯片S3C6410,而S3C6410采用的arm11架构
    2.个人计算机,推荐使用redhat5.5操作系统

    接下来搭建嵌入式交叉开发环境

    一、 配置minicom

    Minicom是一个运行在开发主机上的程序,通过这个程序可以观察开发主机串口的数据传输,首先用串口线把PC机的串口和开发板的串口连接,对于一个嵌入式设备来说,一般标准输入、标准输出、标准错误都是串口,所以这样的话我们就可以利用minicom来观察开发板的运行情况,并且还可控制开发板。详细的minicom配置过程如下:
    在开发主机终端输入minicom –s,然后按照下面进行配置

    #minicom-s

    +-----[configuration]-- ------+

    |Filenames and paths    |

    |File transfer protocols  |

    |Serial port setup           |

    |Modem and dialing       |

    |Screen and keyboard   |

    |Save setup as dfl          |

    |Save setup as..              |

    |Exit                                 |

    |Exit from Minicom         |

    +-------------------------------------+

    选择Serialport setup

    设置参数如下:

    +----------------------------------------------------+

    | A - Serial Device : /dev/ttyS0      |

    | B - Lockfile Location : /var/lock |

    |C - Callin Program :                     |

    |D - Callout Program :                   |

    |E - Bps/Par/Bits : 115200 8N1     |

    | F - Hardware Flow Control : No |

    |G - Software Flow Control : No   |

    | |

    | Change which setting?               |

    +---------------------------------------------------+

    选择Savesetup as dfl设置保存为默认

    +-----[configuration]---------+

    |Filenames and paths       |

    |File transfer protocols    |

    |Serial port setup             |

    | Modem and dialing        |

    |Screen and keyboard      |

    |Save setup as dfl             |

    |Save setup as..               |

    |Exit                                 |

    |Exit from Minicom         |

    +-------------------------------------+

    最后选择Exit推出minicom,以后运行minicom只需要在主机终端中输入minicom即可

    二、把u-boot-movi.bin写到SD卡

    u-boot-movi.bin是一个已经编译好的bootloader,并且是SD卡启动的,也就是说这个程序要烧写到SD卡后才能运行。详细的SD卡烧写过程如下:
    1 把SD卡插入PC机        
    2 用fdisk –l查看SD卡对应的设备文件,一般为/dev/sdb
    3卸载SD卡分区,umount /dev/sdb1
    4 把u-boot-movi.bin写入SD卡,<path>write_sd  /dev/sdb  u-boot-movi.bin  注:<path>为write_sd工具所在的目录  
    备注:(1)write_sd为smdk6410_lzy/tools文件夹下的工具write_sd.
    (2)u-boot-movi.bin为smdk6410_lzy/images文件夹下的往sd卡里下载的uboot文件,注意写它的绝对路径。
    5 把SD卡插入开发板,打开开发板电源,在minicom中观察SD卡启动过程,如启动正确则输出以下信息:

    三、配置tftp服务

    tftp服务是开发主机和开发板之间通信的一种方法,tftp客户端在bootloader中已经集成,tftp服务器在开发主机上,详细的tftp服务配置过程如下:
    1打开tftp服务配置文件,vim /etc/xinetd.d/tftp,把该文件中disable对应的yes改为no     ,这样便打开了tftp服务
    2重新启动tftp服务器,service xinetd restart    

    四、把内核镜像下载到开发板的DDR内存中

    1把zImage拷贝到tftp服务器的下载路径,cp  <path>/zImage  /tftpboot    
    2配置u-boot环境变量,在[u-boot-sd]#界面操作
    [u-boot-sd]# set serverip 192.168.1.xxx(xxx代表开发主机的ip地址)
    [u-boot-sd]# sav 保存环境变量
    3下载内核到开发板并且启动内核, 在u-boot的终端操作
    [u-boot-sd]# tftp 50008000 zImage    //把内核下载到开发板的内存中
    [u-boot-sd]# bootm 50008000        //启动开发板中的linux内核
    若启动成功的话LCD上会出现小企鹅
    注意:zImage是已经编译好的linux内核镜像

    五、配置nfs服务

    nfs服务在linux下用来共享资源的,利用这个服务我们可以在开发主机上为开发板创建一个共享目录,让这个共享目录作为开发板的根文件系统,详细的配置过程如下:
    1创建共享目录,mkdir /nfsroot
    2 修改共享目录权限,chmod 777 /nfsroot
    3打开nfs服务配置文件,vim /etc/exports,在该文件里添加:/nfsroot *(rw,sync,no_root_squash)
    4重新启动nfs服务,service nfs restart

    六、搭建根文件系统

    根文件系统是linux内核启动后挂载的第一个文件系统,这个文件系统可以建立在开发板上,也可以建立在开发主机上,如果建立在开发主机上就叫做网络文件系统,在这里我们使用网络文件系统,搭建过程如下:
    1 把已经做好的根文件系统解压到共享目录下,tar -xvf rootfs.tar -C /nfsroot
    2 设置u-boot环境变量,告诉开发板根文件系统在网络上,等内核启动后挂载网络文件系统,这个操作需要在[u-boot-sd]#界面操作,如下:
    [u-boot-sd]# set bootargs "root=/dev/nfs nfsroot=192.168.1.xxx:/nfsroot  ip=192.168.1.20  console=ttySAC0,115200"                     
    [u-boot-sd]# sav 保存环境变量
    3下载linux内核
    [u-boot-sd]# tftp 50008000 zImage
    4启动内核
    [u-boot-sd]# bootm 50008000

    若启动成功的话LCD会出现图形界面,并且在minicom中会出现shell终端如下:

    [root@uplooking# ]

  • 相关阅读:
    canvas和svg
    表单控件及表单属性
    ajax
    数据结构与算法经典问题解析-Java语言描述
    SpringBoot
    ThreadLocal 原理
    代理模式-结构型
    框架面试
    Hash算法总结
    集合与多线程面试
  • 原文地址:https://www.cnblogs.com/cainiaoaixuexi/p/3021430.html
Copyright © 2020-2023  润新知