原文网址:http://imgtec.eetrend.com/forum/2371

我觉得对于MIPS处理起来说最令新手头疼的应该就是编译环境的建立了,这点MIPS做的确实不是很好,不像ARM那样有许多的工具和资料,只能自己摸索,自己试了很多也走了很多弯路,这里向大家介绍一款很出色的免费编译环境,希望对大家有所帮助。

我向大家介绍的是mentor graphics的Sourcery CodeBench的免费版本CodeBench Lite Edition,网址如下
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebenc...

可以看到MIPS有两个版本GNU/Linux版本和ELF版本,GNU/Linux版本用于开发linux应用,而ELF版本是用于开发裸机程序以及RTOS程序的,这里我主要介绍ELF版本的,ELF版本中带有模拟器,可以很方便的调试程序。接下来主要介绍Linux下ELF版本的安装与使用。
https://sourcery.mentor.com/GNUToolchain/release2553 在网页中选择IA32 GNU/Linux Installer 进行下载,下载之后为

更改为可运行属性后,直接通过./mips-2013.05-65-mips-sde-elf.bin命令运行即可,不过需要注意的是需要首先安装awk grep sed bzip2 gunzip等软件,而且如果Linux系统使用selinux的话需要先关闭selinux才能正常安装,安装的过程比较简单,全部默认设置即可,安装完成之后,重新启动,在终端中输入mips-sde-elf-gcc -v命令,出现gcc version 4.7.3 (Sourcery CodeBench Lite 2013.05-65)即表示安装成功。

接下来我想大家介绍下如何使用gdb在模拟器上调试MIPS程序使用如下getting started文档中的示例程序:
#include 
int factorial(int n) {
if (n == 0)
return 1;
return n * factorial (n - 1);
}
int main () {
int i;
int n;
for (i = 0; i < 10; ++i) {
n = factorial (i);
printf ("factorial(%d) = %d\n", i, n);
}
return 0;
}
使用如下命令编译程序
mips-sde-elf-gcc -o factorial main.c -T script
其中script为相关的链接脚本,程序自带一系列的链接脚本均在CodeBench安装路径下的mips-sde-elf/lib/中,各链接脚本的针对的目标详见getting started文档,这里我们需要使用的mipssim-hosted.ld,将其考入main.c所在路径中,通过命令:
mips-sde-elf-gcc -o factorial main.c -T mipssim-hosted.ld -g进行编译,之后就可以通过gdb对这个程序进行调试了。
通过指令:
mips-sde-elf-gdb factorial进入GDB命令行界面
首先连接模拟器:
target sim
加载程序:
load
在main程序出设置断点:
break main
开启反汇编功能:
set disas on
开始调试程序:
run

之后就可以通过stepi/step进行调试了,而且下方同时显示了C源代码以及当前执行的汇编指令,调试起来很方便
原文地址: http://bbs.eetop.cn/viewthread.php?tid=424947&extra=page%3D1%26amp%3Bord...

【转】MIPS交叉编译环境的建立的更多相关文章

  1. 自己动手写CPU之第四阶段(3)——MIPS编译环境的建立

    将陆续上传本人写的新书<自己动手写CPU>(尚未出版).今天是第13篇.我尽量每周四篇 4.4 MIPS编译环境的建立 OpenMIPS处理器在设计的时候就计划与MIPS32指令集架构兼容 ...

  2. Ubuntu12.04下arm交叉编译环境的建立

    http://blog.csdn.net/heyangya2009/article/details/5424376 备注:ubuntu12.04+Android+Real6410 在主机上用来编译其他 ...

  3. 路由器逆向分析------MIPS交叉编译环境的搭建(Buildroot)

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/68950682 为了能在我们熟悉的windows或者ubuntu下开发mips架构的 ...

  4. ubuntu14.04建立交叉编译环境, 注意事项

    ubuntu14.04建立交叉编译环境, 注意事项 ~$ arm-linux-gcc/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: e ...

  5. 建立ARM交叉编译环境 (arm-none-linux-gnueabi-gcc with EABI)【转】

    转自:http://lib.csdn.net/article/embeddeddevelopment/60172?knId=886 建立ARM交叉编译环境 (arm-none-linux-gnueab ...

  6. 使用scratchbox2建立交叉编译环境

    使用scratchbox2建立交叉编译环境,使交叉编译不再烦人..... os:ubuntu 12.04.4 x64 1. 安装相关工具sudo apt-get install debootstrap ...

  7. 建立树莓派raspberry交叉编译环境以及编译内核

    最近买了一个树莓派,玩了几天,虽然已经有很多人玩了,现在玩好像有点晚了,但是他确实是个好东西,学好它,对嵌入式的整个开发流程也就会熟悉很多.虽然性能不是很强和现在的BB-BLACK比有点慢了,但是它便 ...

  8. Ubuntu 树莓派2b交叉编译环境

    在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时是因为目的平台 ...

  9. codeSourcery交叉编译环境

    arm-none-Linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括 ...

随机推荐

  1. Codeforces Round #336 (Div. 2) D. Zuma 区间dp

    D. Zuma   Genos recently installed the game Zuma on his phone. In Zuma there exists a line of n gems ...

  2. Codeforces Round #335 (Div. 2) D. Lazy Student 贪心

    D. Lazy Student   Student Vladislav came to his programming exam completely unprepared as usual. He ...

  3. Struts2 Convention插件的使用(2)return视图以及jsp的关系

    package com.hyy.action; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extend ...

  4. 华为上机:Tom的生日礼物

    Tom的生日礼物 描述: 四月一日快到了,Tom想了个愚人的好办法——送礼物.嘿嘿,不要想的太好,这礼物可没那么简单,Tom为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物.盒子里面可以再放零个或 ...

  5. JLink 软件复位、Halt及运行小工具

    调试硬件时常常需要复位目标芯片,每次断电上电太麻烦,又不喜欢总打开segger的命令行,于是就搞了这个小工具:   QT绿色软件,解压即可运行,打开JLinkRST.exe,点击Connect即可通过 ...

  6. CentOS 7:如何安装防火墙?

    对于纯净版的CentOS 7,您必须手动安装防火墙.但是你就算安装了防火墙还是不能马上运行它,你需要再做一些操作才能让它工作. 在CentOS 7中按照以下步骤来设置防火墙 第一步,通过yum安装sy ...

  7. 291. Word Pattern II

    题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...

  8. Linux系统文件访问控制列表

    linux系统中的RWX权限.特殊权限.隐藏权限都是对某一类用户设置的, 而如果希望对某个指定的用户进行单独的权限设置的话就需要用到文件的 访问控制权限了. 我们可以对普通文件或目录进行设置ACL,通 ...

  9. Linux命令-free

    显示系统内存使用情况 free  [-m / -g / -h] [root@localhost test]# free -m total used free shared buff/cache ava ...

  10. Android 设置闹铃步骤和基础代码

    主要分三步: 1. 设置闹铃时间; 2. 接收闹铃事件广播; 3. 重开机后重新计算并设置闹铃时间;   1. 设置闹铃时间(毫秒) private void setAlarmTime(Context ...