大摩娱乐注册 大摩娱乐登录 大摩娱乐招商QQ

Navigation menu

来源:未知 责任编辑:admin

Openwrt开发指南 第12章 添加OpenWrt软件包

  OpenWrt是一个比较完善的开发平台,在无线多个软件包。我们可以在其基础上增加软件包,以扩大其应用范围。在OpenWrt中增加软件包极其方便,按照OpenWrt的约定就可以很简单的完成。加入的软件包可以是网上可的开源软件或自行开发的软件。为加入软件包需要在package目录下创建一个目录,以包含该软件包的各种信息和与OpenWrt建立联系的文件。然后创建一个Makefile与OpenWrt建立联系,Makefile需要遵循OpenWrt的约定。另外可以创建一個patchs目录保存patch文件,对下载的源代码进行适量修改。

  软件包的信息均以PKG_开头,其意思和作用如下:PKG_NAME表示软件包名称,将在menuconfig和ipkg可以看到。PKG_VERSION表示软件包版本号。

  PKG_MD5SUM表示源代码文件的效验码。用于核对软件包是否正确下载。

  应用程序和内核驱动模块的定义不一样。应用程序软件包使用Package,內核驱动模块使用KernelPackage。

  应用程序的编译包以Package/开头,然后接着软件名,在Package定义中的软件名可以与软件包名不一样,而且可以多个定义。下面使用**(PKG_NAME)只是做一个标示,并非真正使用**(PKG_NAME),如Package/$(PKG_NAME)。

  DEPENDS表示与其他软件的依赖。即如编译或安装需要其他软件时需要说明。如果存在多個依赖,则每个依赖需要用空格分开。依赖前使用+号表示默认为显示,即对象沒有选中时也会显示,使用@则默认为不显示,即当依赖对象选中后才显示。

  在用户空间的应用程序软件包中沒有內核驱动模块的AUTOLOAD参数。如果应用软件需要在boot时自动运行,则需要在/etc/init.d中增加相应的脚本文件。脚本文件需要START参数,说明在boot时的优先级,如果在boot过程启动后再关闭,则需要进一步设置STOP参数。

  如果STOP参数存在,其值必须大于START。脚本文件需要start()和stop()两个函数,start()是执行程序,stop()是关闭程序。关闭程序一般需要執行killall命令。由/etc/rc.d/S10boot知道,装载內核驱动模块的优先级为10,需要使用自己设计的內核驱动模块的程序其START的值必须大于10。同样由/etc/rc.d/S40network知道,使用网络通信的程序其START的值必须大于40。

  本包安裝的配置文件,一行一个。如果文件结尾使用/,则表示为目录。用于备份配置文件说明,在sysupgrade命令执行时将会用到。

  编译准备方法,对于网上下载的软件包不需要再描述。对于非网上下载或自行开发的软件包必须说明编译准备方法。一般的准备方法为:

  在Automake中需要进行./configure,所以本配置方法主要针对需要配置的软件包而设计,一般自行开发的软件包可以不在这里说明。需要使用本定义的情况,可参考dropbear。

  软件包的安装方法,包括一系列拷贝编译好的文件到指定位置。调用时会带一个参数,就是嵌入系統的镜像文件系统目录,因此$(1)表示嵌入系统的镜像目录。一般可以采用下面的方法:

  INSTALL_DIR:=install-d-m0755意思是创建所属用戶可读写和执行,其他用戶可读可执行的目录。

  如果用戶空间的应用软件在boot时要自动运行,则需要在安装方法说明中增加自动运行的脚本文件安装和配置文件安裝方法。

  安装文件放在files子目录下,不要与源代码文件目录src混在一起,以提高可读性。使用清晰的文件扩展名,更方便安装识別文件。

  Linux分为内核空间和用户空间。开发者开发的内核部分可以直接加入Linux的Kernel程序,也可以生成内核模块以便需要时装入内核。OpenWrt一般希望开发者生成内核模块,在Linux启动后自动装载或手工使用insmod命令装载。内核模块使用KernelPackage开头,其他与一般应用软件包基本相同。

  DEFAULT表示直接编入内核或产生内核模块,y表示直接编入内核,m表示产生内核模块。

  AutoLoad的第一个参数**(PRIORITY)为优先级,01为最优先,99为最后装载。有关自动装载可以在/etc/modules.d目录下看到,第二个参数**(AUTOLOAD_MODS)模块名,每个模块名以空格符分隔。即可同时装载多个内核模块。

  在开发过程最好不要使用自动装载,经过严格调试后再使用,可以减轻调试的工作量。

  完成前面定义后,必须使用eval函数实现各种定义。其格式为:对于一般应用软件包

  如果一个软件包有多个程序,例如:一个应用程序有自己的內核驱动模块,上面使用的PKG_NAME需要灵活变通。eval函数可以设计多个。也可以当成多个软件包处理。

  如果看到这里,觉得一头雾水,还是不知道怎么使用。没有关系,请继续看后面的章节,我们会举大量的例子,来告诉大家如何使用这些语法。

  速度。 你会发现无论是 ARM PowerPC 或 MIPS 的处理器,都有很好的支持。 并且附带3000左右的

  的话,买些列表中二手的路由器来实践下更容易学习,大部分要升级一下rom芯片和内存芯片,典型配置都是4M、64M。

  环境搭建 /

  下载及配置 /

  固件 /

  固件从Whiterussian到Kamikaze实现快速配置接口。Lua是一个小巧的脚本语言,很容易嵌入其它语言。轻量级

  Web界面 /

  人员首要关注的问题,因为只有了解了系统的启动流程和启动机制,才能真正掌握一个系统,如果对启动的启动不熟悉的话,是不可能真正用好一个系统,

  系统也不例外,他的启动和一般的嵌入式系统启动还有所区别,现在咱们就分析一下

  启动流程 /

  源码的chaos_calmer/package/kernel 目录下。然后进入

  之字符设备驱动程序 /

  #硬声新人计划 今日卓越班到德赛西威公司一游,格局打开了,整整一墙面专利