【linux 随手笔记3】

开发板运行U-Boot,在终端下使用Ping命令是能Ping通PC机,但PC机Ping不同U-Boot。

   在开发行U-Boo下的Ethernet 驱动时,只能在Target上去Ping 外面的主机能检测以太网是否连通,如果在外面的主机上去ping目标板,则即使目标板上的Ethernet一切OK,也是ping 不通的。这是因为行U-Boo是一个单线程main_loop函数+中断处理的架构,中断处理程序处理串口输入输出等,main_loop解析U-Boot命令, 并没有另外的任务接受并处理ICMP的包,即使U-Boot支持ICMP的协议栈。

   U-Boot的Ping是通过一个NETLOOP发送和接受ARP包的!LOOP会不断的检测是否接受到ARP REPLY。所以可以Ping通PC。但是U-Boot模式下是单线程的,总不会老是停在那里检测是否有ARP 。PC  Ping通U-Boot的前提是:U-Boot存在一个类似于ARP请求响应的守护进程

setenv ipaddr 172.20.88.149;setenv serverip 172.20.88.137; setenv bootargs console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait ip=none devtmpfs.mount=1 ${optargs};
mw.b 0x20000000x00 0x1fcc00;
tftpboot 0x2000000 i-scan-pl.bit
fpga loadb 0 0x2000000 ${filesize};
fatload mmc 0 0x8000 zImage;
fatload mmc 0 0x103cdda8 devicetree.dtb;
bootz 0x8000 - 0x103cdda8

这是一段嵌入式系统的启动脚本。根据给定的设置,可以解释如下:

  1. setenv ipaddr 172.20.88.149:设置设备的 IP 地址为 172.20.88.149。
  2. setenv serverip 172.20.88.137:设置 TFTP 服务器的 IP 地址为 172.20.88.137。
  3. setenv bootargs console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait ip=none devtmpfs.mount=1 ${optargs}:设置内核启动参数,包括控制台设备、根文件系统、挂载设置等。
  4. mw.b 0x20000000x00 0x1fcc00:将指定范围内的内存清零。
  5. tftpboot 0x2000000 i-scan-pl.bit:通过 TFTP 从服务器下载位流文件(i-scan-pl.bit)到内存地址 0x2000000。
  6. fpga loadb 0 0x2000000 ${filesize}:将位流文件加载到 FPGA 中。
  7. fatload mmc 0 0x8000 zImage:从 MMC 存储卡的指定分区(mmc 0)加载 Linux 内核映像(zImage)到内存地址 0x8000。
  8. fatload mmc 0 0x103cdda8 devicetree.dtb:从 MMC 存储卡的指定分区(mmc 0)加载设备树文件(devicetree.dtb)到内存地址 0x103cdda8。
  9. bootz 0x8000 - 0x103cdda8:启动 Linux 内核,指定内核映像和设备树的加载地址。

这段脚本的作用是启动嵌入式系统,包括加载 FPGA 位流、Linux 内核和设备树,并启动系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值