head 编 译 吴 磊
编译环境 OS Compiler 默认ARM目录: Windows 2000, XP, WinME. The recommended OS is Windows 2000 with SP2 or later. Compiler ADS v1.2. The recommended build version is build 842. ADS安装: 1、ads-arm目录下安装 2、选择ads目录下license 3、 Build842.rar 解压 4、 ARMpatch.rar替换安装目录下相应位置的文件 默认ARM目录: DIR_ARM = c:\progra~1\arm\adsv1_2 DIR_ARM := $(strip $(DIR_ARM)) DIR_TOOL = $(DIR_ARM)\bin DIR_ARMLIB = $(DIR_ARM)\lib DIR_ARMINC = $(DIR_ARM)\include
编译环境 Perl interpretor ActivePerl. The recommended version is ActivePerl 5.6.1. if (($action eq "remake") || ($action eq "update") || ($action eq "new")|| ($action eq "bm_new")) { if ($action eq "bm_new") { system("echo BM_NEW=TRUE >> ${makeFolder}~buildinfo.tmp"); $result = system("${makeCmd} -f${makeFolder}${myMF} -k -r -R CUSTOMER=$custom PROJECT=$project new"); } tools\make.exe -fmake\gsm2.mak -r -R CUSTOMER=mtk PROJECT=gprs new
编译环境 3 part 软件:MinGW+MinSYS 7za MinGW: Minimalistic GNU on Windows MinSYS: Minimal System GCC for Win32开发环境,类似的还有cygwin。MinGW最初从 CygWin 的基础上发展而来,力求在 Windows 上建立一个提供最 低限依赖要求的由一系列 GNU 工具构建而成的应用、开发环境; 它更多的要依赖于 Win32 API。
编译连接工具 编译器 链接器及开关: armasm.exe armcc.exe CFLAGS := -cpu ARM7EJ-S -littleend -O2 -zo –fa(6226) 链接器及开关: armlink ($(LINK) $(VIA) make\~libs.tmp > $(LOG) fromelf.exe $(BIN_CREATE) $(strip $(TARGDIR))\$(IMG_FILE) $(BIN_FORMAT) -output $(strip $(TARGDIR))\$(BIN_FILE)
Make file Makefile的规则 target ... : prerequisites ... command 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的 例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文 件。 3、如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改 时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生 成edit这个文件。 4、如果edit所依赖的.o文件也存在,那么make会在当前文件中找目标 为.o文件的依赖性,如果找到则再根据那一个规则生成.o文件。(这有 点像一个堆栈的过程) 5、当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件, 然后再用 .o 文件生命make的终极任务,也就是执行文件edit了。
编译构架
编译流程 ResGenerator_HW.bat只编译资源
编译流程
编译流程
主要文件 Xxx_GPRS.mak:针对不同的客户和项目的配置列表 Option.mak:项目选项,宏定义,构建脚本 Verno_xxx.bld:版本构建脚本 Comstom.bld:保存了MTK释放软件时的变量,此文件不修改。 \\build\$custom: target编译结果,包括*.o, 各模块log信息及link的log,.bin, .elf,.lis, .sim, .dep \plutommi\Customer\ResGenerator\mtk_resgenerator.log 编译资源时产生的log scatXXXXX.txt Scatter file for customer platform. It will define the starting address and length of ROM, External RAM, and Internal RAM
编译命令 Make [custom=customerName]<project><platform ><action>[module] Custom = MIKI26_06B … Project = GPRS GSM Action = new update remake clean Module = custom drv plutommi…
增加模块 1、 增加模块到COMPLIST 2、增加makefile相关文件 CUS_REL_SRC_COMP += xyz \make\xyz xyz.lis xyz.inc xyz.pth xyz.def
head Thank you!