搜索
bottom↓
回复: 230

FS2410裸机系统EasySystem(包括s3c2410的几乎所有裸机驱动,各种实用裸机函数,GUI窗口系

[复制链接]

出0入0汤圆

发表于 2009-2-21 19:18:19 | 显示全部楼层 |阅读模式
以前也发表过一次,可是阿莫网站被攻击,帖子被删了,但是这一次,我又带上最新的成果发表上来了,新增了wav格式声音的读取和采集。

     你可以说一句话然后存进sd卡,然后拿到电脑上用播放器播放,可惜的是只支持PCM,没有编解码。

     本来打算搞jpeg编解码的,可惜发现比较复杂,短时间内完成不了,所以暂时放下了,里面只有jpeg格式的基本分析函数。函数写的还不好,不要见笑,等待下一版本中改进吧!

     由于其中的wav和bmp函数并不完善,都只有初级功能,所以函数还有很多不好用的地方,这几天再搞一个新东西,暂时保密。搞完了,就继续开发我的EasySyatemV2.0,到时候新增功能会让你们兴奋不已,尽请期待!哈哈!

     里面包括s3c2410的几乎所有裸机驱动,函数接口精心设计。

     另外包括各种使用的裸机函数,包括窗口系统,和FAT16文件系统。

     另外还有BMP,WAV格式读写,俄罗斯方块游戏,图片浏览器等应用程序。

点击此处下载 ourdev_421318.rar(文件大小:3.61M) (原文件名:EasySystem_3.rar)


    简介就看这个贴吧,是被黑客攻击后恢复的帖子,郁闷!
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=3208463&bbs_page_no=1&bbs_id=1032

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2009-2-21 19:45:27 | 显示全部楼层
2410也玩裸机, 该说老兄你强,还是说你费神好呢????

出0入0汤圆

 楼主| 发表于 2009-2-21 19:51:26 | 显示全部楼层
主要是为了学习一些底层的东西的原理和实现。个人兴趣所致,我喜欢玩底层的东西,尤其是gui,fs,os,编解码和各种通信协议。的确没必要这么做,不过自己写的fs和gui可比玩现成的有成就感,哈哈!!

出0入0汤圆

发表于 2009-2-21 19:52:55 | 显示全部楼层
也在学 记号

出0入0汤圆

 楼主| 发表于 2009-2-21 20:08:59 | 显示全部楼层
源代码全部开放,记得我在写fs的时候向一个高手请教,不肯泄露源码。现在我自己搞定了,EasyFs,EasyGUI和窗口系统都是可以移植的。在使用过程中遇到问题直接问我!不知何时能得到一条裤子!

出0入0汤圆

发表于 2009-2-21 20:25:38 | 显示全部楼层
cool~

出0入0汤圆

 楼主| 发表于 2009-2-21 20:37:35 | 显示全部楼层
工程目录讲解:  
Main         --主程序,包括系统硬件的初始化,及GUI,FS等的初始化。  

MyApp        --应用程序,主要是基于GUI,FS,DataAccess,SystemTool和驱动编写的应用程序。这里面有俄罗斯方块游戏机  
               RussiaBlock,电子琴Orgatron,贪吃蛇Snake(未完成),图片浏览器PicViewer。  

SystemTool   --包括串口界面ComShell,串口和USB下载Download,NandFlash和NorFlash烧写的SysProg,以及从Nand启动系统的  
               SysBoot,提供系统时钟节拍和定时Tick的SysTime,实现按键和触摸屏系统输入的SysInput,实现基于窗口消息的桌面系统SysWindow。  

DataAccess   --基于EasyFS的特定格式文件读写,创建。目前实现了文本文件,wav和24位BMP图片。  

EasyFS       --包含了FAT16文件系统的读写程序。  

EasyGUI      --各种各样的图形绘制和字体显示。  

Drives       --包含开发板上的各种驱动,包括SD卡的驱动SDI,串口驱动UART,液晶驱动LCD等等。  


EasyFS各个文件说明:  

EF_Disk    --主要管理物理磁盘驱动,包括初始化退出,读写,向上提供一个个逻辑磁盘如,首次添加的磁盘就是磁盘“A”,以此  
             类推,因此这个FS可以同时操作多个物理磁盘,Flash等等。  

EF_Cache   --实现FS的RAM缓冲,减少磁盘访问次数,向上提供磁盘的Cache的读写,隐藏真实磁盘的读写。  

EF_FAT     --实现FAT表的读写,目前只支持FAT16。  

EF_FDT     --实现FDT表的读写,查找等,支持多级目录。  

EF_Dir     --实现多级目录和文件的读写和查找。  

EF_File    --实现多级目录文件的读写。

出0入0汤圆

发表于 2009-2-21 20:51:02 | 显示全部楼层
这个帖子我喜欢

出0入0汤圆

发表于 2009-2-21 20:54:43 | 显示全部楼层
楼主能不能共享下优龙开发板的光盘?

出0入0汤圆

 楼主| 发表于 2009-2-21 21:07:25 | 显示全部楼层
资料比较大,你说你需要哪方面的?我先传一部分。

出0入0汤圆

发表于 2009-2-21 21:18:42 | 显示全部楼层
随便传一些有用的就可以了~

出0入0汤圆

 楼主| 发表于 2009-2-21 21:24:28 | 显示全部楼层
如果是裸机的话,我的这个程序是经过整理的,比他本来带的还容易理解,并且有更多的功能。如果是linux和wince的话,只有一些移植好的包,不知是否需要?这个板子就一个pdf教程,还有就是datasheet,买了过后就很后悔!

出0入0汤圆

发表于 2009-2-21 21:54:15 | 显示全部楼层
很好 谢谢啊

出0入31汤圆

发表于 2009-2-21 22:03:48 | 显示全部楼层
好资料!感谢楼主!

出0入0汤圆

发表于 2009-2-22 00:05:25 | 显示全部楼层
此贴酷啊

楼主是不是Proteus上的常客啊 头像很象

出0入0汤圆

发表于 2009-2-22 00:07:29 | 显示全部楼层
cool~ 标记学习中

出0入0汤圆

发表于 2009-2-22 00:16:18 | 显示全部楼层
有个图片就哈了

出0入0汤圆

发表于 2009-2-22 00:52:44 | 显示全部楼层
好东西,支持!感谢楼主无私共享!

出0入0汤圆

发表于 2009-2-22 01:22:26 | 显示全部楼层
LZ似乎和我一样,在做类似的东西~

出0入0汤圆

发表于 2009-2-22 09:06:31 | 显示全部楼层
记号

出0入0汤圆

 楼主| 发表于 2009-2-22 11:36:08 | 显示全部楼层
【15楼】 robinyuan
楼主是不是Proteus上的常客啊 头像很象

回:  我是proteus论坛的版主,哈哈,肯定是常客了!

【19楼】 liuweiele
LZ似乎和我一样,在做类似的东西~

回:请问你在做什么东西?有usb host驱动吗?

出0入0汤圆

 楼主| 发表于 2009-2-22 12:58:24 | 显示全部楼层
发新pp的,这比以前发的可是要清晰很多哦!!


(原文件名:菜单控件演示.jpg)
我目前也就写了一个菜单的窗口部件,本想写很多的,但是觉得工作量太大,只写了一个。


(原文件名:窗口系统的桌面.jpg)
这是GUI的桌面,点击上面的图标就可以启动相应的程序,下面还有任务栏,哈哈!可以实现最小化,最大化哦!


(原文件名:窗口遮盖测试1.jpg)


(原文件名:窗口遮盖测试2.jpg)
这是两个大小不同会形成遮盖的窗口,窗口系统有一个Z序,自己可以准确判断出触摸点在哪个窗口,同时使改窗口出于活动状态,然后发出窗口消息,参数有触摸点坐标,窗口应用程序自行处理。


(原文件名:电子琴.jpg)
这是一个电子琴,从上面的乐谱可以看出,GUI中可以显示汉字和字符。本想做个documen控件的,但觉得没意思,就没搞。同时这个程序也试用了按键的窗口消息,只不过这里看不到按键,也听不到声音,我还可以给你们演奏一曲呢!


(原文件名:俄罗斯方块游戏1.jpg)


(原文件名:俄罗斯方块游戏2.jpg)
这是个俄罗斯方块的游戏机,由于采用了两个数据结构,所以可以同时两个人玩而不会干扰哦!可以举行比赛,如果屏幕足够大,按键足够多,还可以做成4人,100人同时玩哦!另外还具有暂停功能,积分,等级,时间哦!



(原文件名:图片浏览器1.jpg)


(原文件名:图片浏览器2.jpg)


(原文件名:图片浏览器3.jpg)


(原文件名:图片浏览器4.jpg)

这里的图片和桌面的图标都是存在SD卡里的,通过FAT16文件系统和bmp读取函数获得图像数据的。

还有声音采集存储功能,是在串口菜单里,可以把你说得话保存成wav格式,更多功能一下说不完,有fs2410开发板的同志们这下有好玩的了!当然其他2410板子应该也很容易移植!

出0入0汤圆

发表于 2009-2-22 13:49:45 | 显示全部楼层
这个2140板子可以跑Linux和WinCE哦
楼主强悍 自己搞了个OS啊

今天上不去www.proteus.com.cn 是网站带宽太小了?还是在整顿啊?

出0入0汤圆

 楼主| 发表于 2009-2-22 14:27:06 | 显示全部楼层
【23楼】 robinyuan

   这个我就不清楚了,这两天我也上不去。我对这个EasySystem最不满意地地方是没有OS,所以有很多东西都点到为止,没有深入下去。我的计划是先把原理都弄一遍,然后重新开始设计我的EasySystem,包含几个套件,OS,GUI,FS,USB,TCP/IP,以及各种编解码。不过这个目标可能要很长时间才能完成,可能要靠开源社区的力量。不过我的原则是,出于学习目的完全开源,提供免费的技术支持,并且完成后我会写技术文档!免得我们的中国人在学习GUI,FS,OS,通信协议,编解码之类的都必须搞国外的。国内的就算是搞,都不开源,让我们中国人更加容易的接触底层技术。

   尽请期待!

出0入0汤圆

发表于 2009-2-22 14:31:41 | 显示全部楼层
牛人

出0入0汤圆

发表于 2009-2-25 09:49:04 | 显示全部楼层
这么好的贴 阿莫来置酷啊
期待楼主的新版本

出0入8汤圆

发表于 2009-2-25 13:44:44 | 显示全部楼层
我也正在学,谢谢楼主了,楼主好样的。

出0入0汤圆

发表于 2009-2-26 08:54:56 | 显示全部楼层
能发个fs2410的的uboot和linux的移植包吗

出0入0汤圆

 楼主| 发表于 2009-2-27 08:36:26 | 显示全部楼层
回 【28楼】 hfmedical


这个在开发版光盘里不是有吗?

出0入0汤圆

发表于 2009-3-2 09:44:50 | 显示全部楼层
花了1个晚上把fatfs port 到 2410上了。
支持Fat32 不支持LFN

今天再看看稳定否。

出0入0汤圆

发表于 2009-3-5 11:25:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-5 11:29:08 | 显示全部楼层
楼主,你是不是有FS2410的光盘啊,能否将光盘里的demo目录传上来.

出0入0汤圆

发表于 2009-3-5 16:43:04 | 显示全部楼层
我也支持下,我刚刚开始学,正苦恼中,呵呵

出0入0汤圆

发表于 2009-3-24 21:12:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-24 21:49:16 | 显示全部楼层
你好,我刚刚学习arm,手头闲置一个友善之臂2410.

我刚开始使用ARM2410,按照WinCE用户手册建立环境,编译后出现一个错误,但是我又不熟悉WinCE,又看不到是哪里出错,请帮我看看!谢谢!


红色的就是以下部分:


!!!!! There were errors building. Check C:\WINCE420\build.err


ARMSYS2410 - 1 error(s), 0 warning(s)


就一个错误,导致我不能定制wince映像。不知道你是否遇到此问题。

出0入0汤圆

发表于 2009-3-24 22:10:05 | 显示全部楼层
三星的这款3.5寸LCD显示效果很不错~

出0入90汤圆

发表于 2009-3-24 23:36:51 | 显示全部楼层
我有块SBC2410的板子,用JLINK7连上了,用自带的并口连不上,后面就不知道怎么搞了!

出0入0汤圆

 楼主| 发表于 2009-3-25 08:50:02 | 显示全部楼层
【36楼】 liuweiele

      期待你的东西,哈哈!!!

出0入0汤圆

发表于 2009-3-25 10:23:57 | 显示全部楼层
我也用的fs2410,谢谢楼主啊

出0入0汤圆

发表于 2009-3-25 10:23:58 | 显示全部楼层
我也用的fs2410,谢谢楼主啊

出0入0汤圆

 楼主| 发表于 2009-3-25 10:32:43 | 显示全部楼层
买这个板子很让我后悔,资料少,没有技术支持!玩起来痛苦啊!

出0入0汤圆

发表于 2009-3-25 12:13:11 | 显示全部楼层
强烈要求莫老大给条裤子。。

出0入0汤圆

发表于 2009-3-25 16:02:01 | 显示全部楼层
兰州是个好人 支持一下

出0入0汤圆

发表于 2009-3-25 17:35:07 | 显示全部楼层
牛人,牛贴,鉴定完毕.阿莫赶紧加酷吧.

出0入0汤圆

发表于 2009-3-25 21:28:50 | 显示全部楼层
很强大的功能

出0入0汤圆

发表于 2009-3-25 22:30:27 | 显示全部楼层
你们俩还是联合一下搞个GUI得了,你们的代码偶都看过,感觉很不错
不过不要再在ADS下搞了,换keil吧,要不GCC也成,最好再把bootloader统一下,1+1》2哦
对二位的精神与毅力表示尊敬!

出0入0汤圆

发表于 2009-3-25 23:06:18 | 显示全部楼层
LS和ADS有仇 ?

出0入0汤圆

 楼主| 发表于 2009-3-26 08:36:56 | 显示全部楼层
【47楼】 liuweiele

我想请问一下你的那个gui的透明和3D效果按钮是怎么做的?3D和那些控件是使用绘图还是贴图方式?很好看,我也想增加一下这些功能。

出0入0汤圆

发表于 2009-3-26 09:30:39 | 显示全部楼层
哈,Mark~~

出0入0汤圆

发表于 2009-3-26 12:51:28 | 显示全部楼层
当然要使用绘图方式.

出0入0汤圆

发表于 2009-3-26 13:12:34 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-3-26 13:18:32 | 显示全部楼层
哈哈,楼主竟然和我的兴趣想一致啊,看来要看看你写的东西咯,看完可能再摆两句。

出0入0汤圆

 楼主| 发表于 2009-3-26 13:27:08 | 显示全部楼层
那请问有相关的进行色彩计算和立体效果设计的资料吗?可否共享一下。

出0入0汤圆

发表于 2009-3-26 13:56:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-3-26 23:12:48 | 显示全部楼层
这个帖子很有分量,国内的开发者们很需要开源的精神,要是都像楼主的奉献精神,国内水平能进步一大块,

出0入0汤圆

发表于 2009-3-27 08:45:59 | 显示全部楼层
好贴,顶.....

出0入0汤圆

发表于 2009-3-30 22:45:24 | 显示全部楼层
【47楼】 liuweiele
呵呵,RV MDK是方向,从编译器上可以看出是用了keil的外壳和一些技术,加上ADS中改进后的编译器
所以没必要再用ADS了,而且ADS中的某些东西MDK无法兼容。

用GCC是因为免费,通用性强,而且可供使用的开源代码多。

出0入0汤圆

发表于 2009-3-30 22:54:45 | 显示全部楼层
顶,

出0入0汤圆

发表于 2009-3-30 23:28:25 | 显示全部楼层
void LCD_PaintBmp(INT32U uiXPos,INT32U uiYPos,INT32U uiWidth,INT32U uiHigh,INT8U ucaBmp[])
{
        INT32U uiXCount,uiYCount,uiCount=0;
       
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        if((uiXPos+uiWidth)>=LCD_X_MAX||(uiYPos+uiHigh)>=LCD_Y_MAX)
                return;
       
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    for(uiYCount=0;uiYCount<uiHigh;uiYCount++)
                for(uiXCount=0;uiXCount<uiWidth;uiXCount++)
        {
            usa_LCDRAM[uiYPos+uiYCount][uiXPos+uiXCount] =ucaBmp[uiCount+1]|ucaBmp[uiCount]<<8;
            uiCount+=2;
        }
}
请教楼主  这个函数有没有点问题?
if((uiXPos+uiWidth)>=LCD_X_MAX||(uiYPos+uiHigh)>=LCD_Y_MAX)
这样就返回?

出0入0汤圆

发表于 2009-3-31 00:01:42 | 显示全部楼层
LZ有没有实现GIF,JPG或PNG解码?

出0入0汤圆

 楼主| 发表于 2009-3-31 08:41:40 | 显示全部楼层
回【60楼】 shenyuanzhi_82

     我觉得一般情况下够用了,所以没有进行出错处理。

回 【61楼】 liuweiele

     暂时没有,年初的时候本来试图编写jpeg编解码,但看完后觉得没有1个月是完成不了的,所以就没有弄。不过你可以发现这里面有jpeg解码这个模块,只写了一些格式的分析。不知你的gui里有什么图片编解码?

     对你的gui我最感兴趣的有几个方面:透明效果和3D按钮的算法;是使用什么样的思想或者说框架完成各种处理;图片是使用什么格式以及是使用什么fs存储的。

     既然不可以泄露源码,把这些技术说明一下我想应该没什么问题吧?

出0入0汤圆

发表于 2009-3-31 09:31:21 | 显示全部楼层
问各位牛人一个问题,我最近在mini2440上搞ucgui,目前基本的绘图是没问题了,但是不知道怎么把触摸屏的触摸消息传到gui里,哪位知道地能否指点一下,不胜感激!

出0入0汤圆

发表于 2009-3-31 12:25:06 | 显示全部楼层
中国也有楼主这样的牛人!!

出0入0汤圆

发表于 2009-3-31 22:47:35 | 显示全部楼层
【62楼】 superyongzhe 最后的骑士
我把你的GUI移到我的GEC2410上,试了你的那个EG_TEST函数,发现图象有所偏移,还没有仔细查什么原因,先上张图,请指导一下

(原文件名:GUI.JPG)
就是整个图象往右移了。

出0入0汤圆

发表于 2009-3-31 22:51:14 | 显示全部楼层
RE:【62楼】 superyongzhe 最后的骑士
目前,我也就使用FAT文件系统,GUI支持32位色;GIF,JPG,PNG解码正在研究中...,

出0入0汤圆

发表于 2009-3-31 23:53:38 | 显示全部楼层
RE:楼主

对于3D按钮,只不过是视觉上的一种错觉.你仔细参考一下这份示意图,就知道怎么实现这种效果了:


3D示意图 (原文件名:3D_Button.JPG)


实际应用效果 (原文件名:button.jpg)

出0入0汤圆

 楼主| 发表于 2009-4-1 08:41:28 | 显示全部楼层
【65楼】 jaky80000
    图像错位应该是驱动程序的问题,也就是液晶初始化和液晶画点函数应该有问题。


【66楼】 liuweiele
   那你的表盘应该是贴图的效果了?透明效果的图标不会是带a通道的32位bmp位图吧?

出0入0汤圆

发表于 2009-4-1 09:17:51 | 显示全部楼层
【68楼】 superyongzhe 最后的骑士
你的EG_TEST函数里为什么又要作一次初始化呢?
void EG_DriverInit(void)
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    GPB1_TO_OUT();
    GPB1_TO_1();
   
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    EG_PortInit();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    EG_PWRENInit(TRUE) ;
   
   
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    // TFT LCD panel, 16bpp TFT, ENVID=off
    rLCDCON1 = (EG_CLKVAL<<8) | (0<<7) | (3<<5) | (12<<1) | 0;
   
    rLCDCON2 = (EG_VBPD<<24) | (EG_LINEVA<<14) | (EG_VFPD<<6) | (EG_VSPW);
   
    rLCDCON3 = (EG_HBPD<<19) | (EG_HOZVAL<<8) | (EG_HFPD);
   
    rLCDCON4 = (13<<8) | (EG_HSPW);
   
    rLCDCON5 = (1<<11) | (1<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6)
             | (1<<3)  |(EG_BSWP<<1) | (EG_HWSWP);

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    rLCDSADDR1 = (((uint32)sta_VRAM>>22)<<21) | EG_M5D((uint32)sta_VRAM>>1);
   
    rLCDSADDR2 = EG_M5D( ((uint32)sta_VRAM + (EG_XMAX*EG_YMAX*2))>>1 );
   
    rLCDSADDR3 = (((EG_XMAX-EG_XMAX)/1)<<11) | (EG_XMAX/1);
   
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    rLCDINTMSK |= (3);    // MASK LCD Sub Interrupt
    rLPCSEL &= (~7) ;     // Disable LPC3480
    rTPAL = 0 ;           // Disable Temp Palette

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    EG_OutSwitch(TRUE);

        EG_SetDefaultScreen();
}
这个和GEC2410上的初始化参数有些不同,开始的LCD的初始化我就用原来的,我也想着应该是初始化的参数问题,确实有些不同,所以我就想把GEC2410的初始化放到这里来,可是调用时,就报错有些宏未定义,所以我就把头文件加进去却报更奇怪的错误,由于昨天比较晚了就没有想是什么原因了,在上班不给用ADS,所以也没有得搞.现我把两个初始化的贴出来,帮忙看下,画点函数只是把相素放到缓冲区里,应该是一样的.
//*******************************************************************************************************
你的初始化部分
void EG_DriverInit(void)
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    GPB1_TO_OUT();
    GPB1_TO_1();
   
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    EG_PortInit();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    EG_PWRENInit(TRUE) ;
   
   
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    // TFT LCD panel, 16bpp TFT, ENVID=off
    rLCDCON1 = (EG_CLKVAL<<8) | (0<<7) | (3<<5) | (12<<1) | 0;
   
    rLCDCON2 = (EG_VBPD<<24) | (EG_LINEVA<<14) | (EG_VFPD<<6) | (EG_VSPW);
   
    rLCDCON3 = (EG_HBPD<<19) | (EG_HOZVAL<<8) | (EG_HFPD);
   
    rLCDCON4 = (13<<8) | (EG_HSPW);
   
    rLCDCON5 = (1<<11) | (1<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6)
             | (1<<3)  |(EG_BSWP<<1) | (EG_HWSWP);

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    rLCDSADDR1 = (((uint32)sta_VRAM>>22)<<21) | EG_M5D((uint32)sta_VRAM>>1);
   
    rLCDSADDR2 = EG_M5D( ((uint32)sta_VRAM + (EG_XMAX*EG_YMAX*2))>>1 );
   
    rLCDSADDR3 = (((EG_XMAX-EG_XMAX)/1)<<11) | (EG_XMAX/1);
   
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    rLCDINTMSK |= (3);    // MASK LCD Sub Interrupt
    rLPCSEL &= (~7) ;     // Disable LPC3480
    rTPAL = 0 ;           // Disable Temp Palette

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    EG_OutSwitch(TRUE);

        EG_SetDefaultScreen();
}

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#if          EG_RESO==1
#define EG_DIV                 8

#elif EG_RESO==2
#define EG_DIV                 4

#elif EG_RESO==4
#define EG_DIV                 2

#else
#define EG_DIV                 1
#endif


//******************************************************************************************************
#define EG_BSWP    (0)      // Byte swap control
#define EG_HWSWP   (1)      // Half word swap control

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define EG_M5D(n)  ((n) & 0x1fffff)     
                                                         // get lower 21bits

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define EG_CLKVAL        (7)
                                                        // FCLK = 200MHz, HCLK = 100MHz
                                                        // VCLK = HCLK / [(CLKVAL+1) * 2]  (CLKVAL >= 0)

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define EG_HOZVAL        (EG_XMAX - 1)
#define EG_LINEVA        (EG_YMAX - 1)

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define EG_VBPD     (14)    //垂直同步信号的后肩
#define EG_VFPD     (11)    //垂直同步信号的前肩
#define EG_VSPW     (2)     //垂直同步信号的脉宽

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define EG_HBPD     (37)    //水平同步信号的后肩
#define EG_HFPD     (19)    //水平同步信号的前肩
#define EG_HSPW     (29)    //水平同步信号的脉宽

//******************************************************************************************************

以下是GCE1410带的LCD初始化程序
//*******************************************************************************************************
/**************************************************************
320×240 16Bpp TFT LCD功能模块初始化
**************************************************************/
static void Lcd_Init(void)
{
        #ifdef LTV350QV_POE                               //先设置为16PBB模式.//这个已定义
       
        rLCDCON1=(CLKVAL_TFT_240320<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
            // TFT LCD panel,16bpp TFT,ENVID=off
        rLCDCON2=(LTV350QV_VBPD<<24)|(LINEVAL_TFT_320240<<14)|(LTV350QV_VFPD<<6)|(LTV350QV_VSPW);
        rLCDCON3=(LTV350QV_HBPD<<19)|(HOZVAL_TFT_320240<<8)|(LTV350QV_HFPD);
        rLCDCON4=(MVAL<<8)|(LTV350QV_HSPW);
        rLCDCON5=(1<<11)|(1<<10)|(1<<9)|(1<<8)|(0<<6)|(BSWP<<1)|(HWSWP);        //FRM5:6:5,VCLK,HSYNC and VSYNC are inverted
        rLCDSADDR1=(((U32)LCD_BUFER>>22)<<21)|M5D((U32)LCD_BUFER>>1);
        rLCDSADDR2=M5D( ((U32)LCD_BUFER+(SCR_XSIZE_TFT_320240*LCD_YSIZE_TFT_320240*2))>>1 );
        rLCDSADDR3=(((SCR_XSIZE_TFT_320240-LCD_XSIZE_TFT_320240)/1)<<11)|(LCD_XSIZE_TFT_320240/1);
       
        #else
       
        rLCDCON1=(CLKVAL_TFT_240320<<8)|(MVAL_USED<<7)|(3<<5)|(12<<1)|0;
            // TFT LCD panel,12bpp TFT,ENVID=off
        rLCDCON2=(VBPD_240320<<24)|(LINEVAL_TFT_240320<<14)|(VFPD_240320<<6)|(VSPW_240320);
        rLCDCON3=(HBPD_240320<<19)|(HOZVAL_TFT_240320<<8)|(HFPD_240320);
        rLCDCON4=(MVAL<<8)|(HSPW_240320);
        rLCDCON5=(1<<11)|(0<<9)|(0<<8)|(0<<6)|(BSWP<<1)|(HWSWP);        //FRM5:6:5,HSYNC and VSYNC are inverted----LQ035Q7DB02
       
        rLCDSADDR1=(((U32)LCD_BUFER>>22)<<21)|M5D((U32)LCD_BUFER>>1);
        rLCDSADDR2=M5D( ((U32)LCD_BUFER+(SCR_XSIZE_TFT_240320*LCD_YSIZE_TFT_240320*2))>>1 );
        rLCDSADDR3=(((SCR_XSIZE_TFT_240320-LCD_XSIZE_TFT_240320)/1)<<11)|(LCD_XSIZE_TFT_240320/1);

        #endif
       
        rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
        rLPCSEL&=(~7); // Disable LPC3600
        rTPAL=0; // Disable Temp Palette
}

/**************************************************************
The initial and control for 320×240 16Bpp TFT LCD----TX06D18
**************************************************************/
#define MVAL                (13)
#define MVAL_USED         (0)                //0=each frame   1=rate by MVAL
#define INVVDEN                (1)                //0=normal       1=inverted
#define BSWP                (0)                //Byte swap control
#define HWSWP                (1)                //Half word swap control

#define M5D(n) ((n) & 0x1fffff)        // To get lower 21bits

//TFT 240320
#define LCD_XSIZE_TFT_240320         (240)       
#define LCD_YSIZE_TFT_240320         (320)
//TFT 320240
#define LCD_XSIZE_TFT_320240         (320)       
#define LCD_YSIZE_TFT_320240         (240)

//TFT 240320
#define SCR_XSIZE_TFT_240320         (640)
#define SCR_YSIZE_TFT_240320         (480)
//#define SCR_XSIZE_TFT_240320         (240)
//#define SCR_YSIZE_TFT_240320         (320)
//TFT 320240
#define SCR_XSIZE_TFT_320240         (320)
#define SCR_YSIZE_TFT_320240         (240)
//TFT 320240

//TFT240320
#define HOZVAL_TFT_240320        (LCD_XSIZE_TFT_240320-1)
#define LINEVAL_TFT_240320        (LCD_YSIZE_TFT_240320-1)
//TFT320240
#define HOZVAL_TFT_320240                (LCD_XSIZE_TFT_320240-1)
#define LINEVAL_TFT_320240        (LCD_YSIZE_TFT_320240-1)

//Timing parameter for LCD
#define VBPD_240320                (2)                //垂直同步信号的后肩
#define VFPD_240320                (2)                //垂直同步信号的前肩
#define VSPW_240320                (4)                //垂直同步信号的脉宽

#define HBPD_240320                (8)                //水平同步信号的后肩
#define HFPD_240320                (8)                //水平同步信号的前肩
#define HSPW_240320                (6)                //水平同步信号的脉宽

#define CLKVAL_TFT_240320        (5)                
//FCLK=180MHz,HCLK=90MHz,VCLK=6.5MHz

//for LTV350QV  TFT 320240
#define CLKVAL_TFT_320240        (6)

另,我还想问下那些图标也是用画出来的吗,而不是取模的?
谢谢!说了这么多,还请帮忙看看.

出0入0汤圆

 楼主| 发表于 2009-4-1 09:37:57 | 显示全部楼层
【69楼】 jaky80000
    你完全可以把我的初始化函数删掉,然后就直接用你的初始化函数,然后就是把那个画点函数修改一下就OK了,至于为什么初始化两次,是因为我的代码是重复的,驱动里面有一个,gui里面也有一个,其实都是一样的,是为了更好的模块化才这样做的。另外,这函数仅仅是为了测试,实际使用时并不需要,同时可是在这里就看到一个完整的液晶操作过程,不是很好吗??很多看起来很累赘和多余的东西都是为了便于以后进行拆分和维护!

出0入0汤圆

发表于 2009-4-1 10:30:37 | 显示全部楼层
可恶的黑客

注册一个号来mark

出0入0汤圆

发表于 2009-4-1 10:54:46 | 显示全部楼层
【70楼】 superyongzhe 最后的骑士
了解,谢谢!我开始只是以为是初始化的问题,不知道还和画点函数有关系,
static void __EG_DrawPixel(coord stX,coord stY,colour stColour)
{
        *(pst_VRAM+stY*EG_XMAX+stX)=stColour;
}
static volatile colour sta_VRAM[EG_YMAX][EG_XMAX/EG_DIV];
static volatile colour *pst_VRAM=&sta_VRAM[0][0];
就是把相素加到这个数组里的,起始位都是(0,0)开始的吧.
这个是GEC2410带的
/**************************************************************
320×240 16Bpp TFT LCD单个象素的显示数据输出
**************************************************************/
static void PutPixel(U32 x,U32 y,U32 c)
{
        if ( (x < SCR_XSIZE_TFT_320240) && (y < SCR_YSIZE_TFT_320240) )
        LCD_BUFER[(y)][(x)] = c;
}
这些是一样的,我晚上回去时再试一下吧,谢谢!(你的QQ号是不是错的啊,找不到人啊,呵呵...)

出0入0汤圆

 楼主| 发表于 2009-4-1 11:08:16 | 显示全部楼层
【72楼】 jaky80000
    这个没错,我不知道为什么很多人都找不到我的号。这个程序和硬件接触最紧密的部分就是初始化和画点读点函数。而且我这个我这个底层做修改了的,你看到那里使用的是指针,而且可以更改,这是我后来加的双缓冲。

出0入0汤圆

发表于 2009-4-1 11:15:46 | 显示全部楼层
【73楼】 superyongzhe 最后的骑士
314665354

(原文件名:Match.JPG)
是不是我的QQ有问题啊
画点函数
*(pst_VRAM+stY*EG_XMAX+stX)=stColour; 和LCD_BUFER[(y)][(x)] = c;
编译出来是一样的吧.
由于用了原来的初始化,所以我现在也只是把sta_VRAM改成了LCD_BUFER,双缓冲也是copy过来的,对吧.

另,我还想问下那些图标也是用画出来的吗,而不是取模的?
谢谢!说了这么多,还请帮忙看看.

出0入0汤圆

 楼主| 发表于 2009-4-1 11:22:42 | 显示全部楼层
【74楼】 jaky80000
     那个图片最开始是使用取模方式,不过后来我弄了个fat16文件系统,那些图标是存储在sd卡里的50*50的24位bmp图片。

出0入0汤圆

发表于 2009-4-1 11:25:33 | 显示全部楼层
【75楼】 superyongzhe 最后的骑士
对啊,可以存到文件系统里啊,谢谢!
谢谢帮我解答了这么多,你的QQ号我想加,可是加不到,呵呵.....

出0入0汤圆

 楼主| 发表于 2009-4-1 11:53:02 | 显示全部楼层
呵呵,我加你吧!你QQ多少?

出0入0汤圆

发表于 2009-4-1 11:58:40 | 显示全部楼层
我觉得USB主机裸奔比较有难度,去年做毕业设计的时候曾经想裸一把,可惜能力实在是有限,呵呵。

出0入0汤圆

 楼主| 发表于 2009-4-1 12:00:36 | 显示全部楼层
【78楼】 valley 微风山谷
      的确是,我目前已经放弃了,这是我今年放弃的第二个想法了!

出0入0汤圆

发表于 2009-4-1 13:00:50 | 显示全部楼层
加到了,谢谢!

出0入0汤圆

发表于 2009-4-1 13:05:50 | 显示全部楼层
【79楼】 superyongzhe 最后的骑士
加了吗?

出0入0汤圆

发表于 2009-4-1 13:15:24 | 显示全部楼层
这个帖要顶!

出0入0汤圆

发表于 2009-4-1 13:37:16 | 显示全部楼层
好东西呀,我顶你

出0入0汤圆

发表于 2009-4-2 09:54:30 | 显示全部楼层
牛人就是多。顶!

出0入0汤圆

发表于 2009-4-2 12:31:53 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2009-4-2 12:43:18 | 显示全部楼层
QQ如何加的楼主  我也想加

出0入0汤圆

发表于 2009-4-2 15:05:42 | 显示全部楼层
楼主请问add        r8, r8,r9,lsl #2如何得到正确的偏移量的
好象INTOFFSET是按位偏移的 INTOFFSET<<2+HandleEINT0能得到正确的偏移量吗
谢谢!!

IsrIRQ  
        sub        sp, sp, #4       ;reserved for PC
        stmfd        sp!, {r8-r9}
       
        ldr        r9, =INTOFFSET
        ldr        r9, [r9]
        ldr        r8, =HandleEINT0
        add        r8, r8,r9,lsl #2
        ldr        r8, [r8]
        str        r8, [sp,#8]
        ldmfd        sp!,{r8-r9,pc}

出0入0汤圆

 楼主| 发表于 2009-4-3 12:47:37 | 显示全部楼层
事实说明是可以这样用的。

出0入0汤圆

发表于 2009-4-6 23:34:49 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2009-4-8 17:55:09 | 显示全部楼层
TO: superyongzhe 最后的骑士

相当不错,想不到在这里也能遇到老朋友

me: 风城少主

QQ: 376637405 你加我,这个项目,我相当感兴趣,希望可以和你一起完善它

出0入0汤圆

发表于 2009-4-8 23:33:54 | 显示全部楼层
顶一个,研究看看2440怎么弄。

出0入0汤圆

 楼主| 发表于 2009-4-9 08:42:56 | 显示全部楼层
【90楼】 wyoujtg

      论坛里的liuweiele大侠好像想搞一个开源项目,不知你是否感兴趣。如果要是搞OS就好了,我跟他搞GUI和FS,你搞OS。最后做成一个集成的专用系统如何?

出0入0汤圆

发表于 2009-4-10 00:50:10 | 显示全部楼层
楼主强大!

出0入0汤圆

发表于 2009-4-10 01:05:13 | 显示全部楼层
有些问题想向楼主请教:
mini2440有没有提供ISP的功能?因为我看手册里面提供的下载方式都是IAP的;但NOR和NAND FLASH 里面都没有程序的时候,我们要怎样才能把程序down到SDRAM或是FLASH里面呢?
另,不知楼主用的是什么编译器?ADS?thanks

出0入0汤圆

发表于 2009-4-24 16:17:05 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2009-4-27 09:59:01 | 显示全部楼层
【94楼】 valley 微风山谷

     主要是使用串口或者usb,或者jtag下载和烧写。至于具体下载在哪里,用户手册说得已经很清楚了。这个程序使用的是ads,上面说的很清楚了,你没认真看我的帖子。

出0入0汤圆

发表于 2009-5-2 23:40:09 | 显示全部楼层
不得不顶的好帖子,要是能将nann flash上加上文件系统来存图片,访问速度会更快一些,对于640*480的全屏刷屏,就方便了

出0入0汤圆

发表于 2009-5-4 19:15:06 | 显示全部楼层
superyongzhe 最后的骑士

问个问题啊 我的板子也是fs2410的板子
把源代码生成的BIN文件通过usb下到板子上 插上SD卡
为什么得到下面的信息:
FCLK=200MHz  HCLK=100MHz  PCLK= 50MHz
Little Endian
FLASH_SADDR:00000000h
SRAM_SADDR :40000000h SRAM_EADDR:40000fffh
SDRAM_SADDR:30000000h SFR_BADDR :48000000h
ISR_BADDR  :33ffff00h
Free RAM: 301e1d60h ~ 33ffa7ffh


Read  Mode  : Polling
Write Mode  : Polling
SDI Initialized successful
SWI exception!!!

这里的SWI exception!!!就停在这个死循环这了 为什么得不到串口中打印的磁盘信息 也就是帖子的(原文件名:ourdev_596204.JPG)

我的SD卡是SanDisK 1G

我的QQ是:57098973 能加下不? 想详细问一下

出0入0汤圆

 楼主| 发表于 2009-5-5 09:25:23 | 显示全部楼层
应该是这个sd卡驱动还有问题。

出0入0汤圆

发表于 2009-5-15 07:45:13 | 显示全部楼层

出0入0汤圆

发表于 2009-6-18 17:16:04 | 显示全部楼层
mark,正在学习文件系统中,谢谢楼主分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 06:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表