【综述】多核处理器芯片

文章目录

前言

Infineon处理器

AURIX™系列

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

        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.hqwc.cn/news/662006.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

踏上R语言之旅:解锁数据世界的神秘密码(三)

多元相关与回归分析及R使用 文章目录 多元相关与回归分析及R使用一.变量间的关系分析1.两变量线性相关系数的计算2.相关系数的假设检验 二.一元线性回归分析的R计算三、回归系数的假设检验总结 一.变量间的关系分析 变量间的关系及分析方法如下&#xff1a; 1.两变量线性相关…

Android Studio 调试:快速入门指南

作为一名Android应用开发人员&#xff0c;调试是你不可或缺的技能之一。通过调试&#xff0c;你可以定位和解决各种问题&#xff0c;包括崩溃、性能问题、UI错误等。在本文中&#xff0c;我们将分享一些实用的Android调试技巧&#xff0c;帮助你提高应用开发效率。 Android St…

文心一言 VS 讯飞星火 VS chatgpt (249)-- 算法导论18.2 2题

二、请解释在什么情况下&#xff08;如果有的话&#xff09;&#xff0c;在调用 B-TREE-INSERT 的过程中&#xff0c;会执行冗余的 DISK-READ 或 DISK-WRITE 操作。&#xff08;所谓冗余的 DISK-READ &#xff0c;是指对已经在主存中的某页做 DISK-READ 。冗余的 DISK-WRITE 是…

C 408—《数据结构》图、查找、排序专题考点(含解析)

目录 Δ前言 六、图 6.1 图的基本概念 6.2 图的存储及基本操作 6.3 图的遍历 6.4 图的应用 七、查找 7.2 顺序查找和折半查找 7.3 树型查找 7.4 B树和B树 7.5 散列表 八、排序 8.2 插入排序 8.3 交换排序 8.4 选择排序 8.5 归并排序和基数排序 8.6 各种内部排序算法的比较及…

CGAL 点云数据生成DSM、DTM、等高线和数据分类

原文链接 CGAL 点云数据生成DSM、DTM、等高线和数据分类 - 知乎 在GIS应用软件中使用的许多传感器(如激光雷达)都会产生密集的点云。这类应用软件通常利用更高级的数据结构&#xff1a;如&#xff1a;不规则三角格网 (TIN)是生成数字高程模型 (DEM) 的基础&#xff0c;也可以利…

回溯法——(1)装载问题(C语言讲解)

目录 一、装载问题 1.问题概括&#xff1a; 2.解决方案&#xff08;思路&#xff09;&#xff1a; 3.图片讲解&#xff08;超详细&#xff09;&#xff1a; 4.代码分析&#xff1a; 二、算法改进&#xff1a;引入上界函数 1.问题概念&#xff1a; 2.图片讲解&#xff1a…

Sentinel 控制台学习

引言 上篇文章已经讲过 SpringCloud Sentinel集成到微服务项目中&#xff0c;接下来我们继续学习怎么使用sentinel控制台对微服务进行限流&#xff0c;熔断&#xff0c;降级等一系列操作。 控制台 接下来我们单独讲解每一个菜单按钮 实时监控 实时监控&#xff1a; 可以看到…

openlayer 使用ol-ext插件实现凸显区域

使用ol-ext插件实现凸显多变形 效果如图 1、创建openlayer var map; var view; var tileLayer, source, vector;function init() {tileLayer new ol.layer.Tile({source: new ol.source.TileArcGISRest({url: "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineStr…

Mysql-黑马

Mysql-黑马 编写规范&#xff1a;## 一级1. 二级三级 1.Mysql概述 数据库概念mysql数据仓库 cmd启动和停止 net start mysql180 net stop mysql180备注&#xff1a;其中的mysql180是服务名 客户端连接 远程连接数据仓库 -h 主机号 -P端口号 mysql [-h 127.0.0.1] [-P 33…

Nginx负载均衡主备模式

1. 背景 使用Nginx代理后端服务&#xff0c;有时候某些服务是不能使用多台负载均衡&#xff0c;但又想保障高可用&#xff0c;所以采用主备模式&#xff0c;记录如下&#xff1a; 2. 参考 nginx 负载均衡Nginx-负载均衡-后端状态max_conns、down、backup、max_fails、fail_t…

【数据结构】第四讲:双向链表

个人主页&#xff1a;深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数据结构与算法 循环链表这个轮回的思想很有意思。它强调了不管你今生是贫是富&#xff0c;如果持续行善积德&#xff0c;下辈子就会好过&#xff0c;反之就会遭到报应。 就像每个人的人生一样&#xff0c;欲…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…