搭建 OpenWrt 开发环境

1、搭建 OpenWrt 开发环境

1.1 配置编译环境

为了能正常的编译OpenWrt 源码,我们需要在 Ubuntu 系统中安装一些软件。打开一个终端,在 Ubuntu 终端下面 输入命令:

sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc

在这里插入图片描述

序号 包名 描述
1 build-essential -
2 libncurses5-dev -
3 zlib1g-dev -
4 gawk -
5 git 开源的分布式版本控制系统
6 subvision -
7 ccache -
8 gettext -
9 libssl-dev -
10 xsltproc -

注意:如果未完全安装以上软件,可能会造成编译 OpenWrt 源码时出错,请务必安装完全。

1.2 获取 JS7628 配套的 OpenWrt 源码

JS7628 开发板配套资料\JS7628 开发板源码\openwrt 源码\openwrt_CC_mt76xx_zhuotk_source_20170112.tar.bz2里面已经提供了下载好的 OpenWrt 源码,此源码已经更新了 安装包,根据 JS7628 开发板功能进行了修改。将该安装包拷贝到当前登录 Ubuntu 的 用户的工作目录中(即/home/leo目录下),切换到/home/leo目录下并且操作

序号 操作 描述
1 tar xjvf openwrt_CC_mt76xx_zhuotk_source_20170112.tar.bz2 -C ./ 解压源码包到当前目录
2 cd openwrt_CC_mt76xx_zhuotk_source 进入源码目录
3 ./scripts/feeds install -a 安装更新的软件包

提示:这个源码编译出来的 OpenWrt 固件可以在 JS7628 开发板上正确运行。

1.3 make menuconfig 配置系统功能

OpenWrt 也具有像经典的 Linux 的make menuconfig功能,用户用一种熟悉的方式对 OpenWrt 系统功能进行配置。获取到 OpenWrt 源码后,我们在 OpenWrt 源码根目录下输入以下命令:
make menuconfig

效果如图所示:
在这里插入图片描述
上图的这个界面,对于之前做 Linux 开发的人员来说,应该是感觉很熟悉了。在这里,可以对 OpenWrt 的各种功能进行配置,包括 选择芯片平台、选择各种各样功能的安装包、生成交叉工具链等等,非常多。

关于IOT-deviceIOT-gateway模式的配置
进入到菜单:
Kernel modules —>
Other modules —>
<*> kmod-sdhci-mt7620
(1)如果选上kmod-sdhci-mt7620,则开发板支持 micro SD 卡接口功能,同时启用IOT-device功能
(2)如果选择不启用,则开发板不支持 micro SD 卡接口功能,并启用IOT-gateway功能。


1.4 编译 OpenWrt 源码

切换到 OpenWrt 源码 根目录下,输入以下命令:

make V=s

编译源码,V=s是用来生成编译信息的,方便用户查找出错原因。

接下来就是漫长的等待,少则 2-3 个小时,多则 1-2 天。耗时在于 OpenWrt 系统要下载各种各样的源文件安装包,编译 Linux 内核,生成交叉工具链,生成各种工具,生成文件系统等,工作量非常大(不用担心,这一切都是它自动完成的)。其中最耗时也最容易出错的就是下载各种源码包了,因为这些源码包绝大部分都是从国外下载的,所以速度很慢,而且非常容易出现无法下载的情况,最终导致 OpenWrt 编译报错。

提示:在JS7628 开发板配套资料\JS7628 开发板源码\openwrt 源码\dl下,我们已经将这些需要下载的源码包下载好了,我们只需要将里面的文件拷贝到 Ubuntu 里面的openwrt 源码根目录\dl下即可。

最后,编译成功会出现类似下图的提示:
在这里插入图片描述
编译完成后的 JS7628 的 OpenWrt 固件openwrt-ramips-mt7628-mt7628-squashfs-sysupgrade.bin可以在openwrt/bin/ramips/下找到:
在这里插入图片描述
IPK 安装包openwrt/bin/ramips/packages/目录下,如图所示:
在这里插入图片描述
以下 3个文件夹均放有IPK 安装包

序号 文件夹 描述
1 base 存放 系统基本的安装包
2 luci 存放 LuCI网页相关的安装包
3 packages 存放 其他很多的功能安装包

2、刷新 OpenWrt 固件

2.1 备份/升级

在这里插入图片描述

2.2 刷新固件

在这里插入图片描述

2.3 执行

在这里插入图片描述

3、生成 交叉工具链(Toolchain

用户如果想自己编译获得 OpenWrt 的交叉工具链,只需要在 OpenWrt 的 menuconfig 顶层配置界面中,勾选上Build the OpenWrt based Toolchain,如下图所示:
在这里插入图片描述
然后 保存退出,再make V=s,生成的交叉工具链将在openwrt 源码目录/ bin/ramips/OpenWrt-Toolchain-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2下找到。
(提示:不方便编译的用户,可以在JS7628 开发板配套资料\ JS7628开发板固件镜像安装包\ 交叉工具链中找到编译好的 Openwrt 交叉工具链,可以直接拿来使用)


4、安装 交叉工具链(Toolchain

Openwrt 交叉工具链 和 一般的 Linux 软件包一样,需要将其解压到需要安装的目录中,然后设置环境变量即可。下面是安装步骤:

4.1 解压 交叉工具链 压缩包

交叉工具链安装到 Ubuntu 的/opt目录下。首先切换到 Openwrt 的根目录下,输入如下命令:

sudo tar xjvf ./bin/ramips/OpenWrt-Toolchain-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2 -C /opt/

交叉工具链压缩包解压到 Ubuntu 系统的/opt/目录下。

4.2 设置 环境变量

执行命令:

sudo vi /etc/bash.bashrc

在文件最后添加以下两行配置:

export PATH=/opt/OpenWrt-Toolchain-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin:$PATH
export STAGING_DIR=/home/leo/openwrt_CC_mt76xx_zhuotk_source/staging_dir

效果如下:
在这里插入图片描述
上面这个STAGING_DIR变量中的/home/leo/openwrt_CC_mt76xx_zhuotk_source/是开发者 实际放 Openwrt 源码根目录,如果这个STAGING_DIR变量不设置的话,会在用交叉工具链编译文件时有警告,但是不影响编译结果。保存退出。

最后,让环境变量生效的命令:

source /etc/bash.bashrc

4.3 检查是否安装成功

输入以下命令:

mipsel-openwrt-linux-gcc -v

此时应打印出交叉编译工具的一些信息,表示安装成功,如下图所示:


5、配置 JS7628 开发板硬件默认功能

在 Openwrt 系统源码里面,采用MTK(联发科)芯片的板子硬件配置文件DTSDevice tree source)一般都放在openwrt 源码/target/linux/ramips/dts/目录下,如下图所示:
ls target/linux/ramips/dts
在这里插入图片描述
打开这个MT7628.dts文件,我们可以看到 JS7628 开发板相关的硬件配置信息,如下所示:
在这里插入图片描述

5.1 修改支持的内存大小

JS7628 开发板有 3 种内存配置,分别是 64MB、128MB、256MB,读者可以在这个DTS文件大约第 16~18 行找到这个配置:
在这里插入图片描述
根据后面的注释,自行去掉对该行的注释然后启用这个内存配置,重新编译出固件。
注意:选择和硬件不匹配的配置,可能会导致系统运行不正常。

5.2 修改支持的 Flash 大小

找到大约第 123~125 行:
在这里插入图片描述
根据后面的注释,自行去掉对该行的注释然后启用这个 Flash 配置,重新编译出固件。
注意:选择和硬件不匹配的配置,可能会导致系统运行不正常。

5.3 配置管脚复用功能

MT7628芯片里面有很多管脚是复用,这里我们以spis功能为例做介绍如何配置 JS7628 开发板的管脚功能复用。
找到大约第 49 行:
在这里插入图片描述
从上图可以看出MT7628芯片的SPIS管脚默认配置为pwm_uart2功能,具体可以配置哪几种功能是在openwrt/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.18.29/arch/mips/ralink/mt7620.c中定义的,打开该文件找到下图所示行:
在这里插入图片描述
由上图可知,我们可以把spis管脚组定义为pwm_uart2utilgpiospis 4种功能,这个和 MT7628 的 datasheet
JS7628 开发板配套资料\芯片元器件手册\MT7628\MT7628 Datasheet.pdf)中介绍的完全对应,如下图所示:
在这里插入图片描述
如果读者需要将这几个管脚恢复为GPIO 功能,可以把DTS文件修改为:
在这里插入图片描述
然后重新编译固件烧录,这样这组管脚就变成了 GPIO 功能。其他组管脚和这里介绍的方法大同小异,请自行测试。

发布了125 篇原创文章 · 获赞 76 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Hongwei_1990/article/details/97616898