【综述】多核处理器芯片

news2024/11/18 1:24:58

文章目录

前言

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) */
#endif


char 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 test

    while (1)
    {

    }
    return (1);
}

开发工具

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

        软件开发IDE HighTec示例如下:

参考资料

        AURIX™ TC39x User Manual.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 Evan_song1234 开发,MoonSpaceCat 增补的2D 我的世界,增加双缓冲实现 cmd控制台窗口或 Powershell 流畅运行

游戏玩法&#xff1a; awsd移动 1234567890 各有功能 t 是命令行 q 是刷新 e 是重开 z 是挖 其他还没来及探索代码 代码来源 C我的世界2D控制台版_cminecraft-CSDN博客 其中解决颜色被双缓冲刷新没的方法 参考于自己的博客 用ReadConsoleOutput 解决双缓冲ReadConsol…

短视频素材哪个App最好?短视频素材哪里有免费的?

在数字媒体的黄金时代&#xff0c;富有创意的视频内容已成为吸引观众的关键。高质量的视频素材不仅能增强视觉效果&#xff0c;还能提升整体叙述的力度。以下列出了一系列全球顶尖的视频素材提供网站&#xff0c;它们将为你的广告制作、社交媒体或任何视频项目提供极具影响力的…

Python制作精美表格——plottable

plottable是一个基础matplotlib的绘制精美图形表格的库。他将表格内容美化并转为一张图片 使用前提&#xff1a; 1、原始数据数量较少&#xff0c;可以一屏展示。这个库会将原始表格的所有数据都放到一个图片里&#xff0c;数据太多展示效果较差。 2、pandas读取时会将index列…

vue3步骤条带边框点击切换高亮

如果是div使用clip-path: polygon(0% 0%, 92% 0%, 100% 50%, 92% 100%, 0% 100%, 8% 50%);进行裁剪加边框没实现成功。目前这个使用svg完成带边框的。 形状可自行更改path 标签里的 :d“[num ! 1 ? ‘M 0 0 L 160 0 L 176 18 L 160 38 L 0 38 L 15.5 18 Z’ : ‘M 0,0 L 160,0…

飞腾D2000+X100 TYPE6全国产核心板

飞腾D2000X100 TYPE6核心板 产品概述 飞腾D2000X100 TYPE6核心板为增强型自主控制器核心板&#xff0c;其核心芯片CPU采用飞腾D2000/8核工业版CPU、飞腾桥片X100、双通道DDR4L插槽、PHY芯片等。 产品特点 l 基于飞腾D2000X100桥片 l 丰富的PCIE扩展资源&#xff0c;一路PCIE…

Java设计模式 _结构型模式_过滤器模式

一、过滤器模式 1、过滤器模式 过滤器模式&#xff08;Filter Pattern&#xff09;是这一种结构型设计模式。过滤器&#xff0c;顾名思义&#xff0c;就是对一组数据进行过滤&#xff0c;从而最终获取到我们预期的数据。 2、实现思路 &#xff08;1&#xff09;、定义过滤器的…

图搜索算法详解与示例代码

在计算机科学领域&#xff0c;图搜索算法是一类用于在图数据结构中查找特定节点或路径的算法。图搜索算法在许多领域都有着广泛的应用&#xff0c;包括网络路由、社交网络分析、游戏开发等。本文将详细介绍几种常见的图搜索算法&#xff0c;包括深度优先搜索&#xff08;DFS&am…

数据结构四:线性表之带头结点的单向循环链表的设计

前面两篇介绍了线性表的顺序和链式存储结构&#xff0c;其中链式存储结构为单向链表&#xff08;即一个方向的有限长度、不循环的链表&#xff09;&#xff0c;对于单链表&#xff0c;由于每个节点只存储了向后的结点的地址&#xff0c;到了尾巴结点就停止了向后链的操作。也就…

LeetCode 98.验证二叉搜索树

题目描述 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#xff…

服务端不 listen 可以创建 tcp 连接吗

这个问题有三类答案。 上来就撸 linux kernel 源码&#xff0c;折腾半天&#xff0c;哦&#xff0c;终于在 tcp_rcv_state_process 里找到了 tcp_rcv_synsent_state_process 调用&#xff0c;后者包含&#xff1a; if (th->syn) {/* We see SYN without ACK. It is attemp…

如何 “ 一劳永逸 ” 去掉引用网址的小尾巴

引用文章的链接时会出现很长冗余信息&#xff0c;删&#xff0c;删&#xff0c;删……&#xff0c;直到从平流层删到地平线 示例链接 使用 Neat URL&#xff08;支持 google 系、Firefox&#xff09;扩展中的【拦截参数】可以去除的这类百无聊赖的小尾巴。 安装后&#xff…

信创 | 信创中间件全览:核心种类与关键组件!

信创产业中的中间件主要包括基础中间件和广义中间件两大类。基础中间件包括交易中间件、消息中间件、应用服务器中间件等&#xff0c;而广义中间件则涵盖了更多种类的中间件产品&#xff0c;以适应不断变化的技术需求。 一、常用的信创中间件包含&#xff1a; 交易中间件&…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践八报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践八报告 1.实践内容 动手实践任务一 对提供的rada恶意代码样本&#xff0c;进行文件类型识别&#xff0c;脱壳与字符串提取&#xff0c;以获得rada恶意代码的编写作者&#xff0c;具体操作如下&#xff1a; &#xff08;1&am…

Eclipse MAT工具分析内存溢出

1、通过dominator_tree可以查看哪些对象大 可以看到com.codex.terry.entity.User对象有57万个 2、打开thread_overview查看内存溢出的代码

PyVista 3D数据可视化 Python 库 简介 含源码

Pyvista是一个用于科学可视化和分析的Python库 &#xff1b;我认为它适合做一些网格数据的处理&#xff1b; 它封装了VTK&#xff08;Visualization Toolkit&#xff09;之上&#xff0c;提供了一些高级接口&#xff0c; 3D数据可视化变得更加简单和易用。 1.安装 pyvista&…

表格中斜线的处理

此处的斜线,不是用表格写的,但是也适用于表格,只是需要更改表格的样式,可以 按照如下处理,即可 呈现的效果:如图所示 template部分: <div class"header_detail custom"><div class"right">节次</div><div class"left">…

YARN详解

YARN 简介 YARN 是Yet Another Resource Negotiator的缩写。 YARN是第二代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的;通俗讲就是资源管理器. YARN核心思想: 将 MR1 中资源管理和作业调度两个功能分…

Javascript:Web APIs(一)

Javascript基础&#xff08;一&#xff09; Javascript基础&#xff08;二&#xff09; Javascript基础&#xff08;三&#xff09; Javascript基础已经结束&#xff0c;接下来我们将进入到整个Web API学习中&#xff0c;在此&#xff0c;我们将学习DOM操作&#xff0c;基本的…

Linux内核之页面映射到虚拟地址:insert_page用法实例(六十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

卫星通信现状与展望三 -- 6G

作者:私语茶馆 6G星地一体远景规划 中国信通院《6G总体远景与潜在关键技术白皮书》指出6G将实现地面网络、不同轨道高度上 的卫星(高中低轨卫星)以及不同空域飞行器等融合而成全新的移动信息网络,通过地面网络实现城市热点常态化覆盖,利用天基、空基网络实现偏远地…