windows上搭建龙芯1c开发环境

原创 2017年05月22日 10:09:02

思路简介

网上有很多用eclipse+mingw32实现windows上开发环境的,这里也推荐这种方案。

开发环境包括,代码编辑,代码编译,仿真等。其中,代码编辑不是问题,记事本都可以编辑。仿真暂不考虑,听说龙芯的EJTAG暂不支持。现在重点放在代码编译上。
要想在windows上编译龙芯1c的代码,至少需要windows上的交叉编译工具链,然后还需要make。交叉编译工具链采用网友“老鼠”提供的,据说是君正的交叉编译工具链,反君正和龙芯同属mips系列,工具链可以通用也是正常的,经过初步测试可用,如有不能用的地方,可以在虚拟机里面用linux下的龙芯官方提供的交叉编译工具链编译。make采用mingw32-make。

交叉编译工具链下载和安装

交叉编译工具链下载地址http://pan.baidu.com/s/1i4YFrCT

解压后,剪切到目录“D:\Program Files (x86)”内(目录可以根据自己需要修改),如下


将上图中的目录添加到环境变量中,如下


运行测试一下


mingw下载和安装

我这里借用qtcreator里面的,QtCreator默认自带mingw。

同样需要添加环境变量

运行测试一下

编译

进入源码目录,安装“shift”键的同时单击右键,选择“在此处打开命令窗口”,然后执行命令“mingw32-make”。这样就开始按照Makefile文件来编译了,如下



如果换为RT-Thread官网推荐的mips交叉编译工具链的话,则会提示错误,除了交叉编译工具链不一样外,其它的都是一样的,不知何故。

在链接时提示“ABI is incompatible with that of the selected emulation”,暂不知道原因。


测试的代码清单

hello.c

/*	$Id: hello.c,v 1.1.1.1 2006/09/14 01:59:08 root Exp $ */

/*
 * Copyright (c) 2002 Opsycon AB  (www.opsycon.se)
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by Opsycon AB, Sweden.
 * 4. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 */

/*
 *   This is a simple program that demonstrate the linkage
 *   between PMON2000 and a loaded program.
 */


struct callvectors {
	int     (*open) (char *, int, int);
	int     (*close) (int);
	int     (*read) (int, void *, int);
	int     (*write) (int, void *, int);
	long long   (*lseek) (int, long long, int);
	int     (*printf) (const char *, ...);
	void    (*cacheflush) (void);
	char    *(*gets) (char *);
};

struct callvectors *callvec;

#define	printf (*callvec->printf)
#define	gets   (*callvec->gets)

int main(int argc, char **argv, char **env, struct callvectors *cv)
{
	callvec = cv;

	printf("\n\nHello!\n\n");
    
	return(0);
}

ld.script

OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradbigmips",
              "elf32-tradlittlemips")
OUTPUT_ARCH(mips)
ENTRY(_start)
SECTIONS
{
  . = 0xffffffff81000000;
  .text :
  {
    _ftext = . ;
    *(.text)
    *(.rodata)
    *(.rodata1)
    *(.reginfo)
    *(.init)
    *(.stub)
    *(.gnu.warning)
  } =0
  _etext = .;
  PROVIDE (etext = .);
  .fini : { *(.fini) } =0
  .data :
  {
    _fdata = . ;
    *(.data)
   . = ALIGN(32);
   *(.data.align32)
   . = ALIGN(64);
   *(.data.align64)
   . = ALIGN(128);
   *(.data.align128)
   . = ALIGN(4096);
   *(.data.align4096)
    CONSTRUCTORS
  }
  .data1 : { *(.data1) }
  .ctors :
  {
                __CTOR_LIST__ = .;
                LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
               *(.ctors)
                LONG(0)
                __CTOR_END__ = .;
  }
  .dtors :
  {
                __DTOR_LIST__ = .;
                LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
               *(.dtors)
                LONG(0)
                __DTOR_END__ = .;
  }
  _gp = ALIGN(16) + 0x7ff0;
  .got :
  {
    *(.got.plt) *(.got)
   }
  .sdata : { *(.sdata) }
  .lit8 : { *(.lit8) }
  .lit4 : { *(.lit4) }
  _edata = .;
  PROVIDE (edata = .);
  __bss_start = .;
  _fbss = .;
  .sbss : { *(.sbss) *(.scommon) }
  .bss :
  {
   *(.dynbss)
   *(.bss)
   . = ALIGN(32);
   *(.bss.align32)
   . = ALIGN(64);
   *(.bss.align64)
   . = ALIGN(128);
   *(.bss.align128)
   . = ALIGN(4096);
   *(.bss.align4096)
   *(COMMON)
  }
  _end = . ;
  PROVIDE (end = .);
  .stab 0 : { *(.stab) }
  .stabstr 0 : { *(.stabstr) }
  .debug 0 : { *(.debug) }
  .debug_srcinfo 0 : { *(.debug_srcinfo) }
  .debug_aranges 0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  .debug_sfnames 0 : { *(.debug_sfnames) }
  .line 0 : { *(.line) }
  .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
  .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
}

Makefile

#
#  Makefile to build hello.c
#

#CROSS_COMPILE 	=mipsel-linux-
CROSS_COMPILE 	=mips-sde-elf-

#
# Include the make variables (CC, etc...)
#

AS		= $(CROSS_COMPILE)as
LD		= $(CROSS_COMPILE)ld
CC		= $(CROSS_COMPILE)gcc
CPP		= $(CC) -E
AR		= $(CROSS_COMPILE)ar
NM		= $(CROSS_COMPILE)nm
STRIP		= $(CROSS_COMPILE)strip
OBJCOPY		= $(CROSS_COMPILE)objcopy
OBJDUMP		= $(CROSS_COMPILE)objdump
SIZE		= $(CROSS_COMPILE)size

hello:	hello.c
	${CC} -G 0 -O2 -Wall -fno-pic -mno-abicalls -fno-builtin -nostdinc -mips3 -Ttext=0xffffffff80200000 -N -o hello hello.c -nostdlib -e main -Wl,-m -Wl,elf32ltsmip -T ld.script

clean:
	rm -f hello *.o


更多代码请移步到http://git.oschina.net/caogos/OpenLoongsonLib1c




版权声明:本文为博主原创文章,未经博主允许不得转载。

在windows上搭建龙芯1c的RT-Thread开发环境

记录在windows上搭建龙芯1c的RT-Thread开发环境时,遇到的两个问题。
  • caogos
  • caogos
  • 2017年07月11日 15:07
  • 376

GNU的编译器和调试工具

P { margin-bottom: 0.21cm; } GNU的编译器和调试工具 一. 编译工具 1.编辑工具介绍 GNU 提供的编译工具包...
  • yanbixing123
  • yanbixing123
  • 2016年08月24日 15:28
  • 968

交叉编译opencv时候ffmpeg选项始终为no的解决方法

问题来自于在一次在arm开发板上使用opencv的cv::VideoCapture类的open()方法来打开视频文件时候,总是无法成功打开文件,我使用的opencv是3.2.0版的。经过排查,确定是由...
  • woainannanta
  • woainannanta
  • 2017年10月17日 14:52
  • 195

嵌入式软件调试方法

SdustLiYang的专栏 厚积薄发 目录视图摘要视图订阅 CSDN日报20170401 ——《如果你还是“程序员”,我劝你...
  • yz2010
  • yz2010
  • 2017年04月02日 20:17
  • 641

python学习(一) windows开发环境搭建+linux运行环境

朋友向我推荐了python,说怎么怎么好,计划用10-12次学习完成python的初步掌握和了解。 学习一门语音,最快的方法就是自己搭建环境,并且写hello,world!,。所以第一节就从开发环境搭...
  • csolo
  • csolo
  • 2016年10月18日 10:44
  • 2007

在开源龙芯1c开发板上用opencv检测图片中网球并输出圆心坐标和半径

原意是想做一个捡网球的机器人,识别网球就是必须的。项目地址http://git.oschina.net/caogos/OpenLoongsonPickUpTennisRobot 参考了 http://...
  • caogos
  • caogos
  • 2016年02月01日 14:25
  • 1985

在windows上搭建React-Native开发环境

现在RN是越来越火了,我也趁机来凑凑热闹,记录一下我的搭建过程。   第一步,当然是按照Android开发环境啦,包括JDK、SDK、AndroidStudio等,在这里为大家推荐一个各种andro...
  • w815878564
  • w815878564
  • 2016年10月31日 14:57
  • 2799

android开发之搭建完美c开发环境(windows下)

  • 2012年08月01日 11:44
  • 353KB
  • 下载

windows搭建Objective-c开发环境

转自  http://blog.csdn.net/ldl22847/article/details/7482971 Objective-C是苹果软件的编程语言,想要上机学习、调试,有...
  • qq909157370
  • qq909157370
  • 2015年07月30日 17:27
  • 2055

Windows下搭建Objective-C开发环境

最近打算针对iPhone、iPod touch和iPad开发一些应用,所以,需要开始学习Objective C(苹果推出的类似C语言的开发语言)。由于苹果的自我封闭的产业链发展模式(从芯片、机器、开发...
  • wwang196988
  • wwang196988
  • 2012年04月16日 15:13
  • 1062
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:windows上搭建龙芯1c开发环境
举报原因:
原因补充:

(最多只允许输入30个字)