广告

国产工业CPU,米尔基于全志T507-H开发板的实时性分析与测试

2023-02-14 11:07:28 米尔电子 阅读:
MYC-YT507H核心板基于T507-H处理器研制,具有丰富的接口资源, 拥有良好的软件开发环境,内核支持开源操作系统Linux。在开发阶段,建议配合核心板配套的评估套件 MYD-YT507H 来加速开发。

1. 概念

全志科技T5系列是一个高性能四核 CortexTM–A53 处理器,适用于新一代汽车市场。T5系列符合汽车 AEC–Q100 测试要求。该芯片集成四核 CortexTM–A53 CPU、G31MP2 GPU、32 位 DDR3/LPDDR3/DDR4/LRDDR4 动态随机存储器。Cz6ednc

Cz6ednc

MYC-YT507H核心板基于T507-H处理器研制,具有丰富的接口资源, 拥有良好的软件开发环境,内核支持开源操作系统Linux。Cz6ednc

在开发阶段,建议配合核心板配套的评估套件 MYD-YT507H 来加速开发。评估套件的详细信息请访问:http://www.myir-tech.com/productCz6ednc

2. 实时内核设计

实时补丁我们选择RT-Preempt来实现。Cz6ednc

2.1. 移植补丁

RT补丁官网 从RT官网下载4.9.170对应补丁Cz6ednc

https://wiki.linuxfoundation.org/realtime/startCz6ednc

https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.9/older/Cz6ednc

Cz6ednc

把解压后的补丁放到linux4.9目录下,然后用下面命令打包即可 patch -p1 < ./patch-4.9.170-rt129.patch Cz6ednc

Cz6ednc

由于代码有差异,会提示大量不匹配,导致补丁打入失败则用下面命令找出打入失败文件Cz6ednc

find ./ -name "*.rej"Cz6ednc

Cz6ednc

手动逐一检查rej文件,逐个修改Cz6ednc

难点:Cz6ednc

zram驱动,sdk中源码引用自5.x版本驱动,需要找5.10左右RT补丁参考Cz6ednc

thread_info.h文件中手动将PREEMPT_LAZY宏改序号、宏名字Cz6ednc

Cz6ednc

问题点1:中断上下文中调用抢占api(rt_spin_lock即mutex)导致sched异常。Cz6ednc

分析与解决:Cz6ednc

这个中断是系统核心timer服务,至关重要。其通过request_percpu_irq注册中断isr,并不是常规request_irq或request_thread_irq,无法线程化。Cz6ednc

继续分析崩溃调用栈,在崩溃前最后的操作为cpufreq_cpu_get,通过分析其源码,基本找到__account_system_time函数中调用了cpufreq_acct_update_power,其中又调用了rt_spin_lock函数导致崩溃。Cz6ednc

通过分析cpufreq_acct_update_power函数,发现通过宏定义:CONFIG_CPU_FREQ_TIMES可以屏蔽该函数,进而不调用rt_spin_lock。Cz6ednc

经测试,在menuconfig中,屏蔽CONFIG_CPU_FREQ_TIMES后,系统能正常启动到login环节。Cz6ednc

解决方法:Cz6ednc

drivers/cpufreq/Kconfig中针对CPU_FREQ_TIMES设置与PREEMPT_RT_BASE的互斥。Cz6ednc

Cz6ednc

打开RT实时测试工具,进行测试Cz6ednc

在buildroot下面打开相关测试,根据下面描述打开rt-tests工具即可,打开测试工具测试步骤Cz6ednc

2.2. 其他影响性能的配置

禁用CPU Freq自动调频,并设置主频为最高频率:Cz6ednc

cd /sys/devices/system/cpu/cpufreq/policy0Cz6ednc

echo userspace > scaling_governorCz6ednc

cat saling_max_freq  > scaling_setspeedCz6ednc

(如不禁用cpufreq调频功能,系统会因动态调频产生极大的偶然延迟)Cz6ednc

3.实时性测试

空载测试Cz6ednc

cyclictest -p 99 -t 1 -d 100 -i 1000 -D 24h -m -a -nCz6ednc

Cz6ednc

图:空载测试Cz6ednc

CPU&内存满载Cz6ednc

cyclictest -p 99 -t 1 -d 100 -i 1000 -D 24h -m -a -nCz6ednc

增加压力Cz6ednc

stress-ng --cpu 4 --cpu-method all --io 4 --vm 50 -d 5  --fork 4 --timeout 36000s Cz6ednc

Cz6ednc

图:满载测试Cz6ednc

数据对比:Cz6ednc

板卡 MYD-YT507H
测试时间 120min
指令 cyclictest &stress-ng
空载 平均 8us;最大 24us
满载 平均 13us;最大 136us

表:数据信息Cz6ednc

4.产品介绍

    MYC-YT507H核心板采用SMD封装形式贴片(邮票孔+背面焊盘)。标准配置有4种产品型号。它们在存储配置、温度等方面有一些差异,客户可根据需求自行选择合适的型号。Cz6ednc

Cz6ednc

图 MYC-YT507H核心板Cz6ednc

 MYC-YT507H主要参数

名称 主要参数
主控芯片系列 T5 Series
主控芯片型号 T507-H
处理器规格 4核 ARM CortexTM-A53
内存 LPDDR4 1GB/2GB
存储器 EMMC 8GB (其他容量可选)
核心板尺寸 43 x 45 x 3.5 mm(带屏蔽骨架)
接口类型 SMD贴片,邮票孔+LGA
PCB板规格 10层板设计,沉金工艺
操作系统 Linux 4.9

表:核心板主要参数Cz6ednc

4.1. MYD-YT507H外设接口资源主要参数

Cz6ednc

表:开发板外设接口资源主要参数Cz6ednc

责编:Franklin
  • 请问thread_info.h文件中手动将PREEMPT_LAZY宏改序号、宏名字 这是修改的那一部分
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
广告
热门推荐
广告
广告
广告
EE直播间
在线研讨会
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了