免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3329 | 回复: 10
打印 上一主题 下一主题

[MID project][Graphics] Daily Report from HELLO_MAX [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-07 21:56 |只看该作者 |倒序浏览
1.硬件为mw2440的板子,然后编译相应kernel。
2.下载最新的g-bios编译烧写,然后用nfs方式挂载rootfs,启动kernel测试kernel,
kernel虽然能进如shell命令提示行,但是启动界面有关mtd的报错,以及文件及命令提示行颜色不变问题(未解决)。
3.写了个画矩形的函数,并在g-bios 初始化lcd的时候调用,有问题待完善。

论坛徽章:
0
2 [报告]
发表于 2010-03-08 21:33 |只看该作者
本帖最后由 HELLO_MAX 于 2010-03-08 22:06 编辑

今天所做的内容主要是在g-bios的平台下操作lcd,具体内容为:
1.在g-bios的app目录下建立lcd目录,从app的其他目录拷贝个Makefile文件,并修改app目录下的Makefile,添加对app/lcd目录下文件编译的支持。
(刚开始的时候,忘记了拷贝Makefile和修改app目录下的Makefile,结果是多次烧录g-bios下半部分,也没有相应的命令,郁闷 :( )

2.解决了昨天画矩形函数的bug,并且画了个矩形中可以填充颜色的函数,基本通过测试。(不过有问题的,网络中断等原因会导致循环画矩形宕机;另外为了特殊用途,我在画矩形的循环中加了个变量,由于处理不当,导致lcd的前端显存溢出。。。)

3.画圆的函数画出来的是方的,然后宕机掉,

4.我们所用的arm-linux-gcc还不支持浮点计算。

5.菜鸟的日子是痛苦的,还有draw_line, draw_triangle, rotate要写,还有很多的,只是菜鸟还没想起来。。。。

6.明天要做涉及lcd的中断的东东,最好得把相关函数给整理下。

论坛徽章:
0
3 [报告]
发表于 2010-03-09 20:58 |只看该作者
世界上最遥远的距离,不是生与死的距离,而是给我两点,我却不知道怎么将两点连成线段

今天主要想法和结果如下:
lcd分辨率 480 * 272
1.arm中不支持浮点计算,所以计算出来的斜率小于1时,应该适当乘以一个基数,如果只考虑向下取整(暂时不考虑四舍五入和向上取整),那么作为480*272的最大斜率和最小斜率分别为272和1/480(斜率无穷大和斜率为零另论)。
2.显示屏只有有限的点数,480 * 272,但是我们画出来的线段应该视觉上是连续的,所以应该以变化块的最为基准。

    如果按照上午的计划来做的话,应该不用走多久的弯路的,可惜中途在写程序的时候想法一改再改,结果弄到吃晚饭的时候还是没有多大进展,吃饭的时候重新整理下了思路,没多久就搞定了,悲哀啊。(高中时候老师曾说如果做选择题没把握的话,还是填最先的答案,直觉有时候还是蛮准的。。。)

    另外在小平同志的帮助下解决了昨天宕机的问题,不过网络还是容易导致宕机,应该是中断的原因。

论坛徽章:
0
4 [报告]
发表于 2010-03-10 23:59 |只看该作者
今天主要打算是先做完三角形填充的,最初方案有2个:
方案1:
        由于已经有画线段的方法,不如以三角形的某一边平行填充,思想比较简单,但是每画完

一条线段都得重新计算起始和结束坐标,实在是太麻烦,另外有可能会导致有的点填充不到的情况



方案2:
        三条直线的公共面积,这方法在高中数学中应用过很多,另外反向填充也可以实现。2点构

成一线后,判断另外一点在该2点说构成线的上方还是下方。另外得判断该三点是否在同一条直线上

,以及误差估计。
       

    后来突然想到windows的画图工具栏中有个填充颜色的工具,可以自动识别任何形状并填充,这

种方法更具有通用性,可惜很久都没想出来判断边界的条件。无奈,只能修改整理下昨天画线的代

码,精简后,准备用画线段的方法画出MAXWIT,烧录后屏幕显示的A的撇捺居然都是虚线,修改后重

新烧录屏幕显示的A的撇捺变成了,一虚一实,“虚虚实实”,我郁闷。检查后发现犯了个只有脑袋

被驴踢了的情况下才会犯的错误!重新修改后搞定。

        另外,今天胜哥和taoxie跟我讲了他们做的双缓冲。今天没什么大的进展,希望明天会有突破!

论坛徽章:
0
5 [报告]
发表于 2010-03-11 23:39 |只看该作者
本帖最后由 HELLO_MAX 于 2010-03-11 23:40 编辑

今天一直陷在了点如何扩散这方面,一直都没有什么大的进展。其原理为:对于任意一点而言,其扩散方向有4个方向,每次变化一个像素点,根据颜色值是否相同来判断扩散要不要停止,对于任意形状的图形应当都适用。

  原地踏步踏一天,脚疼,受挫,无精神。。。

论坛徽章:
0
6 [报告]
发表于 2010-03-12 23:02 |只看该作者
今天主要工作:
    1.点的任意区域填充尝试失败,先搁置等以后有机会再做。于是采用前天第二个填充三角形的方案,调试了大半天都没调试出来,只有一条直线的约束条件起作用了,怀疑是类型不对导致越界了,可是还是没调试对,明天打算继续做下去。
    2.还有把画圆以及圆的填充给做了,采用的是中点判断,做的时候用了一个小技巧 ,比如x加上0.5来进行判断,由于不支持浮点,所以通常情况得左移放大再右移缩小,但是今天的情况比较特殊,(x + 0.5)^2 = x^2 + x + 0.25,所以我用x ^2 + x近似值代替。
    3.晚上,主要和taoxie再调试lcd个别点显示异常的时序问题,明天还得接着调试。双缓存和中断我还没在程序里做,前两天只听胜哥和tiaoxie讲了下,明天有时间弄下。
    进展仍然缓慢。。。

论坛徽章:
0
7 [报告]
发表于 2010-03-13 22:44 |只看该作者
今天主要工作:
1.上午看了下datasheet中关于lcd中断和时序相关的章节。
2.下午把昨天填充三角形的错误解决掉了,错误很幼稚,费神却不少。并且换了另外一种方法填充三角形,但是有2个问题,一个是边界初有点没有填充到,另外就是在起始点结尾点出了问题,花了很长时间也没有彻底fix掉。
3.晚上主要是在弄lcd的中断和双缓存,在taoxie的帮助下中断程序测试成功,但是双缓存应该有很大的问题在里面。
明天计划:
    检查今天三角形填充程序和双缓存以及阅读6410的datasheet,有时间想画下椭圆。

论坛徽章:
0
8 [报告]
发表于 2010-03-15 22:14 |只看该作者
DONE:
1.阅读、填写并测试lcd的时序,但测试启动logo失败。
2.编译了6410的kernel,nfs挂载打开失败,网卡型号不对,修改后仍然打开失败,应该还是nfs或者网卡问题。

TODO:
1.测试6410的lcd时序。
2.将在2440下的画点和线等程序移到6410板子上测试。

论坛徽章:
0
9 [报告]
发表于 2010-03-16 21:43 |只看该作者
DONE:
    1.6410板子的lcd时序调试成功,以及测试了画线和画圆等程序。
    2.编译6410的kernel,用nfs的rootfs测试成功,kernel自带的framebuffer程序跑的时候提示系统太慢。。。,应该是寄存器没有设置好。
    3.自己在kernel中增加framebuffer的驱动程序,调试很久,/dev/fb0始终没有出现

TODO:
    1.调试自己在kernel中增加的framebuffer程序。
    2.测试6410的graphics 2D功能。

论坛徽章:
0
10 [报告]
发表于 2010-03-17 21:59 |只看该作者
DONE:
    1.kernel中简单的framebuffer驱动测试成功,/dev/fb0终于出现,用fbv打开g-bios.jpg成功,其中设置的时候出了个问题,调试了很久,郁闷额。
    2.阅读6410的graphics 2D部分的datasheet,测试画线程序,屡试屡败,不知如何下手啊。
    3.既然是“DONE”,当然犯的错误算了,又犯了2个sb错误,简称sb2....。

TODO:
    1.明天上午继续测试graphics 2D的画线命令,如果没有进展,先搁置下了。
    2.完善自己那超简单的framebuffer程序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP