您的位置:首页 > 运维架构 > 网站架构

MIPS 架构的 AR9331芯片 编译链相关内容

2016-06-15 17:39 417 查看
windows篇=============================

小撸路由是啥?小撸路由顾名思义就是@小撸撸过的 WR703N 之类的路由(系统基于OpenWrt)!因为它使用起来非常方便,而且具有很高的性价比,所以拿来当搭建智能家居系统的核心组件。要想让小撸路由改行服务于智能家居系统,那就得为它专门写一套程序去指挥它。

因为小撸路由使用的芯片是基于 MIPS 架构的 AR9331芯片,所以要想在 Windows系统 上编译能跑的程序就必须使用交叉编译工具链,下面是下载连接,下载后安装后就可以了。(小提示:这个链接是国外的,下载速度貌似很慢很慢,用迅雷也不顶用。当时下载拖了好久才拖下来,真是坑爹啊!!!在群
小撸路由·智能家居
284427089
【点击加入群 小撸路由·智能家居】 中已经共享)
https://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu/mips-2014.05-27-mips-linux-gnu.exe

环境安装好后下面就开始编写小撸路由上的第一个程序:Hello World, Xiaolu Router!!! 随便找个地方新建一个空白记事本文件并改名为
main.cpp
写上下面代码保存。

#include <stdio.h>

int main()
{
printf("Hello World, Xiaolu Router!!!\n");
return 0;
}

使用交叉编译工具链把代码编译成小撸路由上能跑的程序。默认安装的话工具链应该在

C:\Users\用户名\MentorGraphics\Sourcery_CodeBench_Lite_for_MIPS_GNU_Linux\bin

这个路径之下,如果找不到就不关我的事了 :) 最好把这个路径加入环境变量中,这样随便在哪都可以使用里面的工具。

编译命令如下:

mips-linux-gnu-gcc -static -msoft-float -O2 -o main main.cpp

因为 mips 架构的CPU都不带浮点协处理器,所以必须指定使用软件模拟浮点计算,不然会出错的!-msoft-float 这个参数就是这个用意。

如果一切顺利的话,在目录下应该可以看到一个
main
的文件,说明已经成功编译!把这个文件上传至小撸路由,然后执行。不出意外控制台应该看到如下内容:

Hello World, Xiaolu Router!!!

至此,小撸路由上的第一个程序已经搞定!

========================================linux篇====================

linux交叉编译工具链 搜索JS9331 百度网盘 OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2

openwrt 编程器固件的制作方法

对于我们的ar9331小板子,用的flash是Winbond W25Q64 (8 MB)。 

[plain]
view plain
copy

AP121 (AR9331) U-Boot for YY150  modified by onejacky: cd_meatbirds@126.com  
  
  
DRAM:  64 MB  
FLASH: Winbond W25Q64 (8 MB)  
  
  
LED on during eth initialization...  

uboot、fw和art在flash中的位置如下:
8M的FLASH:flash地址从0x000000~0x7FFFFF

ttl访问flash的地址从0x9F000000~0x9F7FFFFF

[plain]
view plain
copy

          flash起始地址   flash终止地址    TTL终止地址  TTL起始地址   
uboot      0x00000000     0x0001FFFF      0x9F01FFFF   0x9F000000     //0x20000  128k  
fw         0x00020000     0x007DFFFF      0x9F7DFFFF   0x9F020000     //0x7c0000 7936K  
xxx        0x007E0000     0x007EFFFF      0x9F7EFFFF   0x9F7E0000     //0x10000  64k  
art        0x007F0000     0x008FFFFF      0x9F7FFFFF   0x9F7F0000     //0x10000  64k  

分4步来制作ar9331小板的full.bin
1.uboot.bin 
在这个128k的bin文件中2个地方要注意:第一,在0x1FC00处存有mac;第二,在0x1FE00处存有pin
uboot.bin 可以直接移植在谷歌上有个开源的项目有源代码,编译一下就好了。如果懒得去编译,只想做个备份以后用的话,可以采用以下的方法

cat /proc/mtd

dd if=/dev/mtd0 of=uboot.bin

    然后用winscp 下载到电脑中

2.fw.bin 

    openwrt 自己make menuconfig  make V=99 编译吧

3.xxxx

    做一个64k的空白的bin文件就好了,里面全部填充FF

  自己用c写一个也可以生成一个empty_ff.bin的文件

[plain]
view plain
copy

#include<stdio.h>  
#include<stdlib.h>  
#include<unistd.h>  
#include<fcntl.h>  
int main(void)  
{  
    int fd;  
    int i;  
    char buf[2] = {0xff,0x0};  
    fd = open("empty_ff.bin", O_RDWR | O_CREAT, 0666);  
    for(i = 0;i < 64*1024 ; i++)  
        write(fd,buf,1);  
    close(fd);  
    return 0;  
}  

4.art.bin

      art.bin分区提取

dd if=/dev/mtd4 of=art.bin

最后采用cat 连接起来就好了

cat uboot.bin  fw.bin  empty_ff.bin art.bin >  full.bin
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: