zoukankan      html  css  js  c++  java
  • 【linux】内核+文件系统下载到开发板

    K开发

    欢迎转载,转载时请保留作者信息,谢谢。

    邮箱:tangzhongp@163.com

    博客园地址:http://www.cnblogs.com/embedded-tzp

    Csdn博客地址:http://blog.csdn.net/xiayulewa

    开发环境:http://www.cnblogs.com/embedded-tzp/p/4443876.html

        参考了网上很多资料,没有对来源网站做记录,故来源已经不可考,在此表示歉意与感谢。

        文章包括了下载的环境搭建,如何下载,具有一定参考性。

    前期环境配置

    Tftpd服务器搭建

    • Windows:

    直接用tftpd32.exe 或者 tftpd64.exe, 图形界面,方便好用,适用于Ubuntu在虚拟机的情况。

    • Linux下配置tftpd:

      适用于直接在Ubuntu系统下开发,而不经过虚拟机的情况。

    1. 安装tftp-server

    sudo apt-get install tftpd-hpa

    sudo apt-get install tftp-hpa(如果不需要客户端可以不安装)

    tftp-hpa是客户端

    tftpd-hpa是服务器端

    2.配置TFTP服务器

    sudo vim /etc/default/tftpd-hpa

    将原来的内容改为:

    TFTP_USERNAME="tftp"

    TFTP_ADDRESS="0.0.0.0:69″

    TFTP_DIRECTORY="tftp根目录" #服务器目录,如 /home/tang/wkdir/tftp ,需要设置权限为777,chomd 777

    TFTP_OPTIONS="-l –c –s"

    3.重新启动TFTP服务

    sudo service tftpd-hpa restart

    然后需要下载u-boot(bootloader), 此时只能通过jtag方式的jlink 下载。

    • 虚拟机和windows网络配置

    建议少用虚拟机,因为总是会出这样那样的问题,现在我已经直接在原生linux操作系统下开发, 问题少很多。

    (可选)电脑端:禁用无线网卡。

    配置:windows: 192.168.1.2(需要关闭防火墙,否则无法ping)

    虚拟机:ubuntu: 192.168.1.6(当为桥接(虚拟机系统是独立的计算机)时,虚拟机系统需要手工设置ip,子网等,且要和宿主机器处于同一网段,这样才是一个局域网,虚拟机的操作系统和windows才能ping通,具体配置见下)

    开发板:192.168.1.8

    虚拟机ip配置:当虚拟机设置为桥接时,此时虚拟机系统需要手动设置ip,设置方法有两种:

    1: sudo ifconfig eth0 192.168.1.6

    2: 这种方式时记得备份原文件,虚拟机上不了网时试试还原下该文件。

    sudo pluma /etc/NetworkManager/system-connections/Wired connection 1

    修改内容:

    [ipv4]

    method=manual

    #dns=8.8.8.8;

    address1=192.168.1.6/24,192.168.1.2

    然后sudo service network-manager restart

    实际下载

    因为没有使用虚拟机,所以电脑ip为192.168.1.2, 开发板ip为192.168.1.3。

    • ramdisk方式

    根文件系统在内存,为ramdisk:

    电脑端: 开启tftpd服务端程序

    开发板端:

    1. tftp 0x30008000 uImage
    2. tftp 0x32000000 ramdisk.gz
    3. setenv bootargs root=/dev/ram0 initrd=0x32000000,0x200000 rootfstype=ext2 console=ttySAC0,57600 init=/linuxrc ip=192.168.1.3
    4. bootm 0x30008000

          需要注意上述console使用ttySAC0/ ttySAC1的形式,新版本的内核使用ttyS是不行的。

      bootargs参数使用查看如下文档:

      srcDocumentationkernel-parameters.txt

      U_boot bootcmd bootargs参数详解:http://www.cnblogs.com/cornflower/archive/2010/03/27/1698279.html

      initrd: srcDocumentationinitrd.txt

    • nfs方式

    电脑端:

    尽量不要用虚拟机。

    根文件系统在nfs(必须先配置虚拟机ip获取方式为手动):

    Linux mint先菜单->系统管理->网络->设置静态ip, 或者sudo ifconfig eth0 192.168.1.2

    修改 /etc/exports: 内容为:

    /home/tang/wk-tzp/prj/nfs *(insecure,rw,sync,no_subtree_check,all_squash)

    然后:

    sudo exportfs -ra

    sudo /etc/init.d/portmap restart # 有可能失败,不用理会

    sudo /etc/init.d/nfs-kernel-server restart # 或者sudo service nfs-kernel-server restart

    showmount -e :该命令看是否映射成功。

    开发板端:

    1. tftp 0x30008000 uImage
    2. setenv bootargs root=/dev/nfs noinitrd rootfstype=nfs nfsroot=192.168.1.2:/home/tang/wk-tzp/prj/nfs/fs/ramdisk_fs console=ttySAC0,57600 ip=192.168.1.3:192.168.1.2:192.168.1.2:255.255.255.0::eth0:off
    3. bootm 0x30008000

      需要注意上述console使用ttySAC0/ ttySAC1的形式,新版本的内核使用ttyS是不行的。

      下载成功后,使用ls, pwd等命令,开发板就反馈给答案,折腾很伤神,但是总算会有点成就感了。

  • 相关阅读:
    The Worm Turns
    Equations
    Snail’s trouble
    WuKong
    Codeforces 369 C Valera and Elections
    POJ 2186 Popular Cows
    Codefroces 366 D Dima and Trap Graph (最短路)
    Codefroces 366 C Dima and Salad(dp)
    Codefroces 374 B Inna and Sequence (树状数组 || 线段树)
    Codeforces 374 C Inna and Dima (DFS)
  • 原文地址:https://www.cnblogs.com/embedded-tzp/p/4443978.html
Copyright © 2011-2022 走看看