背景资料:
HLK-7688A模块:内存DDR2:128MB,SPI Flash:32MB,主芯片:MT7688AN,内核:MIPS24KEc
从Openwrt官网中了解到当前支持设备MediaTek LinkIt Smart 768符合我们基于HLK-7688A的产品板,代码主干仓库地址:https://www.github.com/openwrt/openwrt。
1.OP配置以及编译:
1.1 使用git clone命令克隆主干仓库,git checkout 切换到18.06分支。
1.2 下载完之后执行更新源(Feeds)指令,更新软件包依赖关系:./scripts/feeds update -a
1.3 执行下载编译固件需要的软件包:./scripts/feeds install -a
1.4 make menuconfig。根据我们硬件模块的系统信息,配置目标系统为:MediaTek Ralink MIPS,子目标为MT76x8 based boards,目标概述为MediaTek LinkIt Smart 7688。
1.5 选择必要的组件包括:
1.5.1 中文配置界面:LUCI—>Theme—> <> luci-theme-openwrt。
LUCI—>modules—>Translations------> <> Chinese
1.5.2 SD卡支持:Kernel modules —> Other modules —> <*> kmod-sdhci-mt7620
LinkIt smart7688的SD卡检测,默认是高电平。但是普通的SD卡是低电平。所以,要对dts进行修改。打开target/linux/ramips/dts/LINKIT7688.dts,找到下面的表述,将cd-high改成cd-lowsdhci@10130000 { status = "okay"; mediatek,cd-low; //mediatek,cd-high; }
1.5.3文件系统支持(这里我们选择ext4):Kernel modules—>Filesystems—> <> kmod-fs-ext1.6支持mkfs.ext4(用于格式化SD卡): Utilities -> Filesystem—><> e2fsprogs
2. 网关WEB界面开发
我们的主题基于Github上的开源项目luci-theme-atmaterial的主题修改而成。
MakeFile如下:
# LuCI Material Theme
# Copyright 2015 Lutty Yang <lutty@wcan.in>
#
# Licensed under the Apache License v2.0
# http://www.apache.org/licenses/LICENSE-2.0
include $(TOPDIR)/rules.mk
THEME_NAME:=atmaterial
THEME_TITLE:=ATMaterial
PKG_NAME:=luci-theme-$(THEME_NAME)
PKG_VERSION:=0.2.17
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define Package/luci-theme-$(THEME_NAME)
SECTION:=luci
CATEGORY:=LuCI
SUBMENU:=4. Themes
DEPENDS:=+libc
TITLE:=Advanced Tomato Material
URL:=http://wcan.in/
PKGARCH:=all
endef
define Build/Configure
endef
define Build/Compile
endef
define Package/luci-theme-$(THEME_NAME)/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) ./files/30_luci-theme-$(THEME_NAME) $(1)/etc/uci-defaults/luci-theme-$(THEME_NAME)
$(INSTALL_DIR) $(1)/www/luci-static/$(THEME_NAME)
$(CP) -a ./files/htdocs/* $(1)/www/luci-static/$(THEME_NAME)/ 2>/dev/null || true
$(INSTALL_DIR) $(1)/usr/lib/lua/luci/view/themes/$(THEME_NAME)
$(CP) -a ./files/templates/* $(1)/usr/lib/lua/luci/view/themes/$(THEME_NAME)/ 2>/dev/null || true
#$(INSTALL_DIR) $(1)/etc
#$(INSTALL_BIN) ./garbge/file/etc/banner $(1)/etc/banner
$(CP) ./garbge/file/* $(1)/ 2>/dev/null
endef
define Package/luci-theme-$(THEME_NAME)/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
if [ -f /etc/uci-defaults/luci-theme-$(THEME_NAME) ]; then
( . /etc/uci-defaults/luci-theme-$(THEME_NAME) ) && \
rm -f /etc/uci-defaults/luci-theme-$(THEME_NAME)
fi
rm -rf /tmp/luci-indexcache /tmp/luci-modulecache
fi
mv /root/banner /etc/
mv /root/luci /etc/config/
mv /root/footer.htm /usr/lib/lua/luci/view/themes/bootstrap/
mv /root/index.htm /usr/lib/lua/luci/view/admin_status/
mv /root/shadow /etc/
mv /root/shadow- /etc/
mv /root/dhcp /etc/config
mv /root/luci-theme-XXX* /root/luci-theme-XXX.ipk
mv /root/reset /etc/rc.button
mv /root/failsafe /etc/rc.button
exit 0
endef
$(eval $(call BuildPackage,luci-theme-$(THEME_NAME)))
代码文件目录如下:
2.1 file/templates/下的文件在安装包install过程中会拷贝到目标系统/usr/lib/lua/luci/view/themes/$(THEME_NAME)/下,header.htm将加载到每一页面的开头,而footer.htm将加载到每一个页面的结束, header.htm需要包含一个页面的 DOCTYPE描述、headers、menu和layout,footer.htm将关闭所有打开的tags,然后会添加一个footer bar。在footer中修改HTLM标签后续内容。
2.2 file/htdocs/存放的stylesheets,Javascripts, images等等会拷贝到目标系统中已被header和footer指出的目录,我们将images替换为自己的logo。
2.3 /garbge/file下边的文件根据Makefile中的描述,安装操作过程中会按照目录关系拷贝到目标系统里。/root下面的文件在安装完之后,会根据Makefile中的命令拷贝到相应目录。
Banner文件为ssh登录的欢迎界面。
dhcp文件为dhcp相关默认配置。
Index.htm为LUCI的首页,根据版本号,修改网关首页主机型号标签内容如下:
Luci文件修改luci的默认语言为中文。
Reset文件为复位摁键执行脚本,当摁键摁下时间超过3秒,小于10秒时恢复出厂设置。如果超过30秒则恢复模块初始状态。
shadow文件修改系统默认密码为XXX.
2.4 garbge/file/etc/config下边的文件大部分为路由器的配置信息,network有网络接口的配置。PTLConfig文件中存放着关于PTL主控制器的配置,存储的格式遵循UCI统一配置接口。如果需要增加什么配置项需要现在这个文件添加相关option。Syste文件内包含系统配置,wireless文件包含无线信息。
2.5 garbge\file\usr目录下边放置了LUCI关于PTL控制器的配置界面模块。LUCI由系统配置统一接口UCI和轻量级语言lua结合而成。Luci采用MVC(三层架构),系统的/usr/lib/lua/luci/下有三个目录 model、 view、 controller, 它们分别对应 M、V、C。/garbge/file/usr/lib/lua/luci/controller/mystart下面放的mystart.lua,添加了一个顶层的导航Gatewa,判断当前是否有蓝牙网关的配置文件,如果有则添加两个相关配置的entry,判断是否有PTL网关的相关配置文件,如果有则添加三个相关配置的entry。
2.6 garbge/file/usr/lib/lua/luci/model/cbi/mystart-model目录下为三个文件mystartmoduleblue.lua为蓝牙的配置界面。mystartmoduleptl.lua为PTL配置界面,mystartmoduletestptl.lua为PTL现场自检功能界面,增加配置项可用taboption方法绑定UCI配置项与界面不同数值或者下拉框元素,相关语法可以访问: http://luci.subsignal.org/trac/wiki/Documentation/CBI2.7 garbge/file/usr/lib/lua/luci/view/mystart-mode 下的PTLView文件为按照Openwrt显示无线终端的页面修改而成,用于实时显示PTL总线上的在线的终端设备。
2.8 编译生成主题ipk文件:将整个luci-theme-atmaterial-master文件夹拷贝到openwrt源代码的package目录下,回到源代码根目录输入make menuconfig。LUCI—>Theme—> luci-theme-atmaterial。然后退出。输入make package/luci-theme-atmaterial-master/compile 编译ipk。最后编译成功的ipk。最后在openwrt/bin/packages/mipsel_24kc/base目录下找到Lin_PTLMaster_1_mipsel_24kc.ipk,使用opkg install Lin_PTLMaster_1_mipsel_24kc.ipk安装即可,下面截图为安装成功之后登录的界面: