首页 > 评测 > 野火i.MX RT1052开发板评测:移植RTT、与STM32H743性能对比
野火i.MX RT1052开发板评测:移植RTT、与STM32H743性能对比
- [导读]
- i.MX RT系列一经推出就受到了市场广泛关注,不少第三方也马不停蹄地进行开发板等配套开发资源的开发。本文对野火 i.MX RT1052开发板进行了评测,主要评测项目为:板载资源分析、RTT移植以及与STM32H743的性能对比测试。
这些就是rtt的一些文件,bsp就是一些板级相关的东西,components就是一些组件,看英文单词都知道啦。然后就是src就是rtt的实现的源码,include就是一些头文件,而libcpu就是一些芯片的支持,tools就是一些rtt的工具,example还不会的别学嵌入式了。。。。。
看源码确实是一个很轻量级的操作系统,移植起来也是很简单,重点是火哥已经帮我们移植好啦,直接用吧,杰杰在学校rtt的过程中,发现跟一些操作系统还是有点不一样的,他的启动方式就在启动文件已经做好了。来看看:
在components.c中的148行
/* re-define main function */
int $Sub$$main(void)
{
rt_hw_interrupt_disable();
rtthread_startup();
return 0;
}
先关中断,再做rtt的启动
int rtthread_startup(void)
{
rt_hw_interrupt_disable();
/* board level initalization
* NOTE: please initialize heap inside board initialization.
*/
rt_hw_board_init();
/* show RT-Thread version */
rt_show_version();
/* timer system initialization */
rt_system_timer_init();
/* scheduler system initialization */
rt_system_scheduler_init();
#ifdef RT_USING_SIGNALS
/* signal system initialization */
rt_system_signal_init();
#endif
/* create init_thread */
rt_application_init();
/* timer thread initialization */
rt_system_timer_thread_init();
/* idle thread initialization */
rt_thread_idle_init();
/* start scheduler */
rt_system_scheduler_start();
/* never reach here */
return 0;
}
里面有一些函数是我们自己实现的,比如开发板初始化:rt_hw_board_init,
rtt还是有点好玩的,对外开放了main嘛!我们一般写程序都在main.c中,所以,它又搞了个main_thread_entry线程(其实我更喜欢把这些称作任务,不过都一样啦,既然学了rtt,那就跟官方叫吧)
void main_thread_entry(void *parameter)
{
extern int main(void);
extern int $Super$$main(void);
/* RT-Thread components initialization */
rt_components_init();
/* invoke system main function */
#if defined (__CC_ARM)
$Super$$main(); /* for ARMCC. */
#elif defined(__ICCARM__) || defined(__GNUC__)
main();
#endif
}
这个函数是跳转到我们的main.c中的main。下面才是真正实现我们的代码的地方。
由于前面说了,rtt启动的时候,会将开发板相关资源初始化,所以,我们自己的main就不需要再初始化了,直接开启rtt的线程的创建与启动。
lcd_thread = rt_thread_create("lcd",
lcd_thread_entry,
RT_NULL,
LCD_THREAD_STACK_SIZE,
LCD_THREAD_PRIORITY,
LCD_THREAD_TIMESLICE);
if (lcd_thread != RT_NULL) //创建成功
rt_thread_startup(lcd_thread); //启动线程
else
return -1;
相关宏定义:
#define LCD_THREAD_PRIORITY 13 /* 优先级,数值越大,优先级越低 */
#define LCD_THREAD_STACK_SIZE 1024 /* 线程栈大小,单位为字节 */
#define LCD_THREAD_TIMESLICE 5 /* 线程时间片,单位为tick */
然后就是lcd_thread_entry线程的实现了,这个自己定义就好啦。
既然是评测,当然得有性能的评测啦,一段使用(-O0)低级优化的整形数计算,在野火 i.MX RT1052板载的SDRAM上仅跑了21.487秒。在STM32H743上面跑了21.479秒(400M的工作频率,打开CaChe(高速缓存)),而在stm32f103zet6上跑了9分57秒多。性能可见一斑了吧???如果不信可以自行测试,我可是等了几分钟就去刷牙了,回来还没跑完。。。。。
测试代码如下:(来源网络的测试代码)
void Calculate()
{
unsigned long x;
unsigned long a;
a=1;
for(x=0;x<4294967294;x++)
{
a=a+1;
}
}
STM32H743
stm32f103zet6
在性能上面, i.MX RT1052,估计是一般mcu无法跨越的存在了,性能真的是超级强悍的。看文章的网友可能有疑问了,明明400M主频的H7比1052快啊,在此杰杰回答一下,1052是在外部SDRAM上的程序,而H7在片内内存上,而且H7开了cache,能不快吗,如果这点小程序在1052的片内内存上跑,绝对飞起。。。。。但是用上这么强的芯片,绝对不会只干这点小程序的活的,到时候跑GUI,你就发现速度了。
据火哥测试, i.MX RT1052的刷屏速度也很快,1366*768分辨率的屏幕可以达到52HZ,而1280*800的屏幕则达到了60HZ,70MHZ左右的VCLK时钟,占用SDRAM的50%左右的数据吞吐量。
- 本文系21ic原创,未经许可禁止转载!
网友评论
- 联系人:巧克力娃娃
- 邮箱:board@21ic.com
- 我要投稿
-
欢迎入驻,开放投稿
-
人均百万?英伟达中国员工收入曝光! 2024-08-29
-
《黑神话:悟空》玩家硬盘升级攻略:提升游戏体验,畅享3A大作 2024-08-29
-
数睿数据参加《系统与软件工程 低代码开发平台通用技术要求》国家标准编制 2024-08-29
- NRF52810蓝牙数字耳机找人定制
预算:¥30005天前
- 125KW模块式PCS软硬件外包开发
预算:¥1100000015小时前
- 12V汽车启动电源项目BMS设计
预算:¥50000023小时前
- 数据可视化软件 开发
预算:¥5000023小时前
- PLC项目调试修改
预算:¥100001天前
- 起动电机控制器开发
预算:¥1100001天前