Chinaunix首页 | 论坛 | 博客
  • 博客访问: 526001
  • 博文数量: 87
  • 博客积分: 4086
  • 博客等级: 上校
  • 技术积分: 900
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 15:55
文章分类

全部博文(87)

文章存档

2012年(3)

2010年(13)

2009年(7)

2008年(64)

我的朋友

分类: Python/Ruby

2012-02-24 14:39:05

当然首先安装ca850,把ca850的二进制文件地址加入到环境变量PATH中。比如我的需要加入C:\Program Files\NEC Electronics Tools\CA850\V3.42到PATH。然后创建一个目录,比如proj,proj下面创建一个source目录,所有的源代码直接放到source下。然后在proj中新建一个makefile,makefile的内容如下面的代码。然后在命令行运行make即可生成out文件和hex文件。
 
makefile命令如下,根据实际情况可能需要一些修改:
  1. V850_COMPILER_PATH="C:\Program Files\NEC Electronics Tools\CA850\V3.42"

  2. OBJS_DIR=objs
  3. SOURCE_DIR=source


  4. CC=ca850
  5. AS=as850
  6. LD=ld850
  7. HX=hx850
  8. ROM=romp850

  9. CFLAGS=-DM11_DVD_MODEL_IS
  10. CFLAGS+=@$(SOURCE_DIR)/compile.cmd
  11. CFLAGS+=-I$(SOURCE_DIR)

  12. #cpu ID
  13. NEC_V850_CPU=f3366
  14. SFLAGS=-cpu $(NEC_V850_CPU)

  15. LDFLAGS=-D $(SOURCE_DIR)\link.dir @$(SOURCE_DIR)\link.cmd

  16. #register mode
  17. NEC_V850_REGS=r32

  18. vpath %.c $(SOURCE_DIR)
  19. vpath %.s $(SOURCE_DIR)

  20. #libs add additional files
  21. V850_LINKER_ADDITIONAL_FILE=$(V850_COMPILER_PATH)\lib850\$(NEC_V850_REGS)\rompcrt.o
  22. V850_LINKER_ADDITIONAL_LIBS=$(V850_COMPILER_PATH)\lib850\$(NEC_V850_REGS)msk\libc.a
  23. V850_LINKER_ADDITIONAL_LIBS+=$(V850_COMPILER_PATH)\lib850\$(NEC_V850_REGS)\libr.a

  24. #object name
  25. TARG=d2osd.out
  26. HEX_FILE=d2osd.hex
  27. ELF_FILE=d2osd.elf
  28. MAP_FILE=d2osd.map

  29. #all c source code
  30. C_SRCS = $(wildcard $(SOURCE_DIR)/*.c)
  31. C_OBJS = $(patsubst %c, %o, $(C_SRCS))
  32. C_OBJN = $(notdir $(C_OBJS))
  33. OBJS = $(addprefix $(OBJS_DIR)/, $(C_OBJN))

  34. #all asm source code
  35. ASM_SRCS = $(wildcard $(SOURCE_DIR)/*.s)
  36. ASM_OBJ1 = $(patsubst %s, %o, $(ASM_SRCS))
  37. ASM_OBJ2 = $(notdir $(ASM_OBJ1))
  38. ASM_OBJS = $(addprefix $(OBJS_DIR)/, $(ASM_OBJ2))

  39. $(OBJS_DIR)/%.o: %.c | $(OBJS_DIR)
  40.     $(CC) $(CFLAGS) -o $(OBJS_DIR)/$*.o $<

  41. $(OBJS_DIR)/%.o: %.s | $(OBJS_DIR)
  42.     $(AS) $(SFLAGS) -o $(OBJS_DIR)/$*.o $<


  43. all : $(TARG)

  44. $(TARG): $(OBJS) $(ASM_OBJS)
  45.     $(LD) $(LDFLAGS) -o $(TARG) \
  46.         -m=$(MAP_FILE) \
  47.         $(OBJS) \
  48.         $(ASM_OBJS) \
  49.         $(V850_LINKER_ADDITIONAL_LIBS) \
  50.         $(V850_LINKER_ADDITIONAL_FILE)
  51.     $(ROM) -o $(ELF_FILE) $(TARG)
  52.     $(HX) -o $(HEX_FILE) $(ELF_FILE)

  53. $(OBJS_DIR):
  54.     mkdir $(OBJS_DIR)

  55. clean:
  56.     del $(TARG) $(HEX_FILE) $(ELF_FILE) $(MAP_FILE) /Q
  57.     rmdir $(OBJS_DIR) /S /Q
 
阅读(4316) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~