linux开发环境搭建(2)-tftp下载内核

    xiaoxiao2021-03-25  127

    在前面已经将三个网卡配置好了,本篇文章将介绍如何使用在ubuntu中使用tftp命令下载内核到开发板上。我使用的是网线直连的方式下载,即通过网线直接把pc和开发板连接起来,没有使用到路由器和交换机,只需要一条网线即可,下载非常方便。

    1、配置tftp服务器

    在进行tftp下载之前,需要先在你的ubuntu中搭建好tftp服务器,关于如何配置tftp服务器,可以参考这篇文章

    http://www.linuxidc.com/Linux/2013-07/87366.htm

    2、uboot设置网卡ip地址 这里使用先使用友善已经移植好的tiny6410 uboot作为测试,可以在这里下载http://download.csdn.net/detail/atmega_chen/9772444 在uboot/lib_arm/board.c文件中,在start_armboot函数进入死循环之前加入如下的代码:

    setenv("ipaddr", "192.168.2.3"); setenv("serverip", "192.168.2.2"); setenv("gatewayip", "192.168.2.1"); setenv("bootcmd", "nand read c0008000 400000 500000; bootm c0008000"); setenv("bootargs", "noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw nfsroot=192.168.2.2:/home/chen/friendly_arm_source/filesystem/rootfs,proto=tcp,nfsvers=3 ip=192.168.2.3:192.168.2.2:192.168.1.1:255.255.255.0::eth0:off"); /* main_loop() can return to retry autoboot, if so just run it again. */ for (;;) { main_loop (); }

    其中ipaddr表示设置开发板的ip为192.168.2.3。 serverip表示服务器端的ip为192.168.2.2,也就是我们前面设置的第三个桥接网卡的网卡ip,要保证ipaddr和serverip在同一网段。 gatewayip为设置网关。 bootcmd表示开机启动命令,这句话表示开机的时候从nandflash的0x400000位置处读取大小为0x500000的数据到内存的0xc0008000处,也就是把内核读到内存的0xc0008000处,然后使用bootm启动内核。 bootargs为挂载nfs文件系统使用到的启动行参数,后面会介绍。

    3、编译烧写测试 加完后,可以编译uboot,把生成的u-boot.bin通过dnw的方式下载到nandflash中,然后启动开发板。 启动的过长中不断按空格键,这样就会弹出一个友善的菜单,如下图

    选择q,退出到uboot原始的shell命令行,输入print查看设置的ip是否都正确,可以看到开发板上的ip和我们设置的ip是一致的。

    尝试ping一下tftp服务器,输入ping 192.168.2.2,如下图,可以ping的通。如果ping不通需要检查下虚拟机和windows的防火墙是否有关闭掉。

    在ping的过程中,可以在windows的网络连接正在识别新的网络连接,如下图

    这个网络连接的ip如下,这个网卡的名字是Realtek PCIe GBE Family Controller,也就是我的PC的有线网卡。

    所以我们使用网线直连通过tftp可以下载文件的原理是,在使用tftp的时候,pc机上的有线网卡会从开发板的网卡哪里获取到一个ip,只要pc的有线网卡有了ip,连接起来了,就可以充当开发板和虚拟机之间通讯的中转站。windows中的有线网卡的ip具体是多少我们可以不用理,反正这个网卡的网络连接只有在使用tftp下载或者挂载nfs根文件系统的时候才会出现,其他情况下是不会出现的。

    在开发板可以ping通虚拟机以后,就可以使用tftp下载了,把要下载的文件放到/home/tftpboot目录下,这个目录是你自己定义的tftp的服务器目录,放到自己定义的目录中去就可以了。使用tftpboot下载,tftpboot [loadAddress] [bootfilename] 如下为下载uImage内核到内存0xc0008000位置处的操作,可以看到文件被成功下载到了内存中。

    到这里tftp下载文件到开发板就介绍完了,下一篇会介绍如何通过nfs挂载根文件系统。

    转载请注明原文地址: https://ju.6miu.com/read-12093.html

    最新回复(0)