早就知道有工程模板这个东东,类似于power pcb在启动时自动设置好一些常用工作环境一样。今天下定决心好好研究研究这个工程模板到底是怎么回事,经过一番搜索终于找到好文章了。。
在ADS新建的时候出现一个对话框,默认只有6个模板。
这些模板的具体介绍就不详细论述了,在赵星寒等编著的<<ARM开发工具ADS原理与应用>>一书的P35有详细介绍。
这个6个模板的奥妙就在ADS安装目录下的D:\Program Files\ARM\ADSv1_2\Stationery文件夹里,一个模板对应一个文件夹,如果在这里自己建立一些新的文件夹(名字任意),一样会在新建工程的时候出现。如下图:
这里我找了一个C程序工程模板,下面是一些使用说明
/*本模板用于使44B0运行C程序
一般说来汇编用来初始化之后跳到C入口MAIN函数处
一般说来汇编用来初始化之后跳到C入口MAIN函数处
*/
一般一个模板的设置包含工程文件的设置和ADS配置信息的设置,下面我总结一下我针对S3C44b0的这个CPU的添加开发模板的过程:
A、工程文件部分设置:
1.转到目录D:\Program Files\ARM\ADSv1_2\Stationery\下面
2.复制ARM Executable Image文件夹,重命名文件夹为S3C44B0_ARM_template
3.将文件夹内的ARM Executable Image。MCP工程文件更名为S3C44B0_ARM_template.mcp,删除对应的同名数据文件夹ARM_Executable_Image_Data,方便下次编译。
4.复制自己的工程模板文件,如果按照我这里提供的这个文件包,目录组织如下:
3.将文件夹内的ARM Executable Image。MCP工程文件更名为S3C44B0_ARM_template.mcp,删除对应的同名数据文件夹ARM_Executable_Image_Data,方便下次编译。
4.复制自己的工程模板文件,如果按照我这里提供的这个文件包,目录组织如下:
(来源于网上,除开自己的C件之外均为三星公版,其余文件不需修改)
../INC 所有的头文件,至少得包含一些常用的文件44binit.s ,44blib_a.s
../INC 所有的头文件,至少得包含一些常用的文件44binit.s ,44blib_a.s
../Src 所有原文件,至少得有一个C文件。如*.c(自己的c文件)
/*注意
44binit.s中开头部分INCLUDE两个文件MEMCFG.S ,Option.s用于基本设置
留意修改包含地址,让INCLUDE找到它们
INCLUDE ..\inc\option.s
INCLUDE ..\inc\memcfg.s
INCLUDE ..\inc\memcfg.s
*/
5.双击打开MCP文件,删除没用的Targets文件,把刚才复制到新模板目录下的文件加入工程
5.双击打开MCP文件,删除没用的Targets文件,把刚才复制到新模板目录下的文件加入工程
如图:
B、CodeWarrior配置信息设置:
1、DebugRel Setting里一般设置几项
1) Target Setting->Target Name : DEBUG_S3C44b0
2) Target Setting->Linker里选ARMLinker ,用于设置编译器连接
3) Target Setting->Post-Linker选ARM fromELF
用于生成FLASH烧录代码(只在RAM里运行 而不烧录则不用)
4) ARM Linker->RO BASE里添地址(重点设置)
根据板子来,这板子上RAM接的NSCS6,地址0XC000000-0XC7FFFFF;
FLASH接的NSCS0,地址0X00000-0XFFFFF
地址分配原理见44B0数据手册内存管理那章的内存分配图
2) Target Setting->Linker里选ARMLinker ,用于设置编译器连接
3) Target Setting->Post-Linker选ARM fromELF
用于生成FLASH烧录代码(只在RAM里运行 而不烧录则不用)
4) ARM Linker->RO BASE里添地址(重点设置)
根据板子来,这板子上RAM接的NSCS6,地址0XC000000-0XC7FFFFF;
FLASH接的NSCS0,地址0X00000-0XFFFFF
地址分配原理见44B0数据手册内存管理那章的内存分配图
想在RAM里调试就添0XC000000(比如0XC008000)的地址
但是注意的是地址不要添过界,比如想在RAM里调试却添0X00000000 程序可以 进入C代码 但没法运行
再有
想生成用于烧写得FLASH代码 RO地址就需要设置为0X0000000开始的 而且LAYOUT中也必须设置44BINIT.O为初始加载文件
以上FLASH测试结论经FLASHPGM测试
而且FLASHPGM不支持BIN文件 只支持INTEL得HEX文件
4)RW可以添 可以不添 一般RO解释为数据段,RW解释为数据段
有时高兴了就添上0XC100000(RAM调试时)
5)ARM Linker->OPTION->Image entry point选择0xc000000(RAM调试时)
6)ARM Linker->Layout->Object/Symbol里可以添工程起始程序44BINIT.O 注意是.O不是.S和.0(零)
也可以不添
但是注意的是地址不要添过界,比如想在RAM里调试却添0X00000000 程序可以 进入C代码 但没法运行
再有
想生成用于烧写得FLASH代码 RO地址就需要设置为0X0000000开始的 而且LAYOUT中也必须设置44BINIT.O为初始加载文件
以上FLASH测试结论经FLASHPGM测试
而且FLASHPGM不支持BIN文件 只支持INTEL得HEX文件
4)RW可以添 可以不添 一般RO解释为数据段,RW解释为数据段
有时高兴了就添上0XC100000(RAM调试时)
5)ARM Linker->OPTION->Image entry point选择0xc000000(RAM调试时)
6)ARM Linker->Layout->Object/Symbol里可以添工程起始程序44BINIT.O 注意是.O不是.S和.0(零)
也可以不添
打开工程 Settings 修改相关内容,下面是只我修改的,大家可以根据自己需要设定
target:
Target Settings;
Target Name : DEBUG_44b0
Post-linker : ARM fromELF
Access Paths: 均修改成指向工程的目录
Linker:
ARM Linker
Output
linkytpe: simpley RO Base 0x000000 RW Base 0x202000
Options
image entry point :entry
Layout
Place at beginning of image
Object/Symbol:cstartup.o
Section : reset
ARM fromELF
Output format : Plain binary
Output file name
X:\XXXX.bin
修改完毕要保存哦,
编译一下,看是否能通过,没问题了就可以关闭工程了,
最后回到D:\Program Files\ARM\ADSv1_2\Stationery\44b0_ARM_template下面
删除44b0_ARM_template_Data文件夹及里面内容
以后打开ADS应该可以看到自己的建立的模板了