美文网首页
MT7628-Openwrt的开发过程

MT7628-Openwrt的开发过程

作者: Lazy_Caaat | 来源:发表于2018-12-06 00:44 被阅读0次

    无论是 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

    相关文章

      网友评论

          本文标题:MT7628-Openwrt的开发过程

          本文链接:https://www.haomeiwen.com/subject/otpicqtx.html