首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

这样的项目应该给老板报多长时间的工期?解决思路

2012-02-05 
这样的项目应该给老板报多长时间的工期?目标:要在ARM9的板子上进行JPEG解码并驱动7寸LCD屏显示.硬件资源:A

这样的项目应该给老板报多长时间的工期?
目标:要在ARM9的板子上进行JPEG解码并驱动7寸LCD屏显示.
硬件资源:ARM9+LCD接口
操作系统:ARM-LINUX.
该ARM9板子并不是现在常用的几个芯片,所以移植操作系统方面可能会有比较大的工作量.
我的任务:JPEG解码方面由其他同事负责,我可能需要负责BOOTLOADER,ARM-LINUX的移植,以及USB,SD卡,LCD的驱动.
我目前的能力:
使用ADS在ARM7上编写过不带操作系统的程序,
C语言还过得去,
对ARM7的体系结构有了解,
熟悉PC上的linux使用(仅仅是使用),
学习过linux系统原理(对linux的系统结构有个大概框架).
  没有嵌入式OS的经验.没写过驱动程序.   E文还凑合.
可能会有哥们说我做这个项目能力不够,但我对这个项目很感兴趣,而且公司上这个项目对我来说可能是个很好的学习机会(请原谅我的自私).
        请做过类似项目的兄弟给点建议,我好给老板汇报,自己心里也有个底.
        另外,有两个具体的技术问题也请顺便解答一下,目前ARM9的bootloader哪个比较好用?   是不是uboot?   在我的系统中应该使用RAMDISK还是YAFFS?   如果用YAFFS来管理存储代码的FLASH,那么用来存储JPEG图片的SD卡需要用YAFFS来管理吗?   我是想让该SD卡在WINDOWS下也可以读取出已存储的图片.
        期盼大家的帮忙^_^.   谢谢.

[解决办法]
按照楼主的资力,应该两三个月完成不是问题!

但是我发现楼主还是有些问题没搞清楚~~~

在描述的过程中存在明显的概念上的错误~~

多看书,不要浮躁就好!
[解决办法]
实话实说:你现在的能力的需要6个月以上,至少
[解决办法]
是你上次说的那个项目吧?ARM9的内核,做JPEG可以,不过要做mp4,那就不行了。

时间方面,最关键的是,这板子是否保证可用? 如果涉及硬件故障, 问题就比较麻烦,时间会变得难以估计。只要是ARM9,那bootloader和内核移植不会有太大问题。SD卡驱动和文件系统较为现成,时间花的也不会多。由于你的芯片比较特殊,因此USB和LCD驱动要花一点时间。如果觉得3个月可以完成,也建议多报一段时间,毕竟是第一个项目。
[解决办法]
呵呵,建议报1.2--1.5倍你认为可以完成的时间,因为在你工作的过程中,有可能会有没想到的情况出现。另外说不定还会有其它的一些事情会来打扰或中断你的工作。
[解决办法]
RAMDISK一般用于那些不需要永久存储的场合,因为在ram中,重起内容就没了。yaffs用在flash上。如果你想让windows也能读你sd上的内容,一定要用vfat文件系统。
顺便问一句,你用的arm9芯片型号是什么?如果没有现成的内核不支持(或找不到支持的patch),自己移植的难度和工作量是不小的!
[解决办法]
主要是lcd那里可能会化肥你不少事件。其他的都应该没问题 。 建议你至少要4个月时间吧。
[解决办法]
说句实话,依据你现在的能力有些困难,感觉你有些基本的概念都还没有清楚。
开发一个新的project,而且是嵌入方面,对于移植OS和写driver,你必须具备了解:linux的内核工作机制,内存管理,中断处理,文件系统,你看看你有多大的把握,当然这些可以边干边学,但是有个前提: 有一个前辈可以指导你,如果这点都没有,如果你不幸碰上内存段问题(驱动中容易碰到),那你慢慢熬吧。
[解决办法]
至少6个月,
[解决办法]
时间多了不一定是好事,我们要经验,所以说不要太久,给自己加压,对自己会有好处的.

[解决办法]
我没有理解你说的LCD控制器的含义。一方面你说: 要求MCU支持LCD屏,一方面又说,用软件实现。
如果说,软件只是实现JPEG解码,那是有现成的C语言代码的,实现起来也不困难;如果你要用一个ARM9的引脚用软件时序来实现驱动LCD(TFT或者CSDN类液晶),那可以肯定ARM9 CPU的能力不够。

[解决办法]
一般来说,移植linux到一款新cpu要做的事情如下:
1. Bootloader:就是能够初始化你的cpu,memory,设定内核需要的参数(tags),把内核从某处拷贝到ram(xip内核除外),然后跳到内核入口,内核自解压.... 通常bootloader你不用自己从头写,找一个成熟的(如u-boot),稍许修改即可。
2. Kernel-Arch specific: 这部分是让内核适应你的cpu体系架构,通常包括mmu管理,cache管理以及其他和体系架构相关的东西(如:浮点协处理器?)。对于ARM体系来说,底下还分很多种: arm7tdmi, arm720t, xscale, arm9??? .... arm10??? 。linux内核对arm家族支持很完备,不过你要根据你的cpu来挑选相应的支持代码。
3. cpu内的外设:集成在cpu内部的外设,这些你要自己编写驱动,至少串口设备的驱动要能驱动起来,这样才好调试。同样,如果你的外设借用了现成的ip核,多半你能从linux内核众多的驱动中找到你所需要的,加以少许修改就能用。

既然你的ic是定制的(可能也就是某一款arm核加上一些定制外设,我猜?),像patch-2.4.0-rmk1.gz这样的patch肯定是没什么用的,而且2.4内核也太老了, 你如果在arm-linux-kernel maillist上问rmk如何移植linux2.4我保证他不会给你任何回答。(大部分提问2.4问题的人会被告知去读FAQ :-)

所以,明智的做法是,参考和你的CPU内核版本相同的CPU,找到现有linux内核对该cpu的支持代码,比较你的cpu和这个cpu有哪些外设是相同或不同,再作些增删.....具体的工作量就要看你的定制ic有什么特别之处了。



[解决办法]
关于LCD控制器的问题,你可以去找一份TFT液晶的datasheet来看。如果你采用地址线输出加其它控制信号的方式驱动的话,你会发现,如果要满足LCD驱动时序,就要要求你的ARM每秒钟处理几百万甚至上千万个的中断。



这样说你可能不太明白,这样跟你解释吧:
目前的LCD控制器,都是从存储器里去把需要写到LCD数据线上的数据读出来,然后用固定的时序写到数据线上,这样的读写,CPU干涉是很少的,CPU只需要把需要显示的数据写入到内存里,读是通过DMA一类的方式,不需要CPU管理。如果你要采用内核直接处理的办法,就需要内核把存储器里的数据按字节进行读写(ARM是32位,可以一次读4个字节,LCD一般16位到18位,一次能写2个字节),假设你采用的LCD是640*480,每个点是16位的颜色,LCD的数据线是16bit宽度。那么每一屏的数据量就是640*480=30k字,每秒钟通常要求刷新60次以上,也就是每秒钟要有30k*60=1800k次CPU写操作。如果你存储器是32位宽度,那么至少要有900k次读操作。由于LCD的时序严格,每次的操作必须在指定的时间内完成,既没有办法提前,也不可以推后,否则图像就要出错。你觉得你的软件可以实现么?就算你软件能实现,你的ARM还能用操作系统么?还可以完成其它功能么?

你可以看看这几个方面:ARM内核访问存储器需要的时间(内部SRAM也好,SDRAM也好,都一个数量级的,看看读写各需要多长时间);LCD控制的时序;有时间的话可以看看DMA什么的。这样你就明白了,为什么不能用软件做。

很简单一个道理,如果说用ARM内核操作LCD绰绰有余,那么,那些在MCU里集成LCD控制器的人,他们是傻子么?

不太明白你们老板是个什么样的人。LCD控制器的IP,又不算贵。有钱来设计MCU,却在这地方抠。

热点排行