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和汇编之间相互调用的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

Tasking开发环境的使用和TriCore芯片C和汇编之间相互调用的一些问题

tricore-ld APA

tricore-ld APA

飞思卡尔芯片使用开发工具

RT-Thread商业支持车规级多核安全处理器

RT-Thread商业支持车规级多核安全处理器