当前位置: 首页 > news >正文

网络推广网站/网站优化方式有哪些

网络推广网站,网站优化方式有哪些,如何建立新的企业网站,营销策划公司名字大全从零开始编写linux驱动时,无论采用linux的何种架构,基本上都可以归纳为以下驱动八要素。 1.1.1 建立Linux驱动框架 Linux内核在使用驱动时首先要装载驱动,在装载过程中进行一些初始化动作,如建立设备文件、分配内存等。在驱动…

从零开始编写linux驱动时,无论采用linux的何种架构,基本上都可以归纳为以下驱动八要素。

1.1.1    建立Linux驱动框架

Linux内核在使用驱动时首先要装载驱动,在装载过程中进行一些初始化动作,如建立设备文件、分配内存等。在驱动程序中需提供相应函数来处理驱动初始化工作,该函数须使用module_init宏指定。Linux系统在退出时需卸载Linux驱动,在卸载过程中进行一些退出动作,如删除设备文件、释放内存等。在驱动程序中需提供相应函数来处理退出工作,该函数须使用module_exit宏指定。Linux驱动程序一般都要这两个宏指定这两个函数,所以包含这两个宏以及其所指定的两个函数的C程序可看作是Linux驱动的框架。

蜂鸣器驱动对应的框架程序如下:

static struct platform_driver x4412_beep_driver = {.probe                  = x4412_beep_probe,.remove               = x4412_beep_remove,.suspend     = x4412_beep_suspend,.resume                = x4412_beep_resume,.driver                  = {.name         = "x4412-beep",},
};static struct platform_device x4412_beep_device = {.name      = "x4412-beep",.id        = -1,
};static int __devinit x4412_beep_init(void)
{intret;printk("x4412beep driver\r\n");ret =platform_device_register(&x4412_beep_device);if(ret)printk("failedto register x4412 beep device\n");ret =platform_driver_register(&x4412_beep_driver);if(ret)printk("failed to register x4412beep driver\n");returnret;
}static void x4412_beep_exit(void)
{platform_driver_unregister(&x4412_beep_driver);
}module_init(x4412_beep_init);
module_exit(x4412_beep_exit);

1.1.2    注册和注销设备文件

任何Linux驱动都需要有一个设备文件来与应用程序进行交互。建立设备文件的工作一般在上一步module_init宏指定的函数中完成的,可以使用misc_register函数创建设备文件。删除设备文件的工作一般在上一步module_exit宏指定的函数中完成的,可以使用misc_deregister函数删除设备文件。

蜂鸣器驱动对应注册和注销设备文件的程序如下:

static int x4412_beep_probe(struct platform_device*pdev)
{__x4412_beep_probe();returnsysfs_create_group(&pdev->dev.kobj, &x4412_beep_attr_group);
}static int x4412_beep_remove(struct platform_device*pdev)
{__x4412_beep_remove();sysfs_remove_group(&pdev->dev.kobj,&x4412_beep_attr_group);return0;
}

1.1.3    指定驱动相关信息

驱动程序是自描述的,驱动程序的信息需要在驱动源代码中指定。通过MODULE_AUTHOR(作者姓名)、MODULE_LICENSE(使用的开源协议)、MODULE_ALIAS(别名)、MODULE_DESCRIPTION(驱动描述)等宏来指定与驱动相关的信息,这些宏一般写在驱动源码文件的结尾。可通过modinfo命令获取这些信息。

例如蜂鸣器驱动中指定的驱动信息如下:

MODULE_LICENSE("GPL");
MODULE_AUTHOR("www.9tripod.com");
MODULE_DESCRIPTION("x4412 beep driver");

使用modinfo命令查询该驱动的信息:

[root@x4412 ~]# modinfo x4412-beep.ko
filename:      x4412-beep.ko
license:       GPL
author:        www.9tripod.com
description:   x4412 beep driver
depends:       
vermagic:      3.0.15-9tripod SMP preempt mod_unload ARMv7 p2v8
[root@x4412 ~]#

1.1.4    指定回调函数

    Linux驱动包含了很多动作,也称为事件,如读写事件等。触发相应事件时Linux系统会自动调用对于驱动程序的相应回调函数。一个驱动程序不一定要指定所有的回调函数。回调函数通过相关机制进行注册。如与设备文件相关的回调函数使用misc_register函数注册。

1.1.5    编写业务逻辑

业务逻辑,即是我们驱动需要实现的具体功能了。例如蜂鸣器驱动中对应的业务逻辑函数如下:

static ssize_t x4412_beep_read(struct device *dev,struct device_attribute *attr, char *buf)
{if(!strcmp(attr->attr.name,"state")){if(__x4412_beep_status!= 0)returnstrlcpy(buf, "1\n", 3);elsereturnstrlcpy(buf, "0\n", 3);}returnstrlcpy(buf, "\n", 3);
}static ssize_t x4412_beep_write(struct device *dev,struct device_attribute *attr, const char *buf, size_t count)
{unsignedlong on = simple_strtoul(buf, NULL, 10);if(!strcmp(attr->attr.name,"state")){if(on){gpio_set_value(EXYNOS4_GPD0(1),1);__x4412_beep_status= 1;}else{gpio_set_value(EXYNOS4_GPD0(1),0);__x4412_beep_status= 0;}}returncount;
}

       这里对应一个读写函数,当我们执行如下指令时,会调用x4412_beep_read函数读取当前蜂鸣器的状态:

cat /sys/devices/platform/x4412-beep/state

       执行如下指令时,会调用x4412_beep_write函数打开蜂鸣器:

echo 1 > /sys/devices/platform/x4412-beep/state

执行如下指令时,会调用x4412_beep_write函数关闭蜂鸣器:

echo 0 > /sys/devices/platform/x4412-beep/state

1.1.6    编写Makefile和Kconfig文件

Linux内核源码的编译规则是通过Makefile文件定义的,每个Linux驱动程序必须要有一个Makefile文件。蜂鸣器驱动对应的Makefile文件如下:

obj-$(CONFIG_X4412_BEEP_DRIVER) += x4412-beep.o

       对应的Kconfig文件如下:

config X4412_BEEP_DRIVERtristate"X4412 beep driver"defaultyhelpcompilefor x4412 beep driver,y for kernel,m for module.

1.1.7    编译Linux驱动程序

如前文所说,Linux驱动程序可直接编译进内核,也可以作为模块单独编译。编译完成后,将会在驱动目录生成目标文件,对应蜂鸣器驱动的目标文件为:

编译进内核:x4412-beep.o

编译成模块:x4412-beep.ko

1.1.8    安装和卸载Linux驱动

    如果将驱动编译进内核,驱动程序就会自动装载。如果Linux驱动程序以模块形式单独存在,需要使用insmod或modprobe命令装载Linux驱动模块,使用rmmod命令卸载该模块。


更多x4412&ibox项目实战请进:www.xboot.org

http://www.jmfq.cn/news/5004001.html

相关文章:

  • php网站开发百度百科/优化 英语
  • 如何快速制作一个网站/长沙谷歌seo收费
  • 枣庄网站制作公司/seo com
  • 帮老板做网站/网络营销的营销策略
  • 医院网站建设招标/哪些网站可以免费推广
  • 用动物做网站名称/seo的内容有哪些
  • 如何给网站做第三方流量监测/厦门关键词排名推广
  • 平面设计师常用的素材网站/合肥网站seo整站优化
  • 交互型网站难做吗/学电脑培训班多少一个月
  • 做企业网站怎么收费的/日本今日新闻头条
  • 江苏润通市政建设工程有限公司网站/新乡网站seo
  • 工信部icp备案是什么意思/windows优化大师是电脑自带的吗
  • 做网站的公司高创/域名解析ip地址
  • 服务器的做网站空间/西安网站到首页排名
  • 旅游网站建设外现状/怎么打开网站
  • 伏羲方舟网站建设/好搜网
  • 做网站公司会场主持台词/网站seo置顶 乐云践新专家
  • 资源专业网站优化排名/百度知识营销
  • 不忘初心网站建设/产品推广策略
  • 通灵人预言2023年疫情/seo网站推广有哪些
  • 去哪个网站找做贷款的靠谱/网页设计模板素材图片
  • 聊城做网站lcbywl/产品软文代写
  • 河北省建设厅注册中心网站首页/商品推广软文范例100字
  • 网站建设专业英文/谷歌账号
  • 在哪里学做网站/重庆网站
  • 萍乡公司做网站/sem推广竞价托管
  • 网站中下滑菜单怎么做/seo分析与优化实训心得
  • 新手如何自学编程/百度seo视频教程
  • dw做网站如何让用户可编辑/搜索排行
  • 做网站用的笔记本配置/百度云官网登录入口