#include
#include
#include
#include
#include
#include
static
unsigned
int major;
static
struct device * led_dev;
static
struct class * led_class;
static
volatile
unsigned
long
* gpc0_con;
static
volatile
unsigned
long
* gpc0_dat;
int led_open (
struct inode * node,
struct file * filp)
int led_release (
struct inode *node,
struct file * filp)
ssize_t led_write
(struct file * filp,
const
char __user * buff, size_t count, loff_t * offset)
if(led_cmd ==0)
//關燈
else
//開燈
return0;
}const
struct file_operations fops =
;static
int __init drv_led_init
(void
)// 2. 建立類
//引數1: this_module,表示當前模組
//引數2: /sys/class/下建立的目錄名稱,自定義
led_class =
class_create
(this_module,
"led_class");
if(is_err
(led_class)
)//3. 建立裝置結點
// 手動建立裝置節點的方法: mknod /dev/drv_led c 250 0
// 引數1: 建立的類
// 引數2: 裝置的父類
// 引數3: 裝置號,包括了主裝置號和次裝置號,用mkdev來合成
// 引數4: 裝置檔案的私有資料
// 引數5: 裝置節點名稱
led_dev =
device_create
(led_class,
null
,mkdev
(major,0)
,null
,"drv_led");
if(is_err
(led_dev)
)//4. 硬體初始化
//引數1:要對映的實體地址的起始
//引數2:要對映的大小
gpc0_con =
ioremap
(0xe0200060,8
);gpc0_dat = gpc0_con +1;
//控制暫存器的[19:12]清零
*gpc0_con &=~
(0xff
<<12)
;//控制暫存器的[19:12]賦值為0001 0001
*gpc0_con |=(
0x11
<<12)
;//資料暫存器清零,關閉當前所有的led
*gpc0_dat &=~
(0x03
<<3)
;return0;
err_device_create:
class_destroy
(led_class)
; err_class_create:
unregister_chrdev
(major,
"drv_led");
return ret;
}static
void __exit drv_led_exit
(void
)//模組的入口函式
module_init
(drv_led_init)
;//模組的出口函式
module_exit
(drv_led_exit)
;//要遵循gpl協議
module_license
("gpl"
);
#include
#include
#include
#include
#include
#include
intmain
(void
)while
(count--
)close
(fd)
;return0;
}
暫存器對映與直接操作暫存器
一 儲存器對映 與重對映 儲存器本身不具有位址資訊,它的位址是由晶元廠商或使用者分配,給 物理儲存器分配 邏輯位址的過程就稱為儲存器對映 通過這些邏輯位址就可以訪問到相應的儲存器的物理儲存單元。如果給儲存器再分配乙個位址就叫儲存器重對映。如stm32,對於 片上外設,它們以四個位元組為乙個單元,共3...
CC1310直接操作暫存器程式設計
官方 cc13x0 提供的驅動為了相容多種器件和作業系統比較抽象,例如串列埠傳送函式是這樣的 int fast32 t uart write uart handle handle,const void buffer,size t size 輕易看不出來是如何操作暫存器的,這種方式的驅動檔案放在.so...
暫存器(通用暫存器)
因為學習使用的是王爽的 組合語言 第3版 因此也只能提到8086cpo的暫存器。對於其他而言,原理都是相通的。對於8086暫存器,有14個暫存器,主要是 ax bx cx dx si di sp bp ip cs ss ds es psw。一 通用暫存器 8086的通用暫存器有ax bx cx dx...