用于开源处理器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. Restful Framework 初识

    目录 一.什么是RESTful 二.什么是API 三.RESTful API规范 四.基于Django实现API 五.基于Django Rest Framework框架实现 一. 什么是RESTful ...

  2. Delphi使程序的窗口出现在最前面并激活

    procedure setAppFront(); //使程序的窗口出现在最前面并激活 var pt, OldPt, NewPt: TPoint; begin //判断Application是否最小化, ...

  3. LoadRunner读取文件并验证

            checkprocess()  {  char command[1024];  int i, total = 0;  char buffer[12], ch;  char *filen ...

  4. 架构设计之NodeJS操作消息队列RabbitMQ

    一. 什么是消息队列? 消息(Message)是指在应用间传送的数据.消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象. 消息队列(Message Queue)是一种应用间的通信 ...

  5. sql查询总结

    1.SQL select 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SELECT 列名称 FROM 表名称 实例: SELECT username,pas ...

  6. Java实现蛇形矩阵

    public class Solution { //下x++ 左y-- 上x-- 右y++ public void prints(int n) { int[][] mp = new int[n][n] ...

  7. CF1020B Badge 【模拟链表】

    n个点(n<=1000) 接下来n个整数表示ai 第i个数ai表示i到ai有一条边 输出: n个数 表示从第i个点出发,最先被访问两次的点 样例1: 从1 出发,先到达2,2会到达3,3又到达2 ...

  8. ZSTU OJ 4272 最佳淘汰算法

    线段树. 处理出每个位置下一个位置是哪里.然后搞个线段树找一下最大值就可以了. #include<map> #include<set> #include<ctime> ...

  9. PAT L3-001. 凑零钱

    $01$背包,路径记录,贪心. 可以将物品从大到小排序之后进行背包,同时记录路径. #include<map> #include<set> #include<ctime& ...

  10. HDU 6118 2017百度之星初赛B 度度熊的交易计划(费用流)

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...