1 Star 0 Fork 1

何亚红/MT7688Demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
openwrt @ ce37d2c
Loading...
README
MIT

说明

这是一个使用openwrt开发MT7688的例子(仅供测试)。

硬件为HLK-7688A模块,采用MT7688AN作为主芯片,具有32M Flash与128M DDR2 RAM。

源代码下载

由于本源代码包含第三方源代码,故直接下载可能有部分源代码缺失,需要通过以下方法解决:

  • 在进行git clone 使用--recurse-submodules参数。

  • 若已通过git clone下载,则在源代码目录中执行以下命令下载子模块:

     git submodule update --init --recursive

key-build

采用openwrt的工具usign生成,生成后可在应用中使用公钥校验文件。

在openwrt中使用以下命令生成密钥对:

usign -G -c "注释信息" -p key-build.pub -s key-build

软件包

软件包实现目录为 packages/ 。除开第三方软件包,其余的软件包均将源代码放在本地目录,一般放在该软件包Makefile所在目录。对于C/C++程序,一般采用CMake作为构建工具,可生成适应各种IDE的工程。

FirstBootInit

软件包实现目录为 packages/FirstBootInit/。第一次启动执行的初始化脚本。可用于初始化某些设置(如WIFI)。

netlib

软件包实现目录为 packages/netlib/ 。网络库,包装一些常用的网络操作。作为库软件包模板。包含部分测试程序(编译完成后在 packages/netlib/src/build/,后缀为.exe),测试程序不会安装至openwrt。

netlib

appubus

软件包实现目录为 packages/appubus。使用C++封装常用的ubus客户端功能。

appubus

MQTTDaemon

软件包实现目录为 packages/MQTT/MQTTDaemon/ 。MQTT守护进程,可连接MQTT Broker。

MQTTDaemon

luci-MQTTDaemon

软件包实现目录为 packages/MQTT/luci-MQTTDaemon/ 。MQTT守护进程的luci界面。

luci-MQTTDaemon

OneNETDaemon

软件包实现目录为 packages/MQTT/OneNETDaemon 。OneNET网关设备守护进程,可连接OneNET平台。

OneNETDaemon

luci-OneNETDaemon

软件包实现目录为 packages/MQTT/luci-OneNETDaemon 。OneNET网关设备守护进程的luci界面。

luci-OneNETDaemon

编译

openwrt编译过程中,需要下载大量的数据,尤其是要确保github.com等外网的联通,若因下载失败而编译失败,请手动下载相应的软件包放入openwrt/dl目录,再重新编译。若网络不好需要编译很多次极为正常。

若在中国境内,建议做以下设置:

#启用go模块代理
export GO111MODULE=on
export GOPROXY=https://goproxy.cn

编译环境

编译环境的设置见https://openwrt.org/docs/guide-developer/start 。通常在编译过程中缺什么就安装什么即可。

除了自行安装工具,在Linux下还可直接使用docker(需要自行安装docker)命令直接进入编译环境:

#若一开始使用docker那么需要一直使用docker。否则openwrt做的某些软链接会失效。

#此openwrt-be镜像推荐用于脚本测试,除非手动安装环境不成功,不推荐直接用于整个openwrt的编译,推荐使用ubuntu镜像。
sudo docker run -it --rm -u  `id -u`:`id -g` -v `pwd`:/work -w /work heyahong/openwrt-be:22.03 /bin/bash
#更多关于此docker镜像的说明见https://hub.docker.com/r/heyahong/openwrt-be

#此ubuntu镜像安装了编译所需工具,可直接作为编译环境。
sudo docker run -it --rm -u  `id -u`:`id -g` -v `pwd`:/work -w /work heyahong/buildenv-ubuntu22.04:base
#更多关于此docker镜像的说明见https://hub.docker.com/r/heyahong/buildenv-ubuntu22.04

常用操作

所有操作都需要在执行bootstrap.sh后进行。成功执行bootstrap.sh后可进行以下操作:

  • 编译

    #直接编译
    make 
    #直接编译(显示详细信息)
    make V=sc
  • 配置kconfig

    make menuconfig
  • 清理

    #清理生成的文件
    make clean
    #清理所有(建议备份好openwrt/dl再清理)
    make distclean

烧录

编译完成后(未报错直接退出),所有生成的文件在openwrt/bin目录下,其中用的最多的是用于sysupgrade的bin文件。可采用以下方式安装:

  • 通过openwrt的固件升级安装。注意:不要保留配置。
  • 通过bootloader(如breed,模组厂家的uboot)安装固件。注意:布局需要选公版布局,非公版布局将导致mac地址不正确。

调试

串口

串口0为调试串口,主要用于调试信息输出,参数为57600 8N1。

串口主要有以下用途:

  • uboot阶段输出启动信息。在此阶段也可进行一些其它操作,如升级固件(openwrt固件损坏救砖方式之一)等。
  • linux启动过程中输出内核启动信息。
  • linux启动完成后可通过串口进入控制台(按ENTER),可打开SHELL。
  • 用户程序启动后输出信息(如直接向/dev/ttyS0写入信息,echo 信息 > /dev/ttyS0)。

调试信息

openwrt作为一个完整的linux系统,可使用多种方式进行调试。

在本工程中通常采用syslog输出调试信息,可通过以下方式查看输出的syslog:

  • 登陆luci界面后,在 状态 -> 系统日志 的WEB界面查看
  • 登陆控制台后(通过串口登陆或者ssh登陆),使用 logread 命令读取系统日志。
  • 如果在luci界面中设定了其它方式(如输出到文件或者外部服务器),可使用其它方式查看系统日志。

在用户程序中,可通过以下方式输出syslog:

  • 在sh脚本中,可使用 logger 命令向系统日志写入信息。
  • 在C/C++程序中,可使用 syslog 函数输出系统日志(需要先使用 openlog 打开系统日志)

软件包中用户二进制文件的测试

有时候需要对某个编译后得到的用户二进制程序进行测试,除了使用硬件测试(使用各种工具上传到开发板中),还可以使用qemu测试(使用QEMU用户程序模拟器)。

在ubuntu中,可使用以下命令安装QEMU(其他平台请自行查找资料安装):

sudo apt-get install qemu-user

运行二进制文件

注意:所有的运行操作必须在编译完成后,若未编译完成,可能不可运行。

./qemu_run.sh 待运行的程序及参数

qemu-user-run

MIT License Copyright (c) 2022 何亚红 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

使用openwrt开发MT7688例子 展开 收起
Shell 等 6 种语言
MIT
取消

发行版 (2)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Shell
1
https://gitee.com/HEYAHONG/MT7688Demo.git
git@gitee.com:HEYAHONG/MT7688Demo.git
HEYAHONG
MT7688Demo
MT7688Demo
openwrt-22.03

搜索帮助

A270a887 8829481 3d7a4017 8829481