4 --> OpenWRT新增用户的软件模块、IPK安装包 的方法与实例

OpenWrt 新增用户软件模块、IPK安装包流程
1).在源码的package目录下增加一个目录
2).在hello目录下添加src目录和files目录
3).src目录存放模块源码和源码编译Makefile
4).files目录存放模块的配置文件及启动脚本等
5).在hello顶级目录增加Makefile。此Makefile中包含编译脚本和安装脚本
6).patches 目录是补丁文件,相对于发布源码的变化的补丁文件。

实例

本实例以 SIMCOM-5G 模块的qmi 拨号软件模块为蓝本,simcom的5G模块工作在 NDIS状态使用系统的OpenWrt的qmi命令拨号兼容性还有一些问题,因此移植 simcom 提供的用户空间的工具移植到 OpenWRT系统。

第一步

把源码拷贝至 “package/network/utils” 路径下,重新命名为 simcom-cmd 文件夹,内容如下:

robot@ubuntu:~/OpenWrt/mtk7621-19.07/package$ ls network/utils/simcom-cmd/
Makefile  src

源文件到放到改目录的src文件夹中,内容如下:

robot@ubuntu:~/OpenWrt/mtk7621-19.07/package$ ls network/utils/simcom-cmd/src/
default.script  main.c    MPQCTL.h  MPQMUX.c  qmi-proxy.c  QMIThread.h  README.md  util.c
GobiNetCM.c     Makefile  MPQMI.h   MPQMUX.h  QMIThread.c  QmiWwanCM.c  udhcpc.c   util.h

第二步

编写 makefile软件,内容如下:

robot@ubuntu:~/OpenWrt/mtk7621-19.07/package$ cat network/utils/simcom-cmd/Makefile 
include $(TOPDIR)/rules.mk

PKG_NAME:=simcom-cm
PKG_VERSION:=1
PKG_RELEASE:=1

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk

define Package/simcom-cm
  SECTION:=net
  CATEGORY:=Network
  TITLE:=simcom-command-userland
endef

define Package/simcom-cm/description
 show simcom cm userland dail tools
endef

define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Package/simcom-cm/install
	$(INSTALL_DIR) $(1)/bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/simcom-cm $(1)/bin
endef

$(eval $(call BuildPackage,simcom-cm))

修改src文件夹下的Makefile文件,内容如下:

robot@ubuntu:~/OpenWrt/mtk7621-19.07/package$ cat network/utils/simcom-cmd/src/Makefile 
#CROSS-COMPILE =
#CC := $(CROSS-COMPILE)gcc

# Stolen from Linux build system
#comma = ,

try-run = $(shell set -e; ($(1)) >/dev/null 2>&1 && echo "$(2)" || echo "$(3)")
cc-option = $(call try-run, $(CC) $(1) -c -xc /dev/null -o /dev/null,$(1),$(2))

CFLAGS ?= -s
WFLAGS := -Wall \
	$(call cc-option,-Wextra) \
	$(call cc-option,-Wwrite-strings) \
	$(call cc-option,-Wno-sign-compare) \
	$(call cc-option,-Wno-unused-function)
CFLAGS += $(WFLAGS)

simcom-cm_SOURCES = QmiWwanCM.c GobiNetCM.c main.c MPQMUX.c QMIThread.c util.c udhcpc.c
qmi-proxy_SOURCES = qmi-proxy.c

release: clean
	$(CC) $(CFLAGS) ${simcom-cm_SOURCES} -o simcom-cm -lpthread -ldl

qmi-proxy:
	$(CC) $(CFLAGS) ${qmi-proxy_SOURCES} -o qmi-proxy -lpthread -ldl

clean:
	@-rm -rf simcom-cm qmi-proxy

第三步

通过 make menuconfig 选择 simcom-cm 模块,内容如下:
在这里插入图片描述

第五步

编写开机自启动 simcom-cm 拨号程序的脚本文件,内容如下:

robot@ubuntu:~/OpenWrt/mtk7621-19.07$ cat package/base-files/files/etc/init.d/simcom-cm 
#!/bin/sh /etc/rc.common
START=85
STOP=15

start() {
     echo " simcom-cm startup ... "
     cd / && ./bin/simcom-cm &
     return 0
}

stop() {
    pid=`ps |grep simcom-cm |grep /bin/sh | awk '{print $1}'`
    if [ -n "${pid}" ];then
        kill ${pid}
    fi
    return 0
}

restart() {
    echo " simcom-cmd do not restart command "
    return 0
}

第六步

在 OpenWrt 中添加 5G interface 接口,内容如下:
在这里插入图片描述
在uci-default文件夹下的脚本,是 OpenWrt 系统开机后执行的缺省配置脚本。

第七步

编译 make -j4 V=sc , 并烧写源码至开发板验证。

此篇文章、前期没有实例说明步骤,现在把工作内容记录在此,以供参考。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值