MT7628-Openwrt的开发过程

2018-12-06  本文已影响0人  Lazy_Caaat

无论是 ARM, PowerPC 或 MIPS 的处理器 ,都必需经过以下的开发过程:
1、创建 Linux 交叉编译环境
2、建立 Bootloader
3、移植 Linux 内核
4、建立 Rootfs (根文件系统)
5、安装驱动程序
6、安装软件

采用上面传统的方法进行嵌入式开发,费时费力,但是可以你通过 OpenWrt 快速构建一个应用平台,OpenWrt 从交叉编译器,到 linux 内核,再到文件系统甚至 bootloader 都整合在了一起,形成了一个 SDK 环境。其多达 3000 多种软件包(数量还在增加),囊括从工具链(toolchain),到内核(linux kernel),到软件包(packages)。

OpenWrt 的成功之处还在于它的文件系统是可写的,开发者无需在每一次修改后重新编译系统,并且可以像 PC 机上的 linux 系统一样,用命令安装一些安装包,不用手动配置,这
些都令它更像一个小型的 Linux 电脑系统。

版本信息
开发前的硬件准备

JS7628 开发板一块,mini usb 数据线一条(用于 USB 串口调试),网线一条(用于网络测试、传输固件、应用程序等),开发板电源一个。

搭建软件开发环境

目前大部分的linux开发都是在PC虚拟机上进行的,所采用的linux系统版本有Ubuntu、Redhat、Debian、Fedora 等,这里我们在 windows 操作系统上利用 VMware + Ubuntu12-32bit 来搭建
虚拟机开发环境。

VM14安装Ubuntu12时黑屏无显示问题解决方法,先把虚拟机系统挂起,在运行(win+R)中输入此命令,重启电脑即可。

netsh winsock reset
配置编译环境
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc
sudo apt-get install libssh-dev
git clone git://git.archive.openwrt.org/15.05/openwrt.git
升级GCC
https://blog.csdn.net/ppp2006/article/details/52183472

1.) Press Ctrl+Alt+T on your keyboard to open terminal. When it opens, run below commands to add the ppa:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
2.) Then install gcc 4.8 and g++ 4.8:

sudo apt-get update; sudo apt-get install gcc-4.8 g++-4.8
3.) Once installed, run following commands one by one to use gcc 4.8 instead of previous version.

sudo update-alternatives --remove-all gcc 

sudo update-alternatives --remove-all g++

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20

sudo update-alternatives --config gcc

sudo update-alternatives --config g++
Now you have the gcc 4.8 with c++11 complete feature in your system. Check out by:

gcc --version
配置系统功能
make menuconfig
选择芯片型号和交叉编译工具链
进入到菜单
Kernel modules --->
Other modules --->
<*> kmod-sdhci-mt7620
如果选上“kmod-sdhci-mt7620”则开发板支持 micro SD 卡接口功能,同时启用“IOT-device”功能,如果选择不启用则开发板不支持 micro SD 卡接口功能,并启用“IOT-gateway”功能
拷贝DL文件夹里的文件

想要加速编译,需要提前把备份的DL文件拷贝到~/openwrt/dl目录下


备份文件路径
编译
make V=s
openwrt的Makefile分析
https://www.cnblogs.com/sammei/p/3968916.html
编译完成后设备树路径
/openwrt/target/linux/ramips/dts$ vim MT7628.dts
固件路径
openwrt/bin/ramips/
固件和交叉编译工具链
安装交叉编译工具链
sudo tar jxvf ./OpenWrt-Toolchain-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-i686.tar.bz2 -C /opt/
sudo vim /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/marvin/openwrt-15/openwrt/staging_dir


source /etc/bash.bashrc  //更新环境变量

mipsel-openwrt-linux-gcc -v   //检查是否设置成功
设备树修改
修改内存大小
修改flash大小
配置管脚复用

MT7628 芯片里面有很多管脚是复用,这里我们以“spis”功能为例做介绍如何配置 7628开发板的管脚功能复用。找到 DTS 文件中的


image.png

从上图可以看出 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”中定义


image.png

由上图可知,我们可以把“spis”管脚组定义为“pwm_uart2”、“util”、“gpio”、“spis”4 中
功能,这个和 MT7628 的 datasheet
( “JS7628 开发板配套资料\芯片元器件手册\MT7628\MT7628 Datasheet.pdf”)中介绍的完全对应,如下图所示


image.png

如果需要将这几个管脚恢复为 GPIO 功能,可以把 DTS 文件修改为


image.png
记得开启luci界面
修改配置文件 .config , 将 CONFIG_FEED_luci is not set 修改为  CONFIG_FEED_luci=y
./scripts/feeds update -a
./scripts/feeds install -a
再执行 make menuconfig, 可以查看到已经存在luci选项了

 LuCI -->

          Collections -->

               < * > luci

          Applications-->

              <* > luci-app-ddns

              <* > luci-app-firewall

              <* > luci-app-ntpc

              <* > luci-app-samba

          Themes-->全选
正在下载luci的feed包
make V=s
cd ./bin/ramips
找到固件名为下面名字的bin文件
openwrt-ramips-mt7628-mt7628-squashfs-sysupgrade.bin
固件位置

然后重新编译固件烧录,这样这组管脚就变成了 GPIO 功能

如果想读懂openwrt固件文件名的规则,可以这样理解

openwrt-系统版本(无)-硬件平台-具体分支-设备型号-硬件版本-分区类型-固件类型.bin

上一篇下一篇

猜你喜欢

热点阅读