内容:(课程主要内容,代码/作业,收获,感悟,建议等)
主要内容:(1)对昨天留下的作业进行讲解;
(2)复习昨天讲解的知识
(3)讲解今天所需要的知识点以及操作步骤
#include <sys/ioctl.h>
int ioctl(int d, int request, …);
参数1: 要操作的外设模块的文件描述符
参数2: 对外设模块的操作指令
参数3的有无取决于参数2
参数2:命令由4部分组成 幻数 序数 数据传输方向 数据大小
幻数: 0 ~ 0xff
序数:命令编号
_IO(type,nr) ; //没有参数的命令
_IOR(type,nr,size); //从驱动读取数据
_IOW(type,nr,size); //向驱动写数据
_IOWR(type,nr,size); //双向传输
这里的size只需要填充参数的类型
***************现在虚拟机上编辑代码,然后用arm-linux-gcc编译,然后将生成的可执行文件移动或者复制到~/Documents/board/nfs/rootfs下面
开关 串口 网线三条线插上 打开开关
第一步:配置电脑的ip地址 适配器—》右击以太网—》属性—》TCP/ipv4—>属性 使用下面的IP地址 自己配置ip 网关 子网掩码
第二步:配置虚拟机的ip
编辑—》虚拟网络编辑器—》桥接模式----》桥接到本机以太网----》保存
虚拟机—》设置----》网络适配器----》设备状态全勾选—》桥接模式(勾选)
右击网络标志----》edit connections—>add---->ipv4 settings—>manual—>add—>自己添加ip 网关 子网掩码 (ip要跟电脑在同一网段)----》save
右击网络标志—》选择刚才编辑的这个连接
用ifconfig命令查看一下ip
ping 电脑的ip
查看COM号是多少,然后用putty串口助手打开,波特率115200 流控制关闭
启动板子,用pri查看环境变量
setenv ipaddr 192.168.1.188
//板子的ip
setenv ipaddr 192.168.9.120
setenv serverip 192.168.1.134 //虚拟机的ip
setenv serverip 192.168.15.255
setenv gatewayip 192.168.1.1
setenv gatewayip 192.168.15.1
setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.15.255:/home/farsight/Documents/board/nfs/rootfs rw rootwait console=ttySAC2,115200n8 init=/linuxrc ip=192.168.9.120 clk_ignore_unused
saveenv
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.134:/home/farsight/Documents/board/nfs/rootfs rw rootwait console=ttySAC2,115200n8 init=/linuxrc ip=192.168.1.188 clk_ignore_unused
启动内核:
先去虚拟机上重启tftp和nfs
sudo service tft… restart
sudo service nfs… restart (Tab补全)
代码:点灯实验
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <strings.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define LED_MAGIC 'h'
#define CMD_ON 1
#define CMD_OFF 2
#define LED_ON _IOW(LED_MAGIC,CMD_ON,int)
//0 1 2 3
int main()
{
int ledFd = open("/dev/led",O_RDWR);
if(ledFd < 0)
{
perror("led");
return -1;
}
ioctl(ledFd,LED_ON,1);
close(ledFd);
}
收获和感悟:调试网络,配置时一定要耐心,稍稍不注意就出错了。本人深有感触,一个小小的网络配置搞了半天,找同学帮忙,找老师帮忙,串口调试时要注意波特率的更改。编写代码时要细心,理清条理,看清提示改bug,改起来会比较快。听讲时一定要记一记,随手写一写比较容易被忽略的步骤。每一次的开发板都是以点灯开始的,这是一个基础实验,只有将基础实验做好那么我们才能一步一个脚印的完成实训。