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




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

相关文章推荐

龙芯麒麟编译安装Ruby问题处理

龙芯麒麟环境,编译 Ruby 链接失败首先,make -v 确认环境的 build type 为 mips64el-neokylin-linux-gnu> configure –build=mips6...

三个角度看SVM(1)——最大间隔分类器

“横看成岭侧成峰,远近高低各不同。”支持向量机(Support Vector Machine, SVM)作为一个被广泛应用的有监督机器学习算法,网络上对它的介绍数不胜数,其中更有不少好文佳作。本文与它...

Kinect V2 开发环境搭建

中文的kinect v2 开发环境搭建的教程很少,我就负责写一个完整的kinect v2开发环境搭建教程。 kinect v2 基本环境要求为: windows8.0 以上 usb3.0接口 vs...

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

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

windows搭建Objective-c开发环境

转自  http://blog.csdn.net/ldl22847/article/details/7482971 Objective-C是苹果软件的编程语言,想要上机学习、调试,有...

Windows下搭建Objective-C开发环境

最近打算针对iPhone、iPod touch和iPad开发一些应用,所以,需要开始学习Objective C(苹果推出的类似C语言的开发语言)。由于苹果的自我封闭的产业链发展模式(从芯片、机器、开发...

使用GNUstep在Windows上搭建Objective-C开发环境所遇问题的解决

具体搭建步骤可参见donhao的: 一起来学Objective-C(1)——Window下开发环境安装和Hello World http://blog.csdn.net/donhao/articl...

转载:Windows下搭建objective C开发环境

地址 :http://www.cnblogs.com/linyawen/archive/2012/04/10/2441038.html Windows下搭建objective...
  • jw082kb
  • jw082kb
  • 2013年07月03日 23:42
  • 216

Objective C 学习心得 (一):--Windows下搭建objective C开发环境

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

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