韦东山全系列快速入门学习笔记3-驱动程序基石

一 休眠唤醒:

  1. 中断上下文不能够休眠;
    进程/线程上下文可以休眠。
    所以,一般在进程上下文中调用比较复杂的耗时间的函数和操作(I2C总线传输/SPI总线传输/Uart传输等)
  2. 关于上机试验:
/*1.装载驱动程序*/
root@ALIENTEK-IMX6U:/mnt/linux-imx-4.1.15-2.1.0/source/02_read_key_irq# insmod gpio_key_drv.ko
/home/book/linux-imx-4.1.15-2.1.0/source/02_read_key_irq/gpio_key_drv.c gpio_key_init line 175
/home/book/linux-imx-4.1.15-2.1.0/source/02_read_key_irq/gpio_key_drv.c gpio_key_probe line 90

root@ALIENTEK-IMX6U:/mnt/linux-imx-4.1.15-2.1.0/source/02_read_key_irq# ls
Makefile  Module.symvers  button_test  button_test.c  gpio_key_drv.c  gpio_key_drv.ko  gpio_key_drv.mod.c  gpio_key_drv.mod.o  gpio_key_drv.o  modules.order

/*2.查看设备节点,设备节点与驱动程序的register_chrdev和device_create中体现的名字完全一致*/
root@ALIENTEK-IMX6U:/mnt/linux-imx-4.1.15-2.1.0/source/02_read_key_irq# ls /dev/100ask_gpio_key
/dev/100ask_gpio_key

/*3.运行设备应用程序*/
root@ALIENTEK-IMX6U:/mnt/linux-imx-4.1.15-2.1.0/source/02_read_key_irq# ./button_test /dev/100ask_gpio_key
key 18 0//驱动程序打印的信息
get button : 0x1200//app打印的信息 0x12=18
key 18 1
get button : 0x1201
key 18 0
get button : 0x1200
key 18 1
get button : 0x1201

/*查询线程号,我们的app线程号为660*/
root@ALIENTEK-IMX6U:/mnt/linux-imx-4.1.15-2.1.0/source/02_read_key_irq# ps
  PID TTY          TIME CMD
  630 ttymxc0  00:00:00 sh
  660 ttymxc0  00:00:00 button_test
  662 ttymxc0  00:00:00 ps

/*杀掉该线程*/
root@ALIENTEK-IMX6U:/mnt/linux-imx-4.1.15-2.1.0/source/02_read_key_irq# kill -9 660
root@ALIENTEK-IMX6U:/mnt/linux-imx-4.1.15-2.1.0/source/02_read_key_irq# ps
  PID TTY          TIME CMD
  630 ttymxc0  00:00:00 sh
  663 ttymxc0  00:00:00 ps
[1]+  Killed                  ./button_test /dev/100ask_gpio_key

二 异步通知:发信号

  1. 关于linux控制台kill命令:杀掉一个进程
kill -9 xxx(进程号)
-9:指代的信号是SIGKILL信号
  1. 关于linux驱动程序kill_fasync函数:
    与1.功能完全一致;
    kill_fasync(PID,SIGIO);

三 mmap:MMU和虚拟地址

  1. MMU:用于把CPU使用的虚拟地址转换为物理地址;
  2. 虚拟地址例子:
    (1)r-xp(私有数据):x表示可执行属性,表示代码区;
    (2)rw-p:可读可写,表示数据区;或者heap区;或者stack区

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值