今天购买的阿尔法开发板,准备开始学习正点原子驱动开发。板子还没到,先看看网络环境搭建。
1、网络IP相关知识
IP地址:网络号部分 + 主机号部分。
1、网络部分:确定终端是不是在同一网段。
2、主机部分:
IP地址分为A、B、C三类:
A类,网络号为前8位,后24位位主机号。
B类,网络号为前16位,后16位位主机号。
C类,网络号为前24位,后8位位主机号。
1.1、子网掩码
1、子网掩码不能单独存在,它必须结合IP地址一起使用。
2、子网掩码只有一个作用:就是将某个IP地址划分成网络地址和主机地址两部分。
3、子网掩码是32位的二进制地址,为1代表该位是网络位,为0代表主机位。
1.2、同一网段
1、可以简单理解为:同一网络号为同一网段。
1.3、举例说明
比如一个IP地址为192.16.1.3:
1、单看一个IP地址是看不出来哪些是网络号,哪些是主机号,需要知道子网掩码或则常用的表示方法。
2、常用的表示方法1:192.168.1.3/24 :后面的/24表示IP地址前面的24位二进制代表网络ID,也就是192.168.1。
3、常用的表示方法2:192.168.1.3/24 netmask 255.255.255.0 :通过子网掩码可以判断IP地址前面的24位二进制代表网络ID,也就是192.168.1。网络地址是192.168.1.0
1.4、主机地址计算方式
IP地址与子网掩码的非的结果想与就是主机地址。
IP地址:
十进制:192.168.1.1
二进制:11000000.10101000.00000001.00000001
子网掩码:
十进制:255.255.255.0
二进制:11111111.11111111.11111111.00000000
子网掩码取非:00000000.00000000.00000000.11111111
子网掩码取非 与上 IP地址:00000000.00000000.00000000.00000001
即主机地址为0.0.0.1。
2、环境搭建
2022/10/29
场景:本人是在出租房里,采用的是电脑连wifi,开发板直连电脑这种方式。
最近正点原子更新了阿尔法底板,之前的内核镜像以及uboot镜像不再适用于新的开发板,需要去官方下载最新的镜像。
本人没看过正点原子第一、二、三期视频,直接开始第四期驱动。
2.1、虚拟机创建
为了减少搭建开发环境的时间,直接使用的是正点原子提高的IMX6U虚拟机,下方直接下载即可。
下载后直接参考pdf配置即可。
创建后如下图
2.2、网络配置
我的环境是电脑连wifi上网,开发板和电脑通过网线连接。
网络配置参考的是 \正点原子\【正点原子】阿尔法Linux开发板 PDF资料合集\【正点原子】阿尔法Linux开发板 (PDF资料合集)\用户手册\手册\手册下载、【正点原子】I.MX6U网络环境TFTP&NFS搭建手册V1.3.1
这个文档中1.4章节,三者能够互相ping通即可。
我这里本次配置:
虚拟机ip 192.168.10.100
开发板ip 192.18.10.50
电脑以太网ip 192.168.10.200
2.3、网络挂载
前文提到正点原子将底板更新(2.4底板),我们需要修改uboot以及内核的驱动代码,来适配2.4底板。
进入虚拟机 /home/alientek/alpha/alientek-zzk
目录,即可看见kernel和uboot源码。参考2.4底板uboot、kernel配置教程 编出zImage和dtb。
将编出来的zImage和dtb文件放入tftp目录:/home/alientek/linux/tftp
2.3.1 设置开发板uboot环境变量
开发板上电,在uboot倒计时结束前按下回车进入命令行模式。
根据自己实际情况设定,我这里虚拟机ip地址是192.168.10.100。
setenv ipaddr 192.168.10.120 //设置开发板ip
setenv ethaddr b8:ae:1d:01:00:00 //地址
setenv gatewayip 192.168.10.1 //网关
setenv netmask 255.255.255.0 //子网掩码
setenv serverip 192.168.10.100 //虚拟机的ip地址
saveenv
设置完尝试ping虚拟机,能够ping通即可。
2.3.1、挂载内核、设备树
setenv bootcmd 'tftp 80800000 zImage;tftp 83000000 imx6ull-alientek-emmc.dtb;bootz 80800000 - 83000000'
saveenv
2.3.2、nfs挂载文件系统
ip地址根据自己实际情况填写。
setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.10.100:/home/alientek/linux/nfs/rootfs,proto=tcp rw ip=192.168.10.120:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off'
saveenv
如上图即代表从虚拟机中下载内核镜像和设备树并启动。能够正常启动代表挂载成功。
可以看见文件目录和虚拟机中nfs文件系统一致。
之后驱动编出的ko都放入 /home/alientek/linux/nfs/rootfs/lib/modules/4.1.15
目录,开发板对应目录也会有相应文件。
我们在开发板新建一个demo1.c,在对应的虚拟机中也会出现,如下图:
至此环境搭建完成。