完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
rk3568 的 bootrom 在 0xffff0000 处,hexdump 出来一段。
通过 mpidr_el1 判断主从核心, 低16位为0, 表明当前CPU核心是主核,然后跳到 0x40处的代码继续运行。 否则表明当前核心是从核,运行如下指令: 10: 58000680 ldr x0, 0xe0 14: 52800021 mov w1, #0x1 // #1 18: b9000001 str w1, [x0] 1c: d503205f wfe 20: 18000682 ldr w2, 0xf0 24: 580005e0 ldr x0, 0xe0 28: b9400001 ldr w1, [x0] 2c: 6b02003f cmp w1, w2 30: 54ffff61 b.ne 0x1c 34: 580005a1 ldr x1, 0xe8 38: b9400020 ldr w0, [x1] 3c: d61f0000 br x0 将内在 0x000000e0 处的32位数据写成1 然后就 wfe => Wait for event,即让当前核心进入 low-power standby state 模式, 如果wfe失败,就判断内在 0x000000e0 处是否为0xf0,如果不是就继续跳到1c处, 继续wfe,如果 0x000000e0 处为 0xf0,就从内存 0x000000e8 处取目标地址, 并用 br 指令跳转过去运行。 由此可知, 如果没触发条件, 从核心都处于不工作状态。 dfsdf主核心跳到 0x40 处后执行流程: 首先就是把 31 个通用寄存器清0,
然后设置栈寄存器到 0xd0 ?? 这跟芯片手册中的说的初始内存不一样,奇怪了,暂且不管 设置 vbar_el3(el3 的 vertor base addr)为0x000000d0, 然后 b 0x1668 跳到 0x1668 处继续运行。
mem@0xfdcd000c = 0x3ca5 mem@0xfdcd0270 = 0xffffffff // #-1 mem@0xfdcd003c = 0 (byte) mem@0xfdcd0034 = 0 (byte) mem@0xfdcd0010 = 0 (byte) 都是PMU_SRAM 内存( 0xFDCD0000 8KB) 然后 bl 0x4e8c 因为只dump了前19kb的bootrom, 暂时看不到 0x4e8c 处的代码。 汇编也不是强项, 放弃 bootrom 代码分析。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
谁有3566+电池+POE充电的方案,有个项目需要用该功能的主板
304 浏览 0 评论
RK3588的GMAC0与PHY的参考时钟电平匹配问题??????
4374 浏览 1 评论
请问各位大佬,如何解决,瑞芯微 RV1126B 使用 mpp 自带工具 调试时,内核直接报错崩溃!
1798 浏览 0 评论
使用rk3568开发板,核0\\1\\3运行linux,核2运行hal,在核0中怎么关闭核2
2354 浏览 0 评论
2356 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:36 , Processed in 0.710429 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2590