u-boot-2011.06在基于s3c2440开发板的移植之解决raise: Signal # 8 caught

在上一篇文章中提到,在开发板上电后,会出现“raise: Signal # 8 caught”。这虽然不影响系统的正常运行,但也是一个不小的bug,也许会影响以后u-boot-2011.06的移植,因此我们有必要把这个bug去除掉。

 

其实把这个bug去掉也很简单,就是把time.c(在arch/arm/arm920t/s3c24x0目录下)这个文件中的四个全局变量用gd这个数据结构中的4个相关成员代替就可以了,具体的就是:

timer_load_val用gd->timer_rate_hz替代;

timer_clk用gd->tbl替代;

timestamp用gd->timer_reset_value替代;

lastdec用gd->lastinc替代。

 

下面我们就列出time.c这个文件具体需要修改的地方:

 

去掉第38行和第39行关于timer_load_val和timer_clk这两个变量的声明,并加上下面代码:

38:DECLARE_GLOBAL_DATA_PTR;

 

去掉第49行和第50行关于timestamp和lastdec这两个变量的声明;

 

去掉第60行至第68行语句(if (timer_load_val == 0)的判断内容),改为:

60:gd->timer_rate_hz = get_PCLK() /(2*16*100);

61:gd->tbl = get_PCLK() / (2 * 16);

 

剩下需要修改的内容就是具体的变量替换,其中每条语句前面的行号为源文件的行号:

70:gd->lastinc = gd->timer_rate_hz;

71:writel(gd->timer_rate_hz,&timers->tcntb4);

78:gd->timer_reset_value = 0;

99:gd->timer_reset_value = t;

108:tmo *= (gd->timer_rate_hz * 100);

118:gd->lastinc = READ_TIMER();

119:gd->timer_reset_value = 0;

126:return tmr / (gd->tbl / CONFIG_SYS_HZ);

137:tmo *= (gd->timer_rate_hz * 100);

140:tmo = usec * (gd->timer_rate_hz * 100);

160:if (gd->lastinc >= now) {

162:gd->timer_reset_value += gd->lastinc -now;

165:gd->timer_reset_value += gd->lastinc + gd->timer_rate_hz- now;

167:gd->lastinc = now;

169:return gd->timer_reset_value;

181:tbclk = gd->timer_rate_hz * 100;

 

通过上述的修改,我们再上电启动后,就不会再有raise: Signal # 8 caught了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值