查看: 6004|回复: 5

【SOM9331】之Openwrt(WIFI模块)SDK使用方法,如何编译一个应...

[复制链接]
  • TA的每日心情
    奋斗
    2022-10-13 10:27
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2015-10-24 00:40:26 | 显示全部楼层 |阅读模式
    分享到:
    本教程是AR9331芯片的 WIFI视频数传模块SDK使用说明,其他的芯片型号的模块,例如Robot-Link V3.0 RT模块也是大同小异,请参考着学习。
    首先到这里下载Robot-Link V3.0 RT WIFI视频数传模块的SDK:http://yunpan.cn/Qi2TaUbdt5SnW (提取码:1b07)
    在本篇教程里,AR9331的SDK包名为:OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2
    然后放到Linux系统中,用tar命令解压SDK,得到编译环境目录。
    此目录结构跟openwrt的目录结构基本一致
    SDK的目录架构:
    song@song-virtual-machine:attitude_adjustment# ls bin/ar71xx/OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2  
    bin        Config.in  docs                include  logs      package   Packages.gz  rules.mk  staging_dir  tmp  
    build_dir  dl         feeds.conf.default  LICENSE  Makefile  Packages  README.SDK   scripts   target  

    原Openwrt编译环境目录架构:
    song@song-virtual-machine:attitude_adjustment# ls  
    bin          build_dir  dl    feeds.conf.default  LICENSE  Makefile  README    scripts      target  toolchain  
    BSDmakefile  Config.in  docs  feeds           include             logs     package   rules.mk  staging_dir  tmp     tools  

    概述:源码在SDK/pakage目录,生成文件在SDK/bin/ar71xx/packages目录。如果没有SDK/bin/ar71xx/packages目录也可手动创建。SDK/bin/packages目录没用到。
    1.在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/package目录下新建helloworld目录

    song@song-virtual-machine:package$ ls  
    helloworld  Makefile  rules.mk  

    2.在helloworld目录下新建Makefile文件和src目录

    song@song-virtual-machine:helloworld$ ls  
    Makefile  src  

    此Makefile内容
    ##############################################  
    # OpenWrt Makefile for helloworld program  
    #  
    #  
    # Most of the variables used here are defined in  
    # the include directives below. We just need to  
    # specify a basic description of the package,  
    # where to build our program, where to find  
    # the source files, and where to install the  
    # compiled program on the router.  
    #  
    # Be very careful of spacing in this file.  
    # Indents should be tabs, not spaces, and  
    # there should be no trailing whitespace in  
    # lines that are not commented.  
    #  
    ##############################################  
      
    include $(TOPDIR)/rules.mk  
      
    # Name and release number of this package  
    PKG_NAME:=helloworld  
    PKG_RELEASE:=1  

    # This specifies the directory where we're going to build the program.   
    # The root build directory, $(BUILD_DIR), is by default the build_mipsel  
    # directory in your OpenWrt SDK directory  
    PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)  

    include $(INCLUDE_DIR)/package.mk  

    # Specify package information for this program.  
    # The variables defined here should be self explanatory.  
    # If you are running Kamikaze, delete the DESCRIPTION  
    # variable below and uncomment the Kamikaze define  
    # directive for the description below  
    define Package/helloworld  
        SECTION:=utils  
        CATEGORY:=Utilities  
        TITLE:=Helloworld -- prints a snarky message  
    endef  
      
      
    # Uncomment portion below for Kamikaze and delete DESCRIPTION variable above  
    define Package/helloworld/description  
            If you can't figure out what this program does, you're probably  
            brain-dead and need immediate medical attention.  
    endef  
      
       
      
    # Specify what needs to be done to prepare for building the package.  
    # In our case, we need to copy the source files to the build directory.  
    # This is NOT the default.  The default uses the PKG_SOURCE_URL and the  
    # PKG_SOURCE which is not defined here to download the source from the web.  
    # In order to just build a simple program that we have just written, it is  
    # much easier to do it this way.  
    define Build/Prepare  
        mkdir -p $(PKG_BUILD_DIR)  
        $(CP) ./src/* $(PKG_BUILD_DIR)/  
    endef  
      
      
    # We do not need to define Build/Configure or Build/Compile directives  
    # The defaults are appropriate for compiling a simple program such as this one  
      
      
    # Specify where and how to install the program. Since we only have one file,  
    # the helloworld executable, install it by copying it to the /bin directory on  
    # the router. The $(1) variable represents the root directory on the router running  
    # OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install  
    # directory if it does not already exist.  Likewise $(INSTALL_BIN) contains the  
    # command to copy the binary file from its current location (in our case the build  
    # directory) to the install directory.  
    define Package/helloworld/install  
        $(INSTALL_DIR) $(1)/bin  
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/bin/  
    endef  
      
      
    # This line executes the necessary commands to compile our program.  
    # The above define directives specify all the information needed, but this  
    # line calls BuildPackage which in turn actually uses this information to  
    # build a package.  
    $(eval $(call BuildPackage,helloworld))  

    3.在src目录下新建helloworld.c文件和Makefile文件,分别如下
    #include<stdio.h>  
    int main(void)  
    {  
        printf("liuviking\n");  
        return 0;  
    }  

    # build helloworld executable when user executes "make"  
      
    helloworld: helloworld.o  
        $(CC) $(LDFLAGS) helloworld.o -o helloworld  
      
    helloworld.o: helloworld.c  
        $(CC) $(CFLAGS) -c helloworld.c  
      
    # remove object files and executable when user executes "make clean"  
    clean:  
    rm *.o helloworld  

    4.在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2目录下执行编译

    song@song-virtual-machine:OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2$ make V=s  

    5.成功之后会在OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2/bin/ar71xx/packages/ 下生产helloworld_1_ar71xx.ipk
    song@song-virtual-machine:OpenWrt-SDK-ar71xx-for-linux-i686-gcc-4.6-linaro_uClibc-0.9.33.2$ ls bin/ar71xx/packages/  
    helloworld_1_ar71xx.ipk  Packages  Packages.gz  

    6.拷贝ipk到板子,然后用putty执行
    opkg install helloworld_1_ar71xx.ipk  

    会生成/bin/helloworld

    7、在shell里面,执行helloworld,即可看到窗体打印出"liuviking"字样。

    原文链接:http://blog.csdn.net/luck_good/article/details/23517135
    http://www.wifi-robots.com/forum.php?mod=viewthread&tid=7113
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-10-17 12:07
  • 签到天数: 306 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2015-10-24 07:13:11 | 显示全部楼层
    楼主今天认真学习了,,我也要学习了。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-10-13 10:27
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

     楼主| 发表于 2015-10-24 08:58:41 | 显示全部楼层
    liunian__92 发表于 2015-10-24 07:13
    楼主今天认真学习了,,我也要学习了。。

    啊,之前一直没什么时间所以没去弄,这几天正好闲着
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-3-23 12:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-10-27 13:04:51 | 显示全部楼层
    楼主你好厉害 学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-10-13 10:27
  • 签到天数: 216 天

    连续签到: 1 天

    [LV.7]常住居民III

     楼主| 发表于 2015-10-27 14:23:28 | 显示全部楼层
    魅影-2023106 发表于 2015-10-27 13:04
    楼主你好厉害 学习了

    这个也是参考别人的,后面准备学下lua语言,看看能否自己设计luci界面
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-3-23 12:01
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-10-27 16:18:24 | 显示全部楼层
    windworld-18984 发表于 2015-10-27 14:23
    这个也是参考别人的,后面准备学下lua语言,看看能否自己设计luci界面

    lua好吊的脚本语言啊  学不会
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-29 17:28 , Processed in 0.166033 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.