用于OpenRISC的Makefile示例
用于开源处理器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示例的更多相关文章
- 用于RISC-V的Makefile示例
# Initialize ASM For RISC-V .section .text.entry .option norvc .global _start .macro push_reg addi s ...
- makefile示例
1. 生成.so动态库 示例一: SoVer = 10010110CfgVer = 10010110 BinName = fnights.soGameName = "\"fnigh ...
- gcc链接g++编译生成的静态库和动态库的makefile示例
使用c++开发程序或者库时,将库提供给其他人使用. 然而使用者是使用c开发的程序,链接g++编译生成的库时,于链接gcc生成的库,有所不同. 首先是静态库,以链接g++编译生成的libmylib.a为 ...
- 简单makefile示例
Makefile cmd: - g++ 相信在linux下编程的没有不知道makefile的,刚开始学习linux平台下的东西,了解了下makefile的制作,觉得有点东西可以记录下. 下面是一个极其 ...
- 【嵌入式开发】 嵌入式开发工具简介 (裸板调试示例 | 交叉工具链 | Makefile | 链接器脚本 | eclipse JLink 调试环境)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705 参考博客 : [嵌入式开发]嵌入式 开发环境 (远 ...
- makefile基础(GNU)
makefile的核心 targets : prerequisites ; commands... //不分行的情况 targets : prerequisites ...
- Linux驱动学习 —— 在/sys下面创建目录示例
有时我们需要在/sys下面创建一些目录, 下面给出了一个示例. 在加载驱动模块后, 在/sys下面会创建一个名为sysfs_demo的目录,并在其中在创建几个文件和目录. [root@tiny4412 ...
- C/C++ makefile自动生成工具(comake2,autotools,linux),希望能为开源做点微薄的贡献!
序 在linux下C或C++项目开发,Makefile是必备的力气,但是发现手写很麻烦. 在百度有个comake2工具,用于自动生成Makefile工具,而在外边本想找一个同类工具,但发现 ...
- Linux内核Makefile文件(翻译自内核手册)
--译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 Thi ...
随机推荐
- Leetcode 之Binary Tree Postorder Traversal(44)
后序遍历,比先序和中序都要复杂.访问一个结点前,需要先判断其右孩子是否被访问过.如果是,则可以访问该结点:否则,需要先处理右子树. vector<int> postorderTravers ...
- HDU-2487
Ugly Windows Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Http请求加签、验证操作
加签.验签的作用 常见的http请求交互过程中,请求参数通过url或者request body等形式传输.但是由于http请求的开放性,使得请求参数很容易被拦截篡改.因此,需要对请求参数进行加签,然后 ...
- resteasy web Guice集成版本
xxxx:8080/resteasy/messageservice/aaaa Hello : aaaa web.xml <context-param> <param-name> ...
- Python+Selenium 自动化实现实例-Css捕捉元素的几种方法
#coding=utf-8 from selenium import webdriverimport timedriver = webdriver.Chrome()driver.get("h ...
- PHP7 微信支付回调失败 解决
升级完PHP7 发现微信支付回调失败.原来是 $GLOBALS['HTTP_RAW_POST_DATA'];没有定义的问题.php7 移除了这个全局变量. 问题代码如下: 微信API :WxPay.A ...
- onethink 路由规则无效问题解决
修改文件 Application/Common/Conf/config.php 打开注释 //'MODULE_ALLOW_LIST' => array('Home','Admin'), // 1 ...
- 原本就有mysql,安装phpstudy使用里面自带的mysql导致原来的没服务
电脑中之前安装了mysql,正常服务中,但做项目的需要,安装了phpStudy,它里面自带了mysql,启动phpstudy里面的mysql后在用原来的就没服务了, 到电脑管理服务中也没有发现mysq ...
- Linux下python版本的升级步骤
1.先下载,你要升级的python版本(我升级的是python3.3.0) 可使用系统自带下载工具wget下载: wget http://www.python.org/ftp/python/3.3.0 ...
- Bzoj2721 [Violet]樱花(筛法)
题面 题解 首先化一下式子 $$ \frac 1x+\frac 1y=\frac 1{n!} \Rightarrow \frac {x+y}{xy}=\frac 1{n!} \Rightarrow ( ...