创作本文目的:记录自己的学习历程
实现流程
一、保证ubuntu与开发板的有线连接
能在串口调试助手中通过nfs连接上nfs服务器下的根文件系统
二、编写驱动
led.h
#ifndef __MYLED_H__
#define __MYLED_H__
#define PHY_LED1_MODER 0x50006000
#define PHY_LED1_ODR 0x50006014
#define PHY_LED1_RCC 0x50000A28
#define PHY_LED2_MODER 0x50007000
#define PHY_LED2_ODR 0x50007014
#endif
led.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/io.h>
#include <linux/uaccess.h>
#include "led.h"
#define CNAME "led"
int major;//定义变量接受主设备号
char kbuf[128]={
};//定义数组用于存放和用户之间拷贝的数据
unsigned int *vir_moder;
//unsigned int *vir_moder_2;
unsigned int *vir_odr;
unsigned int *vir_odr_2;
unsigned int *vir_rcc;
//对应open
int mycdev_open(struct inode *inode,struct file *file)
{
printk("%s:%s:%d\n",__FILE__,__func__,__LINE__);
return 0;
}
//read
ssize_t mycdev_read(struct file *file,char __user *ubuf,size_t size,loff_t *loff)
{
//size参数是用户期待读到的字节长度
int ret;
if(size>sizeof(kbuf))
size=sizeof(kbuf);
ret=copy_to_user(ubuf,kbuf,size