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

来源:互联网 发布:a5源码交易平台 编辑:程序博客网 时间:2024/05/05 11:18

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
  1. AP121 (AR9331) U-Boot for YY150  modified by onejacky: cd_meatbirds@126.com  
  2.   
  3.   
  4. DRAM:  64 MB  
  5. FLASH: Winbond W25Q64 (8 MB)  
  6.   
  7.   
  8. LED on during eth initialization...  
uboot、fw和art在flash中的位置如下:

8M的FLASH:flash地址从0x000000~0x7FFFFF
ttl访问flash的地址从0x9F000000~0x9F7FFFFF

[plain] view plain copy
  1.           flash起始地址   flash终止地址    TTL终止地址  TTL起始地址   
  2. uboot      0x00000000     0x0001FFFF      0x9F01FFFF   0x9F000000     //0x20000  128k  
  3. fw         0x00020000     0x007DFFFF      0x9F7DFFFF   0x9F020000     //0x7c0000 7936K  
  4. xxx        0x007E0000     0x007EFFFF      0x9F7EFFFF   0x9F7E0000     //0x10000  64k  
  5. 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
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. #include<unistd.h>  
  4. #include<fcntl.h>  
  5. int main(void)  
  6. {  
  7.     int fd;  
  8.     int i;  
  9.     char buf[2] = {0xff,0x0};  
  10.     fd = open("empty_ff.bin", O_RDWR | O_CREAT, 0666);  
  11.     for(i = 0;i < 64*1024 ; i++)  
  12.         write(fd,buf,1);  
  13.     close(fd);  
  14.     return 0;  
  15. }  
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


0 0
原创粉丝点击