Tasking开发环境的使用和TriCore芯片C和汇编之间相互调用的一些问题
Posted 东东7_7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tasking开发环境的使用和TriCore芯片C和汇编之间相互调用的一些问题相关的知识,希望对你有一定的参考价值。
前言
Tasking Tricore是一款集成编辑,编译,调试,仿真于一体的集成开发环境,他支持英飞凌32Bit行业领先级芯片,包含所有的TriCore和Aurix芯片,这些芯片主要用于汽车和工业。它支持C,C++,汇编编程,具有一个多核连接器(linker)
工程的创建
通过new一个project来创建一个新的工程,对他进行名字和芯片的选择,我们就会得到一个可以打印hellow world的工程
使用时候遇到的一些问题
具体的使用方法就不多说了,主要想说一下我在使用中遇到的一些问题
找不到头文件和C文件
我们在做一个工程的文件的时候,通常喜欢将他们放到三个文件夹中,
但是在taking环境中就会出现找不到文件的报错问题,如下图
我们通常使用的我得到的方法是,选用最后一个选项进入后
在setting中加入路径即可解决这一个问题,方法路径如下图所示
怎么导入工程?
在tasking环境中,我们通常使用的不为open选项,而是import选项来导入
进入界面选择
进入后选择已经存在的工作站就可以导入了
怎么在工程中的C中调用汇编语言
首先,我们必须在调用的头文件中进行声明,就是我们常用的.h文件,这个是我的头文件
#ifndef FUNC_H_
#define FUNC_H_
#include "cstart.h"
#include <stdio.h>
extern int main(void);
extern int Test(void);
extern short qwe(int, int);
extern void demo (void);
#endif /* FUNC_H_ */
其中定义了几个普通函数和汇编函数
但我们发现在C中调用汇编函数还是不可以,这时候我们需要将他们声明在code段,通过上面的命令就可以达到
.sdecl ".text.asd",CODE
.sect ".text.asd"
怎么在汇编中调用C函数
这个需要在汇编文件中声明外界调用,才可以达到目标,方法如下
EXTERN Test
.EXTERN demo
下面附上所有的源码
汇编文件
.EXTERN Test
.EXTERN demo
.sdecl ".text.asd",CODE
.sect ".text.asd"
.global asd
asd:
movh d15, #0x1019
addi d15, d15, #0x2006
st.w [a4], d15
mov.a a2, d5
call Test
call demo
mov d2, #12
ret
.end
C文件
#include "func.h"
void demo (void)
{
printf ("happy");
}
main函数
#include <stdio.h>
#include "func.h"
int main(void)
{
printf( "Hello world\\n" );
__asm("mov.a a2, d2");
__asm("mov.u d2, #12");
Test();
qwe(0xA00212CC, 0xFFFF);
//__asm("call Test");
Test();
printf ("hello world,hi world");
//__asm("call qwe");
//qwe();
printf ("nihao\\n");
demo ();
}
以上是关于Tasking开发环境的使用和TriCore芯片C和汇编之间相互调用的一些问题的主要内容,如果未能解决你的问题,请参考以下文章