专用R5F+双核A53,异构多核AM64x让工控“更实时”

创龙科技的SOM-TL64x工业核心板凭借Cortex-R5F和Cortex-A53的协同工作,在工业自动化领域表现出色。Cortex-R5F提供高实时性和安全性,与Linux系统配合的A53核心处理非实时任务,通过核间通信优化资源分配。

Cortex-R5F + Cortex-A53异构多核,

给工控带来何种意义?

创龙科技SOM-TL64x工业核心板搭载TI AM64x最新工业处理器,因其CortexR5F + 双核Cortex-A53异构多核的优良性能,在工业自动化、能源电力、轨道交通等领域广受客户欢迎。目前,已有不少客户将SOM-TL64x核心板应用在工业网关、工业机器人、运动控制器、配变电终端、伺服驱动器等工业产品终端。

Cortex-R5F作为实时处理核心,在实际运行中与双核Cortex-A53主核心互不干扰,安全性更高。另外,Cortex-R5F支持FreeRTOS/裸机,它很好地解决了双核Cortex-A53主核心运行Linux-RT实时性无法达到10us以内的棘手问题,从而使AM64x处理器平台友好支持实时性要求更高的产品应用。

Cortex-R5F实时核心介绍

AM64x的Cortex-R5F作为实时处理核心,主频高达800MHz,单/双/四核ARM Cortex-R5F,算力高达6400DMIPS,包括可扩展浮点运算单元(FPU)。

每个Cortex-R5F内核32KB ICache、32KB DCache和64KB TCM,总共256KB TCM,所有存储器上都有SECDED ECC。

Cortex-R5F核心可访问处理器的各种片上外设,如:GPMC、CAN-FD、SPI、UART、I2C、GPIO等,满足工业控制实时输入和输出的要求。

Cortex-R5F开发案例

Cortex-A53核心运行Linux系统,负责统筹多个远程核心之间的任务。而Cortex-R5F端运行FreeRTOS或NO RTOS(裸机),Cortex-A53与Cortex-R5F之间通过TI-RPMsg实现核间通信。

创龙科技为客户提供了AM64x基于Cortex-R5F的开发案例,包括CAN、UART、GPIO等接口的详细开发资料。

### 共享内存通信的配置与实现 在 AM64x 平台上,Cortex-A53Cortex-R5F 核之间的共享内存通信是通过物理内存映射区域实现的。该方法允许两个核直接访问同一段内存区域,从而高效地交换数据。为确保通信的正确性和一致性,需结合硬件配置和软件编程。 #### 内存分配与设备树配置 AM64x 的多核架构支持共享内存机制,开发者需要在设备树中定义共享内存区域的地址范围和大小。例如,可以将一段物理内存保留给 A53 和 R5F 共同使用,并禁用缓存以避免数据不一致问题[^1]。以下是一个典型的设备树配置示例: ```dts reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; shared_mem: shared_mem@9f000000 { compatible = "shared-memory"; reg = <0x0 0x9f000000 0x0 0x10000>; /* 起始地址与大小 */ no-map; }; }; ``` #### 应用程序中的内存映射 在 A53 上运行的 Linux 用户空间程序可以通过 `mmap()` 函数将共享内存区域映射到进程地址空间。R5F 作为裸机或实时操作系统(RTOS)任务运行时,则可以直接访问该物理地址。以下是一个 A53 端的共享内存映射示例: ```c #include <sys/mman.h> #include <fcntl.h> #include <unistd.h> int main() { int fd = open("/dev/mem", O_RDWR | O_SYNC); volatile unsigned int *shared_mem = mmap(NULL, 0x10000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x9f000000); // 初始化共享内存内容 shared_mem[0] = 0x12345678; // 后续操作... } ``` 在 R5F 侧,由于其运行于裸机或 TI-RTOS 环境,可以直接通过指针访问该物理地址: ```c #define SHARED_MEM_BASE (0x9F000000) volatile unsigned int *shared_mem = (unsigned int *)SHARED_MEM_BASE; // 读取 A53 写入的数据 unsigned int data = shared_mem[0]; ``` #### 同步机制与缓存管理 为了避免多个核同时修改共享内存导致的数据竞争,应使用同步机制,如自旋锁或信号量。AM64x 提供了硬件级自旋锁模块,可在多个核之间协调访问权限。此外,在启用缓存的系统中,必须确保缓存一致性。A53 使用 ARM NEON 或 Cache Maintenance 操作来清理或无效化缓存行,而 R5F 则需要手动管理缓存刷新。 ```c // 示例:A53 端执行缓存清理 void clean_cache_range(void *start, void *end) { __builtin_arm_dccmvac(start); __builtin_arm_dccmvac(end); } clean_cache_range((void*)shared_mem, (void*)(shared_mem + 0x10000)); ``` #### 安全性与调试 为防止非法访问,应在 MPU(Memory Protection Unit)中配置共享内存区域的访问权限。A53 可通过 Linux 内核配置限制用户空间对 `/dev/mem` 的访问,R5F 则可使用 MPU 设置只读或读写权限。调试过程中,可以使用 `rpmsg_char` 或 `rpmsg_pingpong` 工具辅助验证通信流程,并通过 `dmesg` 查看内核日志排查异常情况。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tronlong创龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值