当前位置:网站首页>64位 RT-Thread 移植到 Cortex-A53 系统 bug 修复笔记
64位 RT-Thread 移植到 Cortex-A53 系统 bug 修复笔记
2022-08-10 16:06:00 【学习也是有瘾的】
RT-Thread 版本:4.1.0 master 版本。
1. Idle 默认栈大小为 256 字节,导致任务切换触发异常
Arch64 状态下,RT-thead 的任务切换触发未知错误。
经过测试,是因为 idle 初始化时,栈溢出,修改了就绪列表的值,导致任务切换失败.
#ifndef IDLE_THREAD_STACK_SIZE
#if defined (RT_USING_IDLE_HOOK) || defined(RT_USING_HEAP)
#define IDLE_THREAD_STACK_SIZE 256
#else
#define IDLE_THREAD_STACK_SIZE 128
#endif /* (RT_USING_IDLE_HOOK) || defined(RT_USING_HEAP) */
#endif /* IDLE_THREAD_STACK_SIZE */
可以手动设置 IDLE_THREAD_STACK_SIZE 大小更改 IDLE 任务栈大小。问题解决。
2. 栈初始化时,未对栈指针进行对齐操作,导致任务切换时触发 sp 指针对齐失败异常
串口报错如下:
[0]switch to priority#255 thread:tidle0(sp:0x41019024), from thread:tshell(sp: 0x42058f20)
[SYNC Error]: in EL1
ELR_EL1 =0x000000004100045c
ESR_EL1 =0x000000009a000000
current Exception Level exception, SPsel = 0
x0 =0x0000000000000000 x1 =0x0000000000000001
x2 =0x0000000000000000 x3 =0x0000000000000000
x29 =0x000000000000001d x30 =0x0000000041003134
[INFO]: CPU Reboot now!!!
查看手册得知,ELR_EL1 =0x000000004100045c,该异常由 sp 指针对齐失败导致的。
解决:由于当前 sp 指针为 4 字节对齐的,所以失败,在 rt_hw_stack_init() 中 将 sp 指针进行 16 字节对齐,问题解决。
/*
* TODO sp 指针4字节对齐不行,64位任务环境下的任务切换会失败,更改为 16 字节对齐
*/
stack_addr = RT_ALIGN_DOWN((rt_ubase_t)stack_addr, sizeof(rt_ubase_t) * 2);
边栏推荐
- Gif动图怎么用视频做?一键在线完成视频转gif制作
- 智为链接,慧享生活,荣耀智慧服务,只为 “懂” 你
- App自动化测试框架设计与实现
- Yi Gene|In-depth review: epigenetic regulation of m6A RNA methylation in brain development and disease
- Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
- 积分可以当钱用,阿里推出个人「碳账户」
- 关于Web渗透测试需要知道的一切:完整指南
- 二叉树详解
- 怎么截取视频做gif动图?手把手教你视频在线转gif制作
- 【21天学习挑战赛】直接选择排序
猜你喜欢
随机推荐
机器学习天降福音!数据科学家、Kaggle大师发布「ML避坑宝典」
北海 Kraken:基于 Flutter 构建的高性能 Web 渲染引擎
十年架构五年生活-09 五年之约如期而至
Taurus.MVC WebAPI 入门开发教程4:控制器方法及参数定义、获取及基础校验属性【Require】。
关于“算力”,这篇文章值得一看
找到一个超级神奇,百试百灵的解决 ModuleNotFoundError: No module named xxx 的方法
【服务器数据恢复】raid5崩溃导致lvm信息和VXFS文件系统损坏的数据恢复案例
视频转成gif动图怎么操作?仅需三步在线完成视频转gif
清理空的 Jetpack Compose 应用程序模板
Spike project harvest
LeetCode-692. Top K Frequent Words
An ABAP tool that can print the browsing history of a user in the system for BSP applications
自助服务知识库是什么?
redis 源码源文件说明
软件配置 | pip下载第三方库文件及配置pip源的不完全总结
babylonjs shader
不爱生活的段子手不是好设计师|ONES 人物
拆分整数为2的幂次项和 → 理解多重背包问题二进制优化的核心思想
Colocate Join :ClickHouse的一种高性能分布式join查询模型
山西:一煤矿发生死亡1人安全事故 被责令停产整顿









