这是一个使用openwrt开发MT7688的例子(仅供测试)。
硬件为HLK-7688A模块,采用MT7688AN作为主芯片,具有32M Flash与128M DDR2 RAM。
由于本源代码包含第三方源代码,故直接下载可能有部分源代码缺失,需要通过以下方法解决:
在进行git clone 使用--recurse-submodules参数。
若已通过git clone下载,则在源代码目录中执行以下命令下载子模块:
git submodule update --init --recursive
采用openwrt的工具usign生成,生成后可在应用中使用公钥校验文件。
在openwrt中使用以下命令生成密钥对:
usign -G -c "注释信息" -p key-build.pub -s key-build
软件包实现目录为 packages/ 。除开第三方软件包,其余的软件包均将源代码放在本地目录,一般放在该软件包Makefile所在目录。对于C/C++程序,一般采用CMake作为构建工具,可生成适应各种IDE的工程。
软件包实现目录为 packages/FirstBootInit/。第一次启动执行的初始化脚本。可用于初始化某些设置(如WIFI)。
软件包实现目录为 packages/netlib/ 。网络库,包装一些常用的网络操作。作为库软件包模板。包含部分测试程序(编译完成后在 packages/netlib/src/build/,后缀为.exe),测试程序不会安装至openwrt。
软件包实现目录为 packages/appubus。使用C++封装常用的ubus客户端功能。
软件包实现目录为 packages/MQTT/MQTTDaemon/ 。MQTT守护进程,可连接MQTT Broker。
软件包实现目录为 packages/MQTT/luci-MQTTDaemon/ 。MQTT守护进程的luci界面。
软件包实现目录为 packages/MQTT/OneNETDaemon 。OneNET网关设备守护进程,可连接OneNET平台。
软件包实现目录为 packages/MQTT/luci-OneNETDaemon 。OneNET网关设备守护进程的luci界面。
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文件。可采用以下方式安装:
串口0为调试串口,主要用于调试信息输出,参数为57600 8N1。
串口主要有以下用途:
echo 信息 > /dev/ttyS0
)。openwrt作为一个完整的linux系统,可使用多种方式进行调试。
在本工程中通常采用syslog输出调试信息,可通过以下方式查看输出的syslog:
在用户程序中,可通过以下方式输出syslog:
有时候需要对某个编译后得到的用户二进制程序进行测试,除了使用硬件测试(使用各种工具上传到开发板中),还可以使用qemu测试(使用QEMU用户程序模拟器)。
在ubuntu中,可使用以下命令安装QEMU(其他平台请自行查找资料安装):
sudo apt-get install qemu-user
注意:所有的运行操作必须在编译完成后,若未编译完成,可能不可运行。
./qemu_run.sh 待运行的程序及参数
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。