在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 6693|回复: 7

求助: PowerPC 的 u-boot 汇编代码几条指令

[复制链接]
发表于 2009-5-13 13:56:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
u-boot 代码中有下面最后4句(标记部分)不懂,求教,谢谢
/* Alignment exception. */  // 对齐中断
. = 0x600
Alignment:
EXCEPTION_PROLOG  // ppc_asm.tmpl的宏定义,异常入口代码,可运行在无地址转换功能时
mfspr r4,DAR
stw r4,_DAR(r21)  // _DAR(180) _DSISR(184) _LINK(160) 在include/ppc_defs.h中定义
mfspr r5,DSISR  // DSISR(0x012) include/asm_ppc.h
stw r5,_DSISR(r21)
addi r3,r1,STACK_FRAME_OVERHEAD
li r20,MSR_KERNEL
rlwimi r20,r23,0,16,16  /* copy EE bit from saved MSR */
rlwimi r20,r23,0,25,25  /* copy IP bit from saved MSR */
lwz r6,GOT(transfer_to_handler)  // lwz r6, .L_transfer_to_handler(r14)  ppc_asm.tmpl定义GOT(NAME)
mtlr r6
blrl
.L_Alignment:
.long AlignmentException - _start + EXC_OFF_SYS_RESET
.long int_return - _start + EXC_OFF_SYS_RESE
 楼主| 发表于 2009-5-13 13:57:42 | 显示全部楼层
下面这几句,           另: 版面颜色昨天改的?
mtlr r6
blrl
.L_Alignment:
.long AlignmentException - _start + EXC_OFF_SYS_RESET
.long int_return - _start + EXC_OFF_SYS_RESE
发表于 2009-5-14 10:36:14 | 显示全部楼层
第二个问题大概是这样
应该是设置中断入口和返回的物理地址
你可以看到start加了0x100,所以减去那个宏就是再减去0x100,得到的就是需要跳转的绝对地址
应该是方便把flash中的代码搬运到内存中用的吧
发表于 2009-5-14 10:38:01 | 显示全部楼层
li r20,MSR_KERNEL
rlwimi r20,r23,0,16,16  /* copy EE bit from saved MSR */
rlwimi r20,r23,0,25,25  /* copy IP bit from saved MSR */
lwz r6,GOT(transfer_to_handler)  // lwz r6, .L_transfer_to_handler(r14)  ppc_asm.tmpl定义GOT(NAME)

这段应该是需要保存MSR寄存器的那两位,先拷贝到r20中,方便以后恢复用
EE是外部中断,IP好像就是个偏移
 楼主| 发表于 2009-5-14 13:54:48 | 显示全部楼层
首先谢谢 Sauce
    lwz    r6,GOT(transfer_to_handler)   // 得到GOT中transfer_to_handler的值,赋给r6
    mtlr    r6   // 将r6赋给链接寄存器lr
    blrl   // ? 此处不懂,
.L_Alignment:
    .long    AlignmentException - _start + EXC_OFF_SYS_RESET // 异常处理地址
    .long    int_return - _start + EXC_OFF_SYS_RESE    // 中断返回地址

看了一下, transfer_to_handler是先保存了一些寄存器,int_return是恢复寄存器
我没看明白blrl这个指令(blrl相当于 bclrl 20, 0)
blrl是先跳转到链接寄存器中的地址,然后将下一条指令的地址(还是内容?)存放到链接寄存器中
或者上面理解的有问题?
我就是对这个中断处理的过程没看懂

[ 本帖最后由 yihang1207 于 2009-5-14 14:34 编辑 ]
发表于 2009-5-14 15:41:32 | 显示全部楼层
手边没有汇编指令的书
命令记不住
如果按照你说的“blrl是先跳转到链接寄存器中的地址,然后将下一条指令的地址(还是内容?)存放到链接寄存器中”的话
那应该就是跳转到r6保存的地址,也就是transfer_to_handler的地址
此时LR中保存了下一条指令A的地址,具体下一条指令A是什么要自己看了

这样一来如果在试用blr进行跳转的话,就直接跳到A处执行,也算是一种返回方式吧
不知道说清楚没有,尽力了。。。
发表于 2009-5-25 20:52:35 | 显示全部楼层

指纹考勤机

 利用指纹生物识别唯一性特征进行考勤。避免传统的纸卡、IC卡考勤机代打卡的缺点。指纹考勤机验证有1:1和1:N比对方式。
  指纹考勤机介绍
  随机配发软件包含前台系统和后台管理系统两大部分。 其中,前台系统包含指纹签到及指纹登记两大模块;后台管理系统包含基本信息管理 资料管理、考勤管理、薪资管理等四大模块。
  指纹签到
  实时识别考勤人的员工编号,指纹考勤机并与当前时间一起写入到后台数据库中;
  自动判别是否已经在短时间内考勤过,若己考勤过则提示;
  对无指纹数据录入的员工可以使用员工编号加密码的方式进行考勤。
  指纹登记
  为员工登记考勤所需的指纹,指纹考勤机每员工最多可以登记三枚;
  登记后比对,看登记是否成功,以及是否能够正确识别,若比对出错、可重新登录
  删除作废的指纹: 
  登记无指纹员工的考勤密码指纹考勤机
头像被屏蔽
发表于 2009-5-30 15:50:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-24 13:39 , Processed in 0.019610 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表