Chinaunix首页 | 论坛 | 博客
  • 博客访问: 125169
  • 博文数量: 19
  • 博客积分: 810
  • 博客等级: 准尉
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-14 23:34
文章分类

全部博文(19)

文章存档

2010年(2)

2009年(12)

2008年(5)

我的朋友

分类:

2009-05-18 00:00:15

      最近实验室863的项目启动后,就一直没有闲过,一方面老师的任务接踵而至,而且催促得厉害,另一方面SOC的课程设计也迫在眉睫。一个组说是有7个人,可是现在为止,真正干活的就一两个,很多细节问题和技术问题都得由做组长的我来考虑,为此,上个星期好几天晚上睡不好,人都瘦了1斤:(
      后来想通过了,慢慢做呗,其他组都还没开始,至少我还走在前面。这个周末没去3楼实验室干活,一直呆在2楼做SOC的课程设计,基本框架已经搭建出来。一个ARM核,两层AHB的总线系统,一个DMA,一个中断控制器,另外一个就是我们需要做的IP——JPEG Encoder了。我给我们的项目取了个名字——Phantom,中文是幻影的意思,来源于一个有名的歌剧Phantom of the Opera。
      昨天把DMAC挂上调试通了,其实就是配置几个寄存器,还是蛮好用的。不过需要使用DMA的中断,还是花了一点时间。最气的就是SOC Designer里面DMAC_PL081的DMACCxControl寄存器的最高位(bit[31])无法写入,开始中断一直出不来,debug了好久,才发现是这个IP的问题(ARM也太不负责了)。后来换了PL080,终于中断出来了。不过貌似只有Channel0可以用,其他的都用不了,不过不影响我的工作,所以不管了。
      今天上午10点又去了实验室,开始调试中断子程序ISR,先把DMAC的中断输入到VIC中断控制器的中断源入口,然后看了下VIC的文档和ARM的文档,自己试着简单配置了VIC,写了一个简单的ISR,不过在CodeWarrior下一直编译不过去。开始以为自己写得有问题,后来找了些ARM SOC Designer中的例子,还是编译不过去。没办法,尝试在DOS环境下用arm工具链来编译,没想到居然ok了,汗颜。。。中间有个问题就是,ISR中不能出现printf语句,这个涉及系统IO问题,我也不是很了解,反正ISR中一般也不会用的。终于搞定了中断,整个SOC环境的框架已经完成。另外,由于最初的系统设计用的是单个AHB总线,所以我觉得使用ARM922T比较方便,不用区分数据和指令总线,现在换成了两层总线系统后,于是把ARM内核由922T换成了926EJ-S,性能提高了不少。
       接下来的任务就比较明确了,就是尽快做好Encoder模块,这涉及三个问题:
       1.Encoder的寄存器,输入输出FIFO,数据流怎么传输;
       2.DMAC每次传数据后的中断信号是直接通知Encoder,还是中断通知ARM内核,由ARM去解锁Encoder;
       3.输出数据是先存到RAM,还是直接被ARM读出去做后续的处理。

       哎,又是一个周末完了,又要开始忙项目的事情,这个课程设计慢慢做着吧,但愿一切顺利。



阅读(814) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~