【综述】多核处理器芯片

embedded/2024/9/23 14:31:14/

文章目录

前言

Infineon处理器

AURIX™系列

TC399XX-256F300S-toc" style="margin-left:40px;">TC399XX-256F300S

典型应用

开发工具

参考资料


前言

        见《【综述】DSP处理器芯片》

Infineon处理器

        AURIX™系列,基于TriCore内核,用于汽车和工业领域。

        XMC™系列,基于ARM® Cortex®-M内核,用于功率转换、工厂自动化、楼宇自控、交通和家用电器等领域。

        TRAVEO™ T2G系列,基于ARM® Cortex®内核,用于媒体和互联。

        PSoC™系列,基于ARM® Cortex®内核,属于嵌入式功率IC(片上系统)。

        传统产品 (C500-, C166-, XC166-, AUDO1 系列),多为8 bit和16 bit,用于细分的特定领域。

AURIX™系列

        AURIX™系列是AUDO™MAX的延续,其TriCore™ 内核是32 位处理器,它的架构是将微控制器的实时功能、DSP的计算算力以及RISC读写存储的高性能/价格优势结合在一个核中,非常适合安全关键型应用。

        TC2xx,第一代AURIX™,多达3个TriCore1.665nm工艺,最高频率300MHz。

        TC3xx,第二代AURIX™,多达6个TriCore1.6240nm工艺,频率300MHz。

        TC4xx(未量产),第三代AURIX™,多达6个TriCore1.8,28nm工艺(猜测),频率500MHz。

TC399XX-256F300S" style="margin-left:0;text-align:justify;">TC399XX-256F300S

        TC399XX-256F300S是第二代AURIX™中性能最强悍的一款芯片,名称中各个字段的含义如下:

        该芯片采用40nm工艺,频率300MHz,32bit处理器,6核(4 lock-stepped cores and 2 non lock-stepped cores),RAM 6.9M,ROM 16M,1 Gbit Ethernet,12 CAN FD。它的内部架构如下图所示:

典型应用

        TC399XX-256F300S拥有丰富的外设资源、强大的数据处理能力和很高的安全可靠性,在ADAS域控、传感器融合、自动驾驶和机器学习上面都可以应用,最能体现其各方面性能的应用是在多旋翼无人机上的应用,示例如下:

        无人机的多传感器输入融合,多电机驱动,和安全冗余,使用TC399或TC37x的多核架构,单片解决自动飞行、电机控制、雷达传感器、BMS和功率转换等,BOM成本和性能绝佳。示例如下:

        部分代码示例如下:

#include "Ifx_Types.h"
#include "IfxCpu.h"
#include "IfxAsclin_reg.h"
#include "IfxPort_reg.h"
#include "Scu/Std/IfxScuWdt.h"
#include "Port/Std/IfxPort.h"
#include "Test_Print.h"
#include "stdarg.h"#define USE_ASCLIN1 (STD_OFF)
#define ASCLIN0_BASE          (0xF0000600U)
#define ASCLIN1_BASE          (0xF0000700U)
#define ASCLIN_FLAGSCLEAR_MASK (0xFFFFFffFU)/* Macro for Unused parameters*/
#define UNUSED_PARAMETER(VariableName)          {if((VariableName) != 0U)\{/* Do Nothing */}}
static volatile Ifx_ASCLIN *psASCLIN0;#ifdef _TASKING_C_TRICORE_
#if (_TASKING_C_TRICORE_ == 1U)
#pragma section farbss="Shared.DEFAULT_RAM_8BIT"
#endif /* #if (_TASKING_C_TRICORE_ == 1U) */
#elif defined _GNU_C_TRICORE_
#if (_GNU_C_TRICORE_ == 1U)
#pragma section ".data.Shared.DEFAULT_RAM_8BIT" aw 1
#endif /* #if (_GNU_C_TRICORE_ == 1U) */
#elif defined _DIABDATA_C_TRICORE_
#if (_DIABDATA_C_TRICORE_ == 1U)
#pragma section DATA ".data.Shared.DEFAULT_RAM_8BIT" ".bss.Shared.DEFAULT_RAM_8BIT" far-absolute RW
#endif /* #if (_DIABDATA_C_TRICORE_ == 1U) */
#endifchar recieve_data[6] = {0};void InitSCI(void);
void print_f(const char *p_frm, ...);
void getline(char *p_line, uint32 n_max);void erase_line(char *p_line, uint32 *pos)
{uint32 cnt;for(cnt=0;cnt<*pos;cnt++){*p_line = 0;p_line++;put_char(BACKSPACE);put_char(' ');put_char(BACKSPACE);}*pos = 0;
}inline  void delay(void)
{    volatile int i;   for (i=0;i<100;i++);
}void put_buffer(char *p_line, uint32 n_max,const char *p_str,uint32 *pos)
{
/*  uint32 cnt;cnt = *pos; */while(*pos < n_max && *p_str !=0){*p_line = *p_str;put_char(*p_str);p_line++;p_str++;(*pos)++;}/* *pos = cnt; */
}int getlineWithPos(char *p_line, uint32 n_max, uint32 *pos)
{uint32 w_cnt;uint32 ret_val;int w_key;w_cnt = *pos;p_line += *pos;ret_val = 0;do{w_key = get_ch();if (w_key == -1){ret_val = 0;}else{if (w_key == CR || w_key == LF){*p_line = 0;ret_val = CR;}else{if (w_key == TAB){*p_line = 0; /* set the value to 0 so that the first part of the string can be analyzed */ret_val = TAB;}else{if (w_key == BACKSPACE || w_key == DEL){/* backspace or delete */if (w_cnt != 0){/* delete character */w_cnt--;p_line--;put_char(BACKSPACE);put_char(' '); put_char(BACKSPACE);}}else{if ((w_key != CNTLQ) && (w_key != CNTLS)){/* normal character*/{/* store/reflect character */*p_line = (char)w_key;put_char ((char)w_key);p_line++;w_cnt++;if (w_cnt == n_max)                  {/* limit reached */(void)beep();/* delete all characters */while (w_cnt != 0){w_cnt--;p_line--;put_char(BACKSPACE);put_char(' ');put_char(BACKSPACE);}}}}}}}}}while ((w_key != CR) && (w_key != LF) && (w_key != BACKSPACE) && \(w_key != DEL) && (w_key != TAB));*pos = w_cnt;return(ret_val);
}void buf_to_screen(char *text_buf)
/*~-*/
{/*~L*/while (*text_buf != 0)/*~-*/{/*~T*//* send character */put_char(*text_buf);text_buf++;/*~-*/}/*~E*/
/*~-*/
}int core0_main (void)
{IfxCpu_enableInterrupts();/** !!WATCHDOG0 AND SAFETY WATCHDOG ARE DISABLED HERE!!* Enable the watchdog in the demo if it is required and also service the watchdog periodically* */IfxScuWdt_disableCpuWatchdog (IfxScuWdt_getCpuWatchdogPassword ());IfxScuWdt_disableSafetyWatchdog (IfxScuWdt_getSafetyWatchdogPassword ());Test_InitPrint();IfxPort_setPinMode(&MODULE_P14, 0, IfxPort_Mode_outputPushPullAlt2);print_f("abcdef"); //--- for uart test//getline(recieve_data, 6); //--- for uart testwhile (1){}return (1);
}

开发工具

        AURIX™系列芯片的软件架构底层库工具链,示例如下:

        软件开发IDE HighTec示例如下:

参考资料

        AURIX™ TC39x User Manual.pdf


http://www.ppmy.cn/embedded/27980.html

相关文章

(三十三)第 5 章 数组和广义表(广义表的头尾链表存储表示实现)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrc…

unix 命令总结

一、unix 命令总结 1.文件传输 rz/sz to transfer files sz filename // remote host 下载到本地 rz // 本地上传得到host 2.shell 后台运行&#xff0c;进程独立存在&#xff0c;不属于当前终端的子进程 https://www.cnblogs.com/chinas/p/7130378.html 3. 执行.…

【html知识】用html写一个简单的个人网页

介绍&#xff1a; 这是一个HTML和CSS的代码段&#xff0c;它构建了一个基本的个人网页布局。以下是该代码的详细介绍&#xff1a; HTML部分&#xff1a; 文档类型与基础结构&#xff1a;<!DOCTYPE html> 声明了文档类型为HTML5。<html lang"en"> 定义…

Outlook大附件插件 有效解决附件大小限制问题

很多企业都是使用Outlook来进行邮件的收发&#xff0c;可是由于附件大小有限&#xff0c;导致很多大文件发不出去&#xff0c;就会产生Outlook大附件插件这种业务需求。 邮件系统在发送大文件时面临的限制问题主要如下&#xff1a; 1、附件大小限制&#xff1a;大多数邮件服务…

vscode使用EditorConfig进行项目配置

安装 EditorConfig for VS Code 插件&#xff0c;该插件会自动读取项目的 .editorconfig 文件&#xff0c;对项目进行配置。 该文件支持属性&#xff1a; indent_style&#xff1a;缩进风格&#xff0c;可配置项&#xff1a;tab&#xff0c;spaceindent_size&#xff1a;缩进…

lxml 在 Windows 7上安装无法安装怎么办?

lxml 在 Windows 7上安装无法安装怎么办&#xff1f; 要在Windows 7上安装lxml&#xff0c;您可以按照以下步骤进行操作&#xff1a; 安装Python&#xff1a; 如果您的计算机尚未安装Python&#xff0c;请先安装Python。您可以从Python官方网站下载Windows安装程序&#xff0c…

分类规则挖掘(二)

目录 三、决策树分类方法&#xff08;一&#xff09;决策树生成框架&#xff08;二&#xff09;ID3分类方法&#xff08;三&#xff09;决策树的剪枝&#xff08;四&#xff09;C4.5算法 三、决策树分类方法 决策树 (Decision Tree) 是从一组无次序、无规则&#xff0c;但有类别…

【Qt之·路径获取】

系列文章目录 文章目录 前言一、使用相对路径1.1 相对路径1.2 绝对路径1.3 QDir类1.4 QFileDialog对话框 二、示例2.1 示例一 总结 前言 在进行Qt开发时&#xff0c;经常需要获取文件的路径&#xff0c;如图片、音频、配置文件等。路径的获取可以通过直接指定绝对路径或者使用相…