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

烟台市建设局网站牡丹江seo网站推广蜘蛛屯优化排名

烟台市建设局网站,牡丹江seo网站推广蜘蛛屯优化排名,网站建设保密协议范本,广州做网站找哪个公司好编译OpenWrt内核驱动可以参考OpenWrt内部其它驱动的编写例程,来修改成自己需要的驱动 一、OpenWrt源代码获取与编译 1.1、搭建环境 下载OpenWrt的官方源码: git clone https://github.com/openwrt/openwrt.git1.2、安装编译依赖项 sudo apt update -…

  编译OpenWrt内核驱动可以参考OpenWrt内部其它驱动的编写例程,来修改成自己需要的驱动

一、OpenWrt源代码获取与编译

1.1、搭建环境

  下载OpenWrt的官方源码:

git clone https://github.com/openwrt/openwrt.git

1.2、安装编译依赖项

sudo apt update -y
sudo apt full-upgrade -y
sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
vim wget xmlto xxd zlib1g-dev python3-setuptools

1.3、更新 feeds

  进入openwrt目录后执行以下指令


./scripts/feeds update -a
./scripts/feeds install -a

1.4、配置编译选项

  根据自己的平台来选择编译选项

make menuconfig

1.5、下载 dl 库

  进入openwrt目录后执行以下指令

make download -j8

1.6、编译

make V=s -j1

二、OpenWrt驱动源代码分析

  OpenWrt驱动存放目录为openwrt\package\kernel
在这里插入图片描述
  以gpio-button-hotplug驱动为例,进行分析。在gpio-button-hotplug文件夹下面有一个Makefile文件和src文件夹,而src文件夹下有模块源码gpio-button-hotplug.c和源码编译Makefile
在这里插入图片描述

2.1、顶层makefile分析

  顶层makefile如下:

#
# Copyright (C) 2008-2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mkPKG_NAME:=gpio-button-hotplug
PKG_RELEASE:=3
PKG_LICENSE:=GPL-2.0include $(INCLUDE_DIR)/package.mkdefine KernelPackage/gpio-button-hotplugSUBMENU:=Other modulesTITLE:=Simple GPIO Button Hotplug driverFILES:=$(PKG_BUILD_DIR)/gpio-button-hotplug.koAUTOLOAD:=$(call AutoLoad,30,gpio-button-hotplug,1)KCONFIG:=
endefdefine KernelPackage/gpio-button-hotplug/descriptionThis is a replacement for the following in-kernel drivers:1) gpio_keys (KEYBOARD_GPIO)2) gpio_keys_polled (KEYBOARD_GPIO_POLLED)Instead of generating input events (like in-kernel drivers do) it generatesuevent-s and broadcasts them. This allows disabling input subsystem which isan overkill for OpenWrt simple needs.
endefdefine Build/Compile$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules
endef$(eval $(call KernelPackage,gpio-button-hotplug))

2.1.1、第一步

  首先包含rules.mk、kernel.mk和package.mk文件。接着将驱动模块的名称定义为“gpio-button-hotplug”,并设置版本编号为“3”。
在这里插入图片描述

2.1.2、第二步

  在软件包定义中的一些变量赋值:
  SUBMENU:我们内核模块放置于“Other modules”。我们在make menuconfig时,可以在Kernel modules/other modules菜单下找到这个模块。
  TITLE:标题,驱动模块的简短描述。
  FILES:生成的驱动模块的存放位置。此处为设置为在编译目录下(就是编译过程中的临时目录build_dir)。
  AUTOLOAD:代表是否在系统启动时自动装载到内核中,后面括号内有3个参数(参数1不变,参数2为驱动模块的装载顺序(可以省略这个参数,省略后系统自动分配状态顺序),参数3代表驱动模块名称)。
  DEPENDS:如果驱动模块还需要依赖,则此变量设置为依赖文件名(此处没有依赖所以就未设置)。
在这里插入图片描述

2.1.3、第三步

  配置menuconfig时的描述信息
在这里插入图片描述

2.1.4、第四步

  编译源代码选项,在大多数情况下应该不用定义而使用默认值
在这里插入图片描述

2.1.5、第五步

  最后KernelPackage,将驱动模块的名称作为参数传递给KernelPackage
在这里插入图片描述

2.2、源码makefile

obj-m += gpio-button-hotplug.o

2.3、源码gpio-button-hotplug.c

  gpio-button-hotplug.c就是驱动的实际代码

三、编写自己的OpenWrt驱动代码

  将gpio-button-hotplug文件夹复制为mykernel_test,放置到gpio-button-hotplug相同的目录下

3.1、顶层makefile

  修改顶层makefile如下:

#
# Copyright (C) 2008-2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mkPKG_NAME:=mykernel_test
PKG_RELEASE:=3
PKG_LICENSE:=GPL-2.0include $(INCLUDE_DIR)/package.mkdefine KernelPackage/mykernel_testSUBMENU:=Other modulesTITLE:=Simple GPIO Button Hotplug driverFILES:=$(PKG_BUILD_DIR)/mykernel_test.koAUTOLOAD:=$(call AutoLoad,30,mykernel_test,1)KCONFIG:=
endefdefine KernelPackage/mykernel_test/descriptionThis is a replacement for the following in-kernel drivers:1) gpio_keys (KEYBOARD_GPIO)2) gpio_keys_polled (KEYBOARD_GPIO_POLLED)Instead of generating input events (like in-kernel drivers do) it generatesuevent-s and broadcasts them. This allows disabling input subsystem which isan overkill for OpenWrt simple needs.
endefdefine Build/Compile$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules
endef$(eval $(call KernelPackage,mykernel_test))

3.2、源码makefile

obj-m += mykernel_test.o

3.3、源码mykernel_test.c.c

#include <linux/init.h>
#include <linux/module.h>static int __init mykernel_test_init(void)
{printk(KERN_INFO "mykernel_test enter\n");return 0;
}static void __exit mykernel_test_exit(void)
{printk(KERN_INFO "mykernel_test  exit\n ");
}
module_init(mykernel_test_init);
module_exit(mykernel_test_exit);
MODULE_LICENSE("GPL v2");

四、编译自己的OpenWrt驱动代码

4.1、配置

  在OpenWrt源码顶级目录下输入下面的命令配置内核

make menuconfig

  依次按照如下顺序选择:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2、编译

  在OpenWrt源码顶级目录下输入下面的命令编译驱动模块

make package/kernel/mykernel_test/compile V=s

  编译完成之后会在下面的目录中看到我们的内核模块
在这里插入图片描述
  此ko模块和普通的linux内核的驱动模块的装载方法一样,不再赘述。

http://www.yayakq.cn/news/203360/

相关文章:

  • 西安做网站的公司维护网站推广建设期
  • 长沙点梦网站建设公司怎么样百度app下载安装官方免费下载
  • 网站的建设公司哪个好广州专业网页制作公司
  • 沭阳做网站Wordpress排版混乱
  • 曲阜网站制作湖北省网站建设
  • 西安市城乡建设管理局网站6运行时间 wordpress
  • 网站建设公司哪里找数字营销策略有哪些
  • 青岛市建设安全监督站网站行业网站建设公司推荐
  • 网站搜索引擎推广女生初中毕业最吃香的专业
  • 怎么给汽车网站做推广网站开发的感想
  • 怎样在公司的网站服务器上更新网站内容wordpress建站方法
  • 南宁网站公司做淘客网站
  • 旅行社网站开发网站建设客户合同范本
  • 58同城网站建设规划极智装
  • 网站建设与管理题库淘宝移动网站建设
  • 公司的网站费怎样做会计分录注册公司最少需要多少注册资金
  • 知乎 做网站的公司 中企动力wordpress单页模板
  • 宝塔软件怎么做网站2345浏览器官网首页
  • 国外做问卷赚购物券等的网站网站制作后续维护
  • 行业门户网站建设费用电子商务有限公司网站
  • 技术支持 如皋网站建设哪个网站做推广比较好
  • 建设网站的市场环境广州网站制作教程
  • 西部数码网站管理助手破解版农业生态园电商网站建设
  • 公司一定建设网站吗ps网页设计稿
  • 荆门网站开发有哪些厦门蓝典网站建设
  • 网站建设信息安全要求智慧工业园区建设方案
  • 网站制作器手机版下载做电影网站详细教程
  • 厦门同安建设局网站南宁网站建设速成培训
  • 什么网站详情页做的好郑州360房产网查询
  • 网站高级感网站备案好后