tag 标签: am64x

相关博文
  • 热度 7
    2023-8-23 16:01
    508 次阅读|
    0 个评论
    专用R5F+双核A53,异构多核AM64x让工控“更实时”
    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等接口的详细开发资料。
  • 热度 6
    2023-3-1 11:49
    777 次阅读|
    0 个评论
    前 言 本文档主要说明AM64x基于IPC的多核开发方法。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。 适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubuntu 18.04.4 64bit Linux Processor SDK:ti-processor-sdk-linux-rt-am64xx-evm-08.01.00.39 U-Boot:U-Boot-2021.01 CCS版本:CCS11.2.0 MCU+ SDK:mcu_plus_sdk_am64x_08_03_00_18 SysConfig:sysconfig-1.12.1_2446 GCC AARCH64 Compiler:gcc-arm-9.2-2019.12-mingw-w64-i686-aarch64-none-elf 本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F设计的多核工业级核心板, 通过工业级B2B连接器引出5x TSN Ethernet、9x UART 、2x CAN-FD、GPMC、PCIe/USB 3.1等接口。 核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 用户使用核心板进行二次开发时,仅需专注上层运用 ,降低了开发难度和时间成本,可快速进行产品方案评估与技术预研。 AM64x是SOC多核处理器,一般情况下,Cortex-A53核心运行Linux系统,Cortex-R5F/Cortex-M4F核心运行Baremetal(裸机)或RTOS(FreeRTOS等)。 ARM基于Linux的remoteproc/rpmsg驱动程序,可以实现Linux内核与运行RTOS的从处理器上的IPC驱动程序通信,具体框图如下图所示。 图 1 IPC多核开发案例位于“4-软件资料\Demo\RTOS-demos\”目录下,案例project目录存放工程源码,bin目录存放可执行程序文件。 表 1 案例 目录 说明 ipc_rpmsg_echo_linux bin 可执行程序 project 工程源码 ipc_rpmsg_echo_linux案例 案例说明 案例功能:基于RP Message的API实现Cortex-A53与Cortex-R5F核间通信,以及Cortex-A53与Cortex-M4F核间通信。 程序框图如下图所示。 图 2 程序框图 RTOS工程创建了两个RPMsg端点,其中一个端点与Linux内核交换消息,另外一个端点用于与Linux用户空间、裸机或RTOS交换消息。 图 3 案例测试 环境搭建 请将案例bin目录下的am64-main-r5f0_0-fw、am64-main-r5f0_1-fw、am64-main-r5f1_0-fw、am64-main-r5f1_1-fw、am64-mcu-m4f0_0-fw可执行程序拷贝至评估板文件系统任意目录下。 图 4 进入评估板文件系统,执行如下命令,删除原来的软链接。 Target# rm /lib/firmware/am64-main-r5f0_0-fw Target# rm /lib/firmware/am64-main-r5f0_1-fw Target# rm /lib/firmware/am64-main-r5f1_0-fw Target# rm /lib/firmware/am64-main-r5f1_1-fw Target# rm /lib/firmware/am64-mcu-m4f0_0-fw 图 5 执行如下命令,创建新的软链接。 Target# ln -sf /home/root/am64-main-r5f0_0-fw /lib/firmware/am64-main-r5f0_0-fw Target# ln -sf /home/root/am64-main-r5f0_1-fw /lib/firmware/am64-main-r5f0_1-fw Target# ln -sf /home/root/am64-main-r5f1_0-fw /lib/firmware/am64-main-r5f1_0-fw Target# ln -sf /home/root/am64-main-r5f1_1-fw /lib/firmware/am64-main-r5f1_1-fw Target# ln -sf /home/root/am64-mcu-m4f0_0-fw /lib/firmware/am64-mcu-m4f0_0-fw 图 6 请将评估板重启,在系统启动过程中,Cortex-R5F、Cortex-M4F核心将会引导启动。在评估板文件系统执行如下命令,查询Cortex-R5F、Cortex-M4F核心与remoteproc关系。 Target# head /sys/class/remoteproc/remoteproc*/name 图 7 Cortex-R5F、Cortex-M4F核心与remoteproc关系如下表所示。AM6412包含1个Cortex-R5F核心:r5fss0_0;AM6442包含4个Cortex-R5F核心分别为:r5fss0_0、r5fss0_1、r5fss1_0、r5fss1_1。 表 2 CPU核心 remoteproc m4fss0_0 remoteproc0 r5fss0_0 remoteproc1 r5fss0_1 remoteproc2 r5fss1_0 remoteproc3 r5fss1_0 remoteproc4 备注: 核心与remoteproc对应关系,请以实际情况为准。 执行如下命令,可查看Cortex-M4F、Cortex-R5F核心程序运行日志。 Target# cat /sys/kernel/debug/remoteproc/remoteproc0/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc1/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc2/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc3/trace0 Target# cat /sys/kernel/debug/remoteproc/remoteproc4/trace0 图 8 功能测试 本小节主要介绍如何基于RPMsg测试Cortex-A53与Cortex-M4F核间通信,以及Cortex-A53与Cortex-R5F核间通信。 基于Linux应用程序测试 本次测试使用TI官方提供的rpmsg_char_simple工具,我司提供的文件系统已移植该工具。 进入评估板文件系统执行如下命令,查看程序相关参数。 Target# rpmsg_char_simple -h 图 9 参数解析: rproc_id:核心ID,默认是0; num_msgs:发送的RPMsg数据包数量,默认是100; rpmsg_dev_name:RPMsg驱动设备节点,默认为不使用; remote_endpt:对端核心接收RPMsg的端点,默认为14。 Cortex-M4F核心、Cortex-R5F核心对应的ID,如下表所示。 表 3 核心 ID r5fss0_0 2 r5fss0_1 3 r5fss1_0 4 r5fss1_1 5 m4fss0_0 9 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss0_0)接收。 Target# rpmsg_char_simple -r 2 -n 10 图 10 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss0_1)接收。 Target# rpmsg_char_simple -r 3 -n 10 图 11 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss1_0)接收。 Target# rpmsg_char_simple -r 4 -n 10 图 12 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-R5F核心(r5fss1_1)接收。 Target# rpmsg_char_simple -r 5 -n 10 图 13 执行如下命令,Cortex-A53核心发送RPMsg数据包,Cortex-M4F核心(m4fss0_0)接收。 Target# rpmsg_char_simple -r 9 -n 10 图 14 基于Linux驱动程序测试 本次测试使用TI官方提供的rpmsg_client_sample驱动程序,我司提供的文件系统已移植该工具。 执行如下命令,查看各个核心对应的virtio ID。 Target# cd /sys/bus/virtio/drivers/virtio_rpmsg_bus Target# ls virtio* -l 图 15 表 4 设备节点 核心 Virtio ID 5000000.m4fss m4fss0_0 0 78000000.r5f r5fss0_0 1 78200000.r5f r5fss0_1 2 78400000.r5f r5fss1_0 3 78600000.r5f r5fss1_1 4 进入评估板文件系统执行如下命令,加载驱动,并设置RPMsg数据包数量为10。 Target# modprobe rpmsg_client_sample count=10 //count表示发送的RPMsg数据包数量。 图 16 执行如下命令查看驱动运行信息,打印"incoming msg x (src:0xd)"表示数据收发成功,即核间通信成功。 Target# dmesg | grep rpmsg_client_sample 图 17 案例编译 Import CCS Projects...",导入案例工程。 图 18 在弹出的如下界面,选中"ipc_rpmsg_echo_linux_am64x-evm_system_freertos",并勾选"Automatically import referenced projects found in same search-directory",然后点击Finish,导入Cortex-R5F核心与Cortex-M4F核心的全部工程。 图 19 在工程界面,右键选中ipc_rpmsg_echo_linux_am64x-evm_system_freertos,选择"Rebuild Project",重新编译全部工程。 图 20 编译完成后,将会在各个核心对应工程的Debug目录下生成可执行程序。 图 21 关键代码 创建任务并调度任务运行。 图 22 等待Linux就绪。 图 23 创建两个接收RPMsg的任务:用于接收Linux内核、Linux用户空间、Cortex-R5F核心(r5fss0_0)的RPMsg。 图 24 RPMsg接收任务。 图 25