驅動學習7 led動態對映與結構體

2021-08-02 02:43:34 字數 3131 閱讀 4550

#include // module_init  module_exit

#include // __init __exit

#include //register_chrdev file_operations

#include //copy_from_user copy_to_user

#include //ioremap

#include //request_mem_region

#define demo_name "demo_char"

#define gpj0_regbase 0xe0200240

typedef

struct gpj0reg

gpj0_reg_t;

static

int my_major;

gpj0_reg_t *pgpj0reg;

static

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

static

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

static ssize_t demo_chrdev_write(struct file *file, const

char __user *ubuf, size_t count, loff_t *ppos)

; ret = copy_from_user(kbuf,ubuf,count);/*返回值為0成功*/

if(ret)

if(!strcmp(kbuf,"0")) /*亮*/

pgpj0reg->gpj0dat &= ~((1

<<3)|(1

<<4)|(1

<<5));

else

if(!strcmp(kbuf,"1")) /*滅*/

pgpj0reg->gpj0dat |= ((1

<<3)|(1

<<4)|(1

<<5));

else

printk(kern_info "input err\r\n");

printk(kern_info "copy_from_user %s\r\n",kbuf);

return0;}

static

const

struct file_operations demo_fops = ;

static

int __init chrdev_init(void) /*模組安裝*/

printk(kern_info "chrdev_init success.\n");

if(!request_mem_region(gpj0_regbase,sizeof(gpj0_reg_t),"gpj0reg"))/*申請i/o記憶體*/

return -einval;

pgpj0reg = ioremap(gpj0_regbase,sizeof(gpj0_reg_t));/*動態對映*/

return0;}

static

void __exit chrdev_exit(void)/*模組解除安裝*/

module_init(chrdev_init);

module_exit(chrdev_exit);

module_license("gpl");/*描述模組的許可證*/

module_author("xin-ya zhu");/*描述模組的作者*/

module_description("demo test");/*描述模組的介紹資訊*/

module_alias("alias ***");/*描述模組的別名資訊*/

#include 

#include

#include

#include //open close

#include

#include

#define file "/dev/demo_text"

#define led_on "0"

#define led_off "1"

int main(void)

; fd = open(file,o_rdwr);

if(fd<0)

write(fd,led_on,strlen(led_on));

sleep(1);

write(fd,led_off,strlen(led_off));

sleep(1);

write(fd,led_on,strlen(led_on));

sleep(1);

write(fd,led_off,strlen(led_off));

sleep(1);

close(fd);

return0;}

/****

****

****

****

****

****

***[root@zhuxinya text]# insmod demo.ko

[15338.775103] chrdev_init success.

[root@zhuxinya text]# mknod /dev/demo_text c 250 0

[15355.778153] demo_chrdev_open

[15355.779573] copy_from_user 0

[15356.782604] copy_from_user 1

[15357.784135] copy_from_user 0

[15358.785707] copy_from_user 1

[15359.787279] demo_chrdev_release

[root@zhuxinya text]# rm /dev/demo_text

[root@zhuxinya text]# rmmod demo.ko

[15379.135901] chrdev_exit

****

****

****

****

****

****

****

*/

自學51微控制器 7 LED點陣學習

3 取模軟體簡單介紹 4 點陣動畫顯示 5.收穫 led點陣由多個led小燈構成,以8 8led點陣介紹,實物圖和內部原理圖如下。圖7 2左側8個引腳為內部led小燈陽極,上側8個引腳為陰極。點亮led點陣與點亮led小燈原理相似,根據led點陣電路圖分析即可,詳細見第三章。利用定時器中斷和數碼管動...

資料結構學習 遞迴與動態程式設計

然後他給出了用陣列實現的乙個計算n個fibonacci數的非遞迴程式,接著說實際只需跟蹤2個值就可以了,因為最後得到f n 只需前兩個值,那就正好跟我上面寫的非遞迴程式一致。接著他還提到了int 型也就是32位整數可以存放的最大fibonacci數為f 45 1836311903然後我用自己的程式算...

動態規劃 資料結構與演算法學習

求最值窮舉 重疊子問題 暴力窮舉效率低下 最優子結構 通過子問題最值得到原問題最值 狀態轉移方程 正確的窮舉 明確 狀態 定義dp陣列 函式的意義 明確 選擇 明確base case fibnacci數列 遞迴 intfib int n 備忘錄解法,自頂向下 intfib int n inthelp...