用于开源处理器OpenRISC精简版AltOR32的软件开发,使用的工具链为or1k-elf-gcc,Makefile和连接脚本为:
 #***********************************************************************************************
# File : Makefile
# Author : Lyu Yang
# Date :
# Description : Makefile for OpenRISC
#*********************************************************************************************** TARGET = main CROSS_COMPILE = or1k-elf- INCLUDE_DIRS = -I ./
LIBRARY_DIRS = -L ./ CC = $(CROSS_COMPILE)gcc
CFLAGS = $(INCLUDE_DIRS) -mno-delay -c -msoft-div -msoft-float -msoft-mul -mno-ror -mno-cmov -mno-sext -Os CXX = $(CROSS_COMPILE)g++
CXXFLAGS = $(INCLUDE_DIRS) -c -mno-delay -msoft-float -msoft-mul -mno-ror -mno-cmov -mno-sext -Os AS = $(CROSS_COMPILE)as
ASFLAGS = -c LD = $(CROSS_COMPILE)ld
LDFLAGS = $(LIBRARY_DIRS) -T./openrisc.lds -Map $(TARGET).map -nostartfiles -nodefaultlibs -nostdlib OBJCP = $(CROSS_COMPILE)objcopy
OBJCPFLAGS = -O binary -j .text -j .rodata -j .data -j .bss AR = $(CROSS_COMPILE)ar
ARFLAGS = cr DUMP = $(CROSS_COMPILE)objdump
DUMPFLAG = --disassemble --syms --all-header SIZE = $(CROSS_COMPILE)size # Static library files
OBJS_LIB += # User should list all object files
OBJS += $(patsubst %.S, %.o, $(wildcard *.S))
OBJS += $(patsubst %.c, %.o, $(wildcard *.c)) # Make
.PHONY: all clean debug
all: $(TARGET).elf $(TARGET).bin $(TARGET).asm $(TARGET).mif
$(SIZE) $(TARGET).elf %.o: %.S
$(AS) $(ASFLAGS) $^ -o $@ %.o: %.c
$(CC) $(CFLAGS) $^ -o $@ $(TARGET).elf: $(OBJS)
$(LD) $(LDFLAGS) $(OBJS_LIB) -o $@ $^ $(TARGET).asm: $(TARGET).elf
$(DUMP) $(DUMPFLAG) $(TARGET).elf > $(TARGET).asm $(TARGET).bin: $(TARGET).elf
$(OBJCP) $(OBJCPFLAGS) $< $@ $(TARGET).mif: $(TARGET).bin
./bin2fpga/bin2fpga $< clean:
rm -rf *.o *.asm *.elf *.bin *.mif *.map *.coe data.txt debug:
$(CROSS_COMPILE)gdb $(TARGET).elf -x gdbinit.txt
 /* Linker script for OpenRISC */

 OUTPUT_FORMAT("elf32-or1k")
OUTPUT_ARCH(or1k)
ENTRY(_reset) MEMORY
{
RAM (rwx) : ORIGIN = 0x0, LENGTH = 0x4000
DRAM (rwx) : ORIGIN = 0x10000000, LENGTH = 0x10000000
} SECTIONS
{
.text :
{
_stext = .;
stext = .;
*(.text)
*(.text.*)
. = ALIGN();
_etext = .;
etext = .;
} > RAM .rodata :
{
_sdata = .;
sdata = .;
. = ALIGN();
*(.rodata)
*(.rodata.*)
} > RAM .data :
{
*(.sdata)
*(.data)
*(.rwdata)
*(.got.plt) *(.got)
*(.shdata)
*(.data.* .gnu.linkonce.d.*)
. = ALIGN ();
_edata = .;
edata = .;
} > RAM .bss :
{
. = ALIGN();
__bss_start = .;
*(.sbss .sbss.*)
*(.bss .bss.*)
*(COMMON)
. = ALIGN ();
__bss_end = .;
} > RAM
} /* Stack base address */
__stack_pointer = 0x4000;
 

用于OpenRISC的Makefile示例的更多相关文章

  1. 用于RISC-V的Makefile示例

    # Initialize ASM For RISC-V .section .text.entry .option norvc .global _start .macro push_reg addi s ...

  2. makefile示例

    1. 生成.so动态库 示例一: SoVer = 10010110CfgVer = 10010110 BinName = fnights.soGameName = "\"fnigh ...

  3. gcc链接g++编译生成的静态库和动态库的makefile示例

    使用c++开发程序或者库时,将库提供给其他人使用. 然而使用者是使用c开发的程序,链接g++编译生成的库时,于链接gcc生成的库,有所不同. 首先是静态库,以链接g++编译生成的libmylib.a为 ...

  4. 简单makefile示例

    Makefile cmd: - g++ 相信在linux下编程的没有不知道makefile的,刚开始学习linux平台下的东西,了解了下makefile的制作,觉得有点东西可以记录下. 下面是一个极其 ...

  5. 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...

  6. makefile基础(GNU)

    makefile的核心 targets : prerequisites ; commands...   //不分行的情况 targets : prerequisites                 ...

  7. Linux驱动学习 —— 在/sys下面创建目录示例

    有时我们需要在/sys下面创建一些目录, 下面给出了一个示例. 在加载驱动模块后, 在/sys下面会创建一个名为sysfs_demo的目录,并在其中在创建几个文件和目录. [root@tiny4412 ...

  8. C/C++ makefile自动生成工具(comake2,autotools,linux),希望能为开源做点微薄的贡献!

      序     在linux下C或C++项目开发,Makefile是必备的力气,但是发现手写很麻烦. 在百度有个comake2工具,用于自动生成Makefile工具,而在外边本想找一个同类工具,但发现 ...

  9. Linux内核Makefile文件(翻译自内核手册)

    --译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 Thi ...

随机推荐

  1. StringBuilder类的作用,以及与String类的相互转换

    # 转载请留言联系 先看一段String类的字符串拼接的代码. String s = "hello" 会在常量池开辟一个内存空间来存储”hello". s += &quo ...

  2. setTimeout(fn,0)

    我们都知道setTimeout是一个延迟执行的函数 console.log(); setTimeout(function(){console.log();},); console.log(); 会得到 ...

  3. [水煮 ASP.NET Web API2 方法论](12-4)OData 支持的 Function 和 Action

    问题 在 Web API 中使用 OData Function 和 Action. 解决方案 可以通过 ODataModelBuilder,使用 OData 构建 ASP.NET Web API, E ...

  4. RHEL7删除yum命令后如何恢复

    楼主也是不小心删除了rhel7上的yum命令,后来通过安装centos7的yum命令解决 1.首先下载yum相关的rpm包 http://mirrors.163.com/centos/7/os/x86 ...

  5. codeforces 360 B

    B - Levko and Array 题目大意:给你你个长度为n的数列a,你最多改变k个值,max{ abs ( a[ i + 1] - a[ i ] ) } 的最小值为多少. 思路:这个题很难想到 ...

  6. 转:Google Project Zero挖洞经验整理

    https://www.sec-un.org/google-project-zero%E6%8C%96%E6%B4%9E%E7%BB%8F%E9%AA%8C%E6%95%B4%E7%90%86/ 1. ...

  7. ZUFEOJ 2147 07染色带谜题

    2147: 07染色带谜题 时间限制: 1 Sec  内存限制: 128 MB提交: 170  解决: 21[提交][状态][讨论版][Edit] [TestData] 题目描述 现在给你一个长为N的 ...

  8. curator管理es索引

    安装curator------------------rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch vi /etc/yu ...

  9. oracle substr

    SUBSTR( string, start_position [, length ] ) Parameters or Arguments string The source string. start ...

  10. 利用FusionCharts制作统计报表

    今天在开发中需要用到统计报表,于是就查找了一下FusionCharts的用法,下面来总结一下利用FusionCharts怎么制作统计报表 1.建表 首先要建立所要统计报表的表,表的字段越多,统计的维度 ...