用于OpenRISC的Makefile示例
2024-08-30 15:05:12
用于开源处理器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;
最新文章
- Laravel学习--关于Relation的坑
- aix磁盘分区挂载问题
- [总结] I/O输入,输出
- Hive几种数据导出方式
- C#项目实例中读取并修改App.config文件
- 基本套接字编程(5) -- epoll篇
- mount分区为读写属性
- Java Day 09
- 博客中最快捷的公式显示方式:Mathjax + Lyx
- Ubuntu中wine安装的程序如何卸载
- shell的进度条【转】
- Tools:Android studio 使用
- Django-website 程序案例系列-10 cookie 和 session的应用
- stm32与HC-SR04超声波传感器测距
- 谈一谈Vector类
- 在ubuntu bionic下对基于qemu的arm64进行linux内核5.0.1版本的编译和运行
- The Closest M Points
- Django网站搭建(相关命令-Win10环境)
- Windows下运行Hadoop
- Rsa2加密报错java.security.spec.InvalidKeySpecException的解决办法
热门文章
- Linux网络编程:一个简单的正向代理服务器的实现
- AC日记——「SCOI2016」美味 LiBreOJ 2016
- 转:攻击JavaWeb应用[7]-Server篇[1]
- HDU3466 Proud Merchants [背包]
- 图论&;双连通分量&;强联通分量&;2-SAT
- poj 2773欧几里德
- ES5 方法学习
- BZOJ 2527 [Poi2011]Meteors(整体二分)
- 【枚举】【SPFA】Urozero Autumn Training Camp 2016 Day 5: NWERC-2016 Problem I. Iron and Coal
- 【推导】Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals) A. Office Keys