打印

一道面试题

[复制链接]
2495|15
手机看帖
扫描二维码
随时随地手机跟帖
沙发
wangwenxue|  楼主 | 2010-12-22 21:30 | 只看该作者
说错了  笔试题

使用特权

评论回复
板凳
艹_艹_艹_艹| | 2010-12-22 21:30 | 只看该作者
addr = 0x0001;
for(i = 0 i < addr_width ; i ++)
{
cpu_wr (addr,i);
addr = addr <<i;
}

addr = 0x0001;
for(i = 0 i < addr_width ; i ++)
{
rddata[i]  = cpu_rd (addr);
addr = addr <<i;
}

for(i = 0 i < addr_width ; i ++)
{
   for(j = 0 ;j < addr_width ; j ++)
  {
     if(rddata[i]  = rddata[j])
      printf("the  addr line  i and  j  is  err");
  }


}

使用特权

评论回复
地板
gaohq| | 2010-12-22 21:37 | 只看该作者
addr_width
是啥?

使用特权

评论回复
5
艹_艹_艹_艹| | 2010-12-22 21:40 | 只看该作者
地址宽度

使用特权

评论回复
6
wangwenxue|  楼主 | 2010-12-22 21:50 | 只看该作者
额 高手用 文字表述一下就可以了

使用特权

评论回复
7
mmax| | 2010-12-22 22:14 | 只看该作者
addr_width,总线宽度

3楼方法看懂了,考虑了一会,好像没有更好的方法了。

但是程序错误太多了。。。

应该把3楼的代码作为面试题,让应聘的找出错误来。哈哈~

使用特权

评论回复
8
艹_艹_艹_艹| | 2010-12-22 22:31 | 只看该作者
ls 写了个伪码 哈哈, 几年没写c了  :lol

使用特权

评论回复
9
SLEET1986| | 2010-12-23 08:58 | 只看该作者
cpu_wr()这是什么函数啊。

使用特权

评论回复
10
wangwenxue|  楼主 | 2010-12-23 09:03 | 只看该作者
几年 没写 就搞出来 了  还真不错啊  我只会看  不会写 哈哈

使用特权

评论回复
11
acute1110| | 2010-12-23 09:05 | 只看该作者
这个太简单了,用3楼的办法可以查出错误,但是不够准确,因为sdram类的ram都是由横和列地址,要精确定位还需要通过比较,因为地址线的搭接会在写一个地址的时候同时写了4个位置(大多数情况),由于横和列的位数不同,所以也可能出现2个的情况(特别在高位,小端模式下),所以当你用3楼的程序写了一个地址区间后,还要遍历一下找到相同的区域,然后定位那两根线出了错误,---写程序太累了,就不写了啊

使用特权

评论回复
12
areshan| | 2010-12-23 13:46 | 只看该作者
看懂了,3楼是假设地址是16位的并行的,地址宽度是16,此时给每位对应的地址依次写入一个不同的数据(地址的位数),如果有2个地址线被焊在了一起,那么选择这2个地址的时候,一定是相同的一个地址。在读出来的时候,这2连在一起的地址线读出来的数据是相同的。由此可以判断是哪两个地址线连在一起了!!!!!!

使用特权

评论回复
13
areshan| | 2010-12-23 13:48 | 只看该作者
实际中,还是11楼说的对,地址有横列之分!!!!!!

使用特权

评论回复
14
hzic_niub| | 2010-12-23 16:37 | 只看该作者
你个混蛋,昨天晚上跟你说了这题, 今天就来网上发了

使用特权

评论回复
15
wangwenxue|  楼主 | 2010-12-23 17:23 | 只看该作者
哈哈  没事啦  求证 答案 而已么

使用特权

评论回复
16
csq463276932| | 2010-12-24 16:19 | 只看该作者
路过,学习一下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

176

帖子

0

粉丝