openwrt 添加自己的应用程序到内核并自启动(内核模块)

目录

前言

一、创建目录

二、Makefile 创建编辑

1.serial-spi-4g/Makefile 创建编辑

2.src/Makefile 这是编译自己程序的Makefile 

三、menuconfig 菜单中勾选刚添加的内核模块

四、make V=s  编译修改的源码

总结


 

 

前言

本文章是关于openwrt 下的 内核模块的添加:

当我们写完了应用程序,想当成模块添加到固件中,需要再内核源码中添加/创建应用程序文件


 

一、创建目录

openwrt/package/extend/serial-spi-4g  其中serial-spi-4g  extend   是我自己创建的目录

extend:存放应用程序的顶层目录

serial-spi-4g :分支目录

serial-spi-4g /src: src 文件夹存放自己的.c和.h 还有编译程序的Makefile 

serial-spi-4g/Makefile:这是openwrt识别的makefile  放在顶层

上图中的文件层次已经很明确了

二、Makefile 创建编辑

注意:Makefile 的Tab对齐

1.serial-spi-4g/Makefile 创建编辑

  • 代码如下(示例):
    include $(TOPDIR)/rules.mk
    
    PKG_NAME:=serial-spi-4g
    PKG_RELEASE:=1
    
    PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
    
    include $(INCLUDE_DIR)/package.mk
    
    define Package/serial-spi-4g
      SECTION:=utils
      CATEGORY:=Utilities
      TITLE:= ........... linkeasy witch 4G SIM 
    endef
    
    define Package/serial-spi-4g/description
        Serial port and module interaction
        SPI send data to m32f103r8t6 
    endef
    
    define Build/Prepare
    	mkdir -p $(PKG_BUILD_DIR)
    	$(CP) ./src/* $(PKG_BUILD_DIR)/
    endef
    
    define Build/Configure
    endef
    
    define Build/Compile
    	$(MAKE) -C $(PKG_BUILD_DIR) \
    	CC="$(TARGET_CC)" \
    	CFLAGS="$(TARGET_CFLAGS) -Wall" \
    	LDFLAGS="$(TARGET_LDFLAGS)"
    endef
    
    define Package/serial-spi-4g/install
    	$(INSTALL_DIR) $(1)/usr/linkeasy/
    	$(INSTALL_BIN) $(PKG_BUILD_DIR)/serial-spi-4g $(1)/usr/linkeasy
    endef
    
    $(eval $(call BuildPackage,serial-spi-4g))
    

2.src/Makefile 这是编译自己程序的Makefile 

代码如下(示例):

######################################
# 
######################################
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE  := $(wildcard *.c) $(wildcard *.cpp)
OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))

#目标文件名,输入任意你想要的执行文件名
TARGET  := serial-spi-4g

#compile and lib parameter
#编译参数
CC      := mipsel-openwrt-linux-gcc   #交叉编译工具链
LIBS    :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS  := -g -Wall $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H


#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuild

everything : $(TARGET)

all : $(TARGET)

objs : $(OBJS)

rebuild: veryclean everything

clean :
        rm -fr *.so
        rm -fr *.o

veryclean : clean
        rm -fr $(TARGET)

$(TARGET) : $(OBJS)
        $(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

关于Makefile 的注意点:注意Makefile 格式

                                       Tab键的一定要用Tab对齐,不要用空格,尤其是你粘贴过去后一定会变成8个空格


三、menuconfig 菜单中勾选刚添加的内核模块

 

四、make V=s  编译修改的源码

注意:如果你Makefile 是直接粘贴我的历程,可能会出现 格式错误请去掉多余的空格和 Tab键的问题

如果你没有报错那么继续往下看:

编译过程会在/build_dir目录下完成

如果菜单栏勾选为 * 

    那么本例程的可执行文件 在/bin 下(固件烧写到板子后本例程是/usr/linkeasy 下可以修改生成位置)

菜单栏勾选为 M

    需要将ipk包下载到目标板中执行opkg install *.ipk

总结

先按着我的格式来一遍,没问题了各位看官可以需改成自己的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值