Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1827724
  • 博文数量: 195
  • 博客积分: 4227
  • 博客等级: 上校
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-04 10:39
文章分类

全部博文(195)

文章存档

2013年(1)

2012年(26)

2011年(168)

分类: C/C++

2012-05-29 20:40:30

 CCS项目建立时,默认是生成.OUT可执行文件。当想把一个实现的代码较多的功能加入到一个项目中,把这个功能做成一个LIB文件,然后引入到项目中直接调用,是最方便和简洁的。


图1

 

         编译之前要设置编译选项,设置的依据是要引入的项目编译选项。下图2是test_programmer的编译选择设置。主要要注意字节顺序(Endian),ABI。



图2

 

          对于现有的DDR项目,将项目的中源文件,头文件和库文件,都复制到新建的LIB工程下,并在CCS中添加进去。添加完成之后要看一下,是否每个函数的实 现都包含在了这个LIB工程中。因为有些函数的是定义在头文件中的,而其实现是在对应的源文件中;如果调用该函数,如果只添加了该头文件,而没有添加对应 的源文件,在LIB工程中编译是没有错误的,但是引用该库时编译会报错。例如DDR项目中main.c中的EVMDM355_init()函数,定义在 evmdm355.h头文件中,加入了该头文件编译会通过。其实现是在evmdm355.c中,在这个文件中又调用了evmdm355_i2c.h的函 数,所以必须把evmdm355.c,evmdm355_i2c.h和evmdm355_i2c.c这个三个文件也加入进来,生成的.lib文件,引用时 才不会报错。

        将DDR项目中的main.c文件修改,修改其中main函数名,改为DDRMain(因为要调用main函数,而一个项目只能有一个main函数)。编 译成库文件DDR.lib。在test_programmer中加入DDR.lib库文件,再调用DDRMain函数,即测试模块的入口。

测试发现,该模块可以执行,并完成对DDR的测试,如下图3所示。但随后出现“File not found”的问题,main.c没有找到。如下图4所示。

 


图3

 


图4

 

         在main.c中打印出“***ALL Tests Passed***”后,有条语句SW_BREAKPOINT。其定义为#defineSW_BREAKPOINT    asm( " .long0xE1200070" ); 注释为Software Breakpoint code. Uses inlineassembly command  

 

        可以看出SW_BREAKPOINT是一个中断点,程序运行到这里会暂停。将SW_BREAKPOINT注释掉,再次编译成LIB文件,加入到test_programmer中,再次实验,测试完成并且没有出现File not found 的提示。
阅读(8803) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~