gpio匯出,以及模組之間變數可見模組驅動例項

2021-08-08 16:41:46 字數 2412 閱讀 7310

一 驅動例項

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

/*gpio3_3:用於檢測串列埠是否出現overrun狀態*/

#define serial_states_gpio 67

/*匯出符號讓其他核心模組可見,然後還需要在相應的.h檔案中宣告(extern volatile unsigned long serial_states;)*/

volatile

unsigned

long serial_states;

export_symbol_gpl(serial_states);

static

int serial_states_open(struct inode *inode, struct file *file)

static

int serial_states_release(struct inode *inode, struct file *file)

static

int serial_states_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)

return count;

}static

int serial_states_write(struct file *filp, const

char __user *buf, size_t count, loff_t *f_pos)

static

const

struct file_operations serial_states_fops = ;

static

struct miscdevice serial_states_device = ;

static

int __init u9500_init(void)

/*判斷該gpio是否有效*/

ret = gpio_is_valid(serial_states_gpio);

if (0 == ret)

/*請求gpio:其他地方就不能用了*/

ret = gpio_request(serial_states_gpio, "serial_states_gpio");

if (0 != ret)

goto err2;

/*設定gpio方向,以及設定輸出值*/

ret = gpio_direction_output(serial_states_gpio, 0);

if (0 != ret)

goto err3;

/*設定gpio輸出值*/

gpio_set_value(serial_states_gpio, 0);

printk("serial states module probe sucsecc!\n");

return

0;err3:

gpio_free(serial_states_gpio);

err2:

misc_deregister(&serial_states_device);

err1:

return ret;

}module_init(u9500_init);

static

void __exit u9500_exit(void)

module_exit(u9500_exit);

module_author("vector");

module_license("gpl v2");

module_description("serial_states driver");

二 makefile 例項

serialstates-objs := serial_states.o

obj-m := serialstates.o

pwd := $(shell pwd)

kdir := /home/vec/mydisk1/soure/kernel/obj

all:

$(make) -c $(kdir) m=$(pwd)

clean:

rm -rf .*.cmd *.o *.mod

.c *.ko

.tmp_versions modules.order module.symvers

Webpack模組的匯出以及之間的依賴引用

模組化開發說白了就不必在html頁面,引用所有的js檔案。所有的js檔案都進行模組化設定,模組之間可以相互引用。webpack模組化開發是使用module.exports進行相關方法和屬性的匯出,提供其它模組使用。每個模組都有自己的作用域,並且每個模組的屬性和方法都是區域性的,其它的模組是無法使用,...

三 Webpack模組的匯出以及之間的依賴引用

一 模組化開發 模組化開發說白了就不必在html頁面,引用所有的js檔案。所有的js檔案都進行模組化設定,模組之間可以相互引用。webpack模組化開發是使用module.exports進行相關方法和屬性的匯出,提供其它模組使用。每個模組的 都有自己的作用域,並且每個模組的屬性和方法都是區域性的,其...

Webpack模組的匯出以及之間的依賴引用

一 模組化開發 模組化開發說白了就不必在html頁面,引用所有的js檔案。所有的js檔案都進行模組化設定,模組之間可以相互引用。webpack模組化開發是使用module.exports進行相關方法和屬性的匯出,提供其它模組使用。每個模組的 都有自己的作用域,並且每個模組的屬性和方法都是區域性的,其...