本来按计划在这第三系列,我是想跟大家一块儿分析和整理下K60的启动代码部分的。可是后来想来想去,觉着既然上一篇写了飞思卡尔的官方例程的编程结构,那么这次就一鼓作气索性先把自己的工程风格建立起来,而且这样建立好了工程之后再分析其启动代码也不显得突兀,容易接受和理解,呵呵(咳咳,有点当老师的赶脚了)。所以这篇如果具体来说,应该叫做“从零建立属于自己风格的基于IAR的K60工程”。
既然说是自己风格,可能就有些偏主观色彩了,呵呵,希望高手大侠们不要拍砖,主要是拿出来希望可以给入门级的同志们一点借鉴和经验,当然也希望跟高手们交流下,有错误的地方期待得到你们的批评指正(这点很重要的)。由于这篇内容可能会有点多甚至有点乱,所以下面就不再废话了,直接上图了哈(都快口头禅了,晕)~
呵呵,上图就是我自己的一种风格,其中Library文件组为自己做的库,包括了CPU文件组(K60的内核部分),Drivers文件组(K60功能模块驱动),Headers文件组(部分系统头文件)和StartUp文件组(K60的启动代码文件);Link文件组为K60的配置模式文件组,icf文件可以到网上搜一搜它的作用,Project文件组为一个新项目工程的文件组,在该文件组新建功能C文件,Output文件组为链接输出文件组,,out文件用于下载调试。
每个人可能都有一种编程风格,只不过如果可以给大家一点启发或者借鉴则足已。整体的工程架构我已经晒出来了(呵呵,我也潮一把,用一用“晒”这个字),也就是本篇的任务和最终的目标,下面将分几个步骤层层剥解,如果把它看成牛,那希望我们能像庖丁一样游刃有余,开始吧:(可能有的步骤较粗略,没办法,篇幅所限,注重领会精神,呵呵)
(1)目前大多数开发环境都是基于项目工程(project)来管理的,但是每个project又必须建立在工作区内,且一个工作区允许多个项目的建立,如果第一次建立一个project则必须要先建立工作区。好了,概念介绍完了,图来了(前提软件已经打开了,呵呵):
图1.1 新建工作区
图1.2 新建工程
图1.3 新建空工程
图1.4 已经建立好的空工程
(2)建立相应的工作组,如前面整体风格所示,主要建立Library文件组(自己做的库),Link文件组(该工程的配置文件组),Project文件组(项目文件组)和out文件组(输出文件组)。
图2.1 在工作区右键选择添加工作组
图2.2 建立好的文件组架构(空的)
(3)给文件组添加相应的C文件,这部分涉及到移植官方例程的文件到该工程。
图3.1 所建工程的根目录结构,就是把所需的c和h文件拷贝到上图和下图所示相应的文件夹下
图3.2 config files下文件结构,为icf文件,配置K60调试方式内存分配等
图3.3 Library下文件结构
图3.4 启动代码文件目录(下篇会仔细分析)
图3.5 K60内核部分文件目录
图3.6 drivers下的文件目录,目前只添加了这几个功能模块的文件,C文件和相应的头文件在相应文件夹里面,这里面篇幅所限,不再细贴图了,呵呵
图3.7 系统所需头文件的目录文件,看看,基本上所需的重要的头文件都放在该文件夹里除了具体功能的头文件,像arm_cm4.h,vectors.h等等
图3.8 该目录下放置实际工程文件,这里只新建了test.c文件,以后随着工程的深入,会不断放置新的文件
图3.9 具体添加相应文件到相应的文件组的操作,注意了,文件组只是起到了组织文件的作用,跟刚看到的同样文件名的文件夹不是一个概念,也就是说,这文件组名可以不与相应的文件夹同名,但是可以把相应文件夹下的c文件添加到相应的文件组下,ok?呵呵
(4)相应的文件添加完毕后,下面就涉及到工程的设置问题了,这部分是重中之重,注意了。
图4.1 右键工程名,选择Options,进入工程设置选项卡,也可以菜单选项Project->Options进入
在General Options里选好内核,其他部分默认即可,然后进入C/C++Complier选项卡
这个很重要,如果要自己建立或者移植官方的例程到自己的工程文件夹下,这个头文件包含目录一定要添加,其中$PROJ_DIR$表示路径在当前工程文件夹中也就是工程文件.ewp文件所在的目录,“\..”表示返回上一级文件夹,“\文件夹名”表示进入这个文件夹。这是一种相对路径的用法,方便以后移植,这个灰常重要,这个细说要很多东西,所以建议到网上搜一搜该用法。
这个是Output converter选项卡,选中输出motorola文件,这个是可选的,其实也可不选
这个是下载调试选项,这里需要注意一下,呵呵,如果用飞思卡尔官方的tower系统,这里驱动器需选择PE micro以便使用板上自带的OSJTAG,不过我因为用的是J-Link,所以。。。咳咳,是吧,懂的,呵呵,然后Run to可以不点,这样的话调试初始运行会首先进入到启动代码,便于我们分步调试,这个以后会详细介绍。
由于我上个步骤选择了J-Link调试工具,所以这步进入该选项卡设置,其实默认即可,呵呵。
(5)设置配置模式
可以看到系统默认的两种配置模式,这里不需要它们了,逐个点Remove,然后分别新建Flash_512K和RAM_128K,然后确认,然后就可以看到配置模式里多出了两个选项即Flash_512K和RAM_128K,这里我选择RAM128K
当然仅仅这样不算完,我们还需要给其配置相应的icf文件,这下想到上面提到的那个config files文件夹了吧也即是上图所示Link文件组里的文件,呵呵,所以接下来我们选中工程然后右键进入Options选项卡的Linker选项
在这里选中Override default,然后选择好icf所在的文件路径,其他选项卡默认即可,接下来同样设置好Flash_512k的icf文件路径,这样就有了两中配置模式,这里我默认选择RAM_128K模式。
这样属于自己风格的IAR工程就建立好了,图有些多而且有点乱,见谅。因为篇幅所限,可能有些部分一带而过,这些以后用到了可能会再详细介绍,呵呵,未完待续~