【linux内核驱动day01】
linux内核驱动:
开发板串口线接USB-TTL,连接虚拟机
找到ttyUSB0说明连接成功
sudo minicom -s进入按照文档设置
exit from minicom
再执行 sudo minicom,开发板上电,弹出很多指令
设置开发板地址 :
ifconfig eth0 192.168.1.100/24 up
确认虚拟机地址:192.168.1.158
在开发板终端里ping 虚拟机 :
ping 192.168.1.158
在Linux终端中ping开发板:
ping 192.168.1.100
挂载:
查询虚拟机里的文件目录:
在开发板终端里执行:
mount -o nolock,nfsvers=3 192.168.1.158:/home/linux/nfs /mnt
cd /mnt中查询目录
与虚拟机终端里一致,挂载成功
在虚拟机的rootfs目录下,写一个main.c文件,打印hello world
编译:
arm-linux-gnueabihf-gcc main.c -o imxhello
在开发板终端中运行:
./imxhello
在虚拟机写程序,开发板终端挂载,运行
编译器是用来翻译的
使用gcc 编译的,是给x86运行的
使用 arm-linux-gnueabihf-gcc 编译出来的 是给开发板(ARM)运行的
uboot存在于SD卡,tftp下载zlmage,nfs挂载rootfs
1、sd卡中存在烧写好的uboot
2、在ubuntu的tftp服务目录下必须存在zlmage(+dtb)
3、在ubuntu的nfs服务目录下必须存在rootfs
配置nfs的配置文件:
sudo vim /etc/exports
配置tftp配置文件:
sudo vim /etc/default/tftpd-hpa
将zlmage和imx6ull-alientek-emmc.dtb拷贝到tftpboot目录下
将rootfs.tar.bz2拷贝到nfs目录下并解压。解压命令:tar -xvf rootfs.tar.bz2 -C rootfs
uboot命令:(uboot启动倒计时为0前按回车进入uboot命令行)
- help :?帮助
- printeny(print):打印环境变量
- setenv bootdelay 5
- saveenv 保存环境变量
- setenv 环境变量名 :删除环境变量
Ping:
- setenv ipaddr 192.168.1.158
- setenv ethaddr 00:04:9f:04:d2:35
- setenv gatewayip 192.168.1.1
- setenv netmask 255.255.255.0
- setenv serverip 192.168.1.158(下载时候用)
- saveenv
uboot阶段的ping 是单向的,只能在uboot中Ping虚拟机,不能在虚拟机中ping uboot
下载:
tftp 0x80800000 zlmage :下载zlmage到内存的0x80800000地址处
tftp 0x83000000 imx6ull-alientek-emmc.dtb
bootz 0x80800000 - 0x83000000
启动内存0x80800000地址处的内核