CCS中如何生成LIB文件,并在另外CCS项目中引用LIB文件

       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 的提示。
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值