tag 标签: 实时性

相关帖子
相关博文
  • 热度 3
    2024-1-17 14:56
    469 次阅读|
    0 个评论
    如果要选出飞凌嵌入式最热门的几款产品,FET3568-C系列核心板一定榜上有名。这款高性价比的全能型核心板上市两年来已赢得了数千家客户的青睐。飞凌嵌入式也在不断对它进行升级——从“配置新增”到“100%国产化认证”再到“新系统适配”,以满足更多行业客户的需求。 近期, 飞凌嵌入式FET3568-C系列核心板再度迎来新升级——支持“AMP”双系统 。 1、什么是“AMP” AMP(非对称多处理)简单来说就是:多核处理器的每个核之间相互隔离,可以相对独立地运行不同的操作系统或裸机程序。这种运行模式比较适合高实时性的应用。 2、FET3568-C核心板AMP 飞凌嵌入式FET3568-C核心板搭载的RK3568处理器采用四核Cortex-A55架构,从架构上看属于“同构多核架构”。 RK3568的AMP SDK与Linux SDK相比,区别在于Linux SDK中使用的是SMP(对称多处理)模式,即只运行一个Linux操作系统,在该操作系统中管理全部四个核;而 AMP SDK使用AMP的模式,四个核心中的三个核心共同运行一个Linux操作系统,另一个核心单独运行裸机程序 。 由于高实时性任务是由运行裸机程序的核心专门处理的,所以这种运行模式可以很好地满足如电力互联网、电网继电保护、电力系统安全控制、工业自动化等领域的高实时性需求。 3、更低成本,更高实时性,更具优势 (1) 更低成本: 为了解决Linux系统主控实时性不足的问题,在传统应用中通常会采取外挂单片机的方式专门执行高实时性的程序。 而采用AMP系统就可以舍弃掉外置的单片机,在FET3568-C核心板上,可以将四个A55核中的一个核心分离出来作为实时核单独运行RT-Thread或裸机程序——只用一颗芯片就能够完成所有的工作,降低了硬件成本。 (2) 高实时性: 由于Linux系统实时性较低,所以无法用来执行对实时性要求高的任务。而裸机程序或者实时操作系统的实时性远高于Linux系统,同时也得益于FET3568-C核心板最高2.0GHz的高主频,运行实时操作系统的A55核也可以拥有很强的实时性。 4、核间通信 与其它多核异构架构的处理器相同,AMP也使用共享内存的方式在A核(Linux)与实时核(裸机或实时操作系统)之间进行数据传输。 通过物理内存DDR分配,将硬件层分为了两部分:TXVring Buffer(发送虚拟环状缓冲区)和RXVring Buffer(接收虚拟环状缓冲区);其中实时核从TXVring区发送数据,从RXVring区读取接收数据,A核反之。 5、AMP使用示例 目前飞凌嵌入式FET568-C核心板已提供GPIO、UART、SPI接口的使用示例,使用RPMSG进行核间通信。其它接口还在适配中,之后会陆续开放。裸机程序可以在提供的工具中使用JLINK仿真调试。 下面简要介绍一下裸机程序中UART接口的使用示例: (1) 硬件连接 本示例使用的是UART5,使用跳线帽将OK3568-C开发板上的TX5与RX5短接。 (2) 设备树配置 为了防止Linux占用UART5的资源导致实时核无法使用UART5,需要先在设备树上的rockchip_amp节点添加对UART5的资源保护,包括时钟和pinctrl。 clocks = , , pinctrl-names = “default”, ”uart5”; pinctrl-1 = ; (3) 裸机程序的配置 UART接口使用介绍: // 管脚配置:选择UART5的收发管脚。/* uart5 tx */ HAL_PINCTRL_SetIOMUX(GPIO_BANK3, GPIO_PIN_C2, PIN_CONFIG_MUX_FUNC4); /* uart5 rx */ HAL_PINCTRL_SetIOMUX(GPIO_BANK3, GPIO_PIN_C3, PIN_CONFIG_MUX_FUNC4); /* uart5 m1 */ HAL_PINCTRL_IOFuncSelForUART5(IOFUNC_SEL_M1); // 通讯配置:波特率为115200,无校验,数据位8位,无流控,停止位1位。 /* uart5 config */ struct HAL_UART_CONFIG demo_uart_config = { .baudRate = UART_BR_115200, // 波特率 .dataBit = UART_DATA_8B, // 数据位 .stopBit = UART_ONE_STOPBIT, // 停止位 .parity = UART_PARITY_DISABLE, // 校验 }; HAL_UART_Init(&g_uart5Dev, &demo_uart_config); 中断使能:配置并使能接收超时中断。 HAL_IRQ_HANDLER_SetIRQHandler(UART5_IRQn, uart5_isr, NULL); HAL_GIC_Enable(UART5_IRQn); HAL_UART_EnableIrq(g_uart5Dev.pReg, UART_IER_RDI); // 执行流程 // 初始化完成后,会先发送一串数据。如果接收到数据,触发中断,然后将接收的数据从调试串口发送出来。 // 中断回调函数 int iir = 0; iir = HAL_UART_GetIrqID(g_uart5Dev.pReg); if (iir & UART_IIR_RX_TIMEOUT) { do { ret = HAL_UART_SerialIn(g_uart5Dev.pReg, &c, 1); if (ret) printf("%02x ", c); } while (ret); printf(“\n”); } 示例使用: 根据OK3568-C开发板产品资料中提供的手册,在裸机程序的main函数中调用我们编写好的使用例程。 实验现象: 按照手册编译烧写完程序后,打开串口调试助手,打开对应串口,可以看到OK3568-C开发板开机后程序发出的数据。 在串口调试助手,输入任何数据并发送,触发接收中断,从实时核调试串口(uart4)就可以看到输入的数据了。
  • 热度 23
    2013-5-2 15:01
    1938 次阅读|
    7 个评论
      总结2011年的三篇文字,形成本文。(不好意思,因为此文章早前在新浪本人的blog, blog.sina.com.cn/blesslm 发表过,新浪阻止了文中的图片,于是找到我本地的图片,上传为附件了,可以在附件里看到两张)   什么是实时性?   从许多角度都可以去理解实时性。而我们可以从数字世界的基础来看。将模拟信号数字化之后,才比较方便地用各种数字化的处理方法来做数字信号序列进行处理。将模拟信号数字化的第一步就是采样。所谓采样,使得信号变得离散,有了间隙。这些间隙做什么,就是用来处理信号的。而实时性的归根结底,就是要在两个信号的间隙处理完前面那个信号。比如说,语音信号,每20ms有160个采样值,作为一帧来处理,则必须在下一个20ms的帧收完之前处理完前一帧的信息,方为实时处理。平均下来,就是在125us的间隙内要处理完一个采样值。   通信系统中的实时性,一个是如上述。例如GSM的信号处理,一帧4.615ms内处理完一帧的数据,由于数据并不占满所有的时间片,所以看起来实时性要求是低于每个样值的处理时间在一个采样周期内。但最高的EDGE的要求,例如下行8个接收时隙都要处理时,又回归到了前述的点上。另外,通信是双方的事情。于是乎,在规定的时间内处理完相关信息,并反馈相关的信息,则是一个双向的实时性问题了。 大概去年这个时候,对于GSM软件系统的实时性问题,我进行了一个分析。并画了一张图,加上一些文字说明。visio图片要弄上来,好像比较费劲。其中文字的部分,我今天贴出来跟大家分享。有兴趣交流的同学,可以跟我联络。 单从接收来看,均衡的实时性要求,从一个slot的角度来看,在1slot的时间处理完一个slot的数据;而从一帧的角度来看,如果是4RX则是一帧的时间处理完4slot的数据即可。图中表达了两种不同设计的实现要求。显然第二种的要求比第一种要低,而软件设计的方法也会也所不同。 单从接收来看,而解码所需要的实时性要求,如果是4RX则是一帧的时间处理完4slot即1block的数据即可。 发射的时序受接收的调度,则有了反馈支路的实时性要求,则需要结合起来看。USF的要求则是要完成均衡与解码。也就是说均衡加解码需要在11slot的时间内完成一个block的全部。一个block是4帧对应的同一个slot位置的数据连接起来的。   从上图可以看出,GSM/GPRS/EDGE系统单从接收链的实时性要求4RX的要求,均衡和解码完成后获得USF的时间点基本满足最为苛刻的发射配置时间点要求。在实际实际设计,稍微比此要求苛刻一点就可以完全满足整个系统的实时性要求。   TD-LTE实时性问题关键在于最短的HARQ反馈是4ms,如下图所示,这三个ms内能处理多大的数据量则对应这整个系统的一个流量。    小结:实时性系统软件设计 1.单方向链路处理的设计:以帧为单位来考虑设计,单方向每个步骤的模块的处理必须在一帧时间内完成一帧数据的处理;多个模块级联的处理则需要考虑多个模块之间的缓存数据的空间有一帧的余量 2.有反馈支路的链路处理设计:找到最短可能的反馈支路的时间要求,找到其中涉及的可能的处理的模块,再合理分配每个模块的实时性要求并调整缓冲池大小 3.其他的多方通信的需求,根据系统的通信机制,考虑适当的通信缓冲池的余量,并根据以上两条可能涉及的运算量的估计来设计,不需要特别为多方通信本身提高实时性的要求。   当然,具体到软件设计,芯片设计,亦有诸多实时性系统设计的问题,暂且在此不多述。但归根结底,都来自于这样一个数字世界最基本的点。没事的时候想想,并是自有其乐之处,有益于身心健康的。   (全文文字与图片均是作者原创,曾在本人新浪博客上贴过。)
相关资源