zynq7010平台使用air724ug上网
一、说明
本文旨在zynq7010平台配置rndis,使用usb接air724ug上网,并ping通www.baidu.com
二、硬件材料
1、zynq7010开发板(可以不买下载器,本例在linux平台运行不使用,若进行FPGA和arm调试,可购)
tb链接:https://item.taobao.com/item.htm?spm=a230r.1.14.25.7a6b53fb8z7FPk&id=660720940617&ns=1&abbucket=10#detail
2、air724ug模块(YED604(DTU固件)+360M年SIM卡+套餐C)
tb链接:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.696b2e8dlFV2co&id=621549212058&_u=q2n6g0pa3a8b
3、tf卡16gb和读卡器
tb链接:https://detail.tmall.com/item.htm?id=665214575469&spm=a1z09.2.0.0.696b2e8dlFV2co&_u=q2n6g0pa59bf&sku_properties=5919063:6536025


三、基础配置
1、SD卡分区,存放启动文件和根文件系统
新买的SD卡,插入读卡器,插入电脑USB端口,在Ubuntu上执行 ls /dev/sd*,输出/dev/sda /dev/sda1 /dev/sdb,sda是我们虚拟机的硬件,sdb是SD卡。sda有一个分区,而sdb没有分区。
PS: 也有可能你的SD卡是sdc或者sde等等。若SD卡有分区,且内含资料,先备份一下。
执行umount /dev/sdb*,再执行sudo fdisk /dev/sdb进入fdisk控制界面,输入p查看当前分区情况。如果有分区就输入d来删除分区,然后回车,根据提示把所有分区删除(如果有的话)。
输入n来新建一个分区,根据提示确定分区类型,输入p设置为主分区,根据提示输入1确定分区号为1,根据提示按回车默认起始地址(我这里显示2048),再输入+100M表示分区1大小为100M。输入t选择分区格式,输入c把它设置为FAT32格式,输入a把分区1设为引导分区,第一个分区OK。
输入n再建一个分区,根据提示,一直按回车就会自动建立分区2,我这里显示大小是14.8GiB,第二个分区OK
输入p可以看到刚刚建立的两个分区,没问题的话,输入w完成SD卡配置
最后格式化分区,先ls /dev/sdb*可以看到有sdb、sdb1、sdb2
执行sudo mkfs.vfat -F 32 -n boot /dev/sdb1和sudo mkfs.ext4 -L rootfs /dev/sdb2
2、编译文件并到SD卡
对于没有安装petalinux的朋友,不用编译,直接下载文件,最好在linux下解压,boot里的文件copy到SD卡的boot文件夹,rootfs同理
链接:https://pan.baidu.com/s/1aJuW8BRNfLvwmJC49cP0Ig?pwd=04vd
提取码:04vd

安装petalinux且有USB驱动(一般默认有)的,进入当前工程目录(必须要有工程)输入make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig进入linux配置界面,进行模块勾选
`Device Drivers -->
[*]USB support -->
<*>USB Gadget Support -->
<M>USB Gadget Drivers
....................................
<M>Ethernet Gadget (with CDC Ethernet support)
[*] RNDIS support
...................................
<M>CDC Composite Device (Ethernet and ACM)
下一步make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- xilinx_zynq_defconfig在输出文件得到几个g_ether.ko、rndis.ko(还未截图,稍后更新)
把几个ko文件放到U盘里,插入开发板,进入目录,输入depmod和sudo modprobe rndis.ko,安装驱动文件完毕,进入下一步
四、修改QSPI flash并启动
开发板拨码开关调到SD卡启动后,typec连到电脑,波特率115200,uboot倒计时,在倒计时结束前按回车,如果倒计时结束已经开始linux内核并运行,那就重启后再按回车进入uboot环节,依次输入
env default -a
setenv bitstream_load_address 0x100000
setenv bitstream_image system.bit
setenv bitstream_size 0x300000
setenv kernel_img zImage
setenv dtbnetstart 0x2000000
setenv netstart 0x2080000
setenv default_bootcmd ‘if mmcinfo; then run uenvboot; echo Copying Linux from SD to RAM… &&
load mmc 0 ${bitstream_load_address} ${bitstream_image} &&
fpga loadb 0 ${bitstream_load_address} ${bitstream_size} &&
run cp_kernel2ram && run cp_dtb2ram && bootz ${netstart} - ${dtbnetstart}; fi’
saveenv
最后输入boot启动linux
五、安装驱动、接入硬件
进入/lib/modules/4.14.0-xilinx/rndis,输入depmod和modprobe rndis_host.ko来安装rndis驱动
先给air724插上SIM网卡,5V和GND单独供电,此时air724的电源led会亮,再把usb插到开发板的USB-A接口,开发板会打印类似rndis_host 1-1:1.0 eth1这样的信息,同样输入dmesg可以发现rndis设备,再输入udhcpc -i eh1使能eth1,输入ifconfig发现多了一个eth1网卡,由于我的eth0没有连RJ45网线,所以本来不能上网,现在有了eth1,试试ping www.baidu.com
本文结束,中间USB-rndis一节待更新