在S3C2440上运行的"电子日历“(支持平年,闰年,星期自动调整).
程序源码:点击此处下载 ourdev_421731.rar(文件大小:261K) (原文件名:RTC.rar) 程序运行截图:
http://cache.amobbs.com/bbs_upload782111/files_12/ourdev_421732.jpg
(原文件名:IMAG0840.jpg)
http://cache.amobbs.com/bbs_upload782111/files_12/ourdev_421733.jpg
(原文件名:IMAG0842.jpg)
http://cache.amobbs.com/bbs_upload782111/files_12/ourdev_421734.jpg
(原文件名:IMAG0814.jpg)
http://cache.amobbs.com/bbs_upload782111/files_12/ourdev_421735.jpg
(原文件名:IMAG0838.jpg)
http://cache.amobbs.com/bbs_upload782111/files_12/ourdev_421736.jpg
(原文件名:IMAG0839.jpg) 数据恢复了,此贴成重复贴了~./emotion/em025.gif 好像代码不全? 楼主的作品都不错,我很佩服,但仅仅只能看看而已! LS似乎对裸奔和GUI有点兴趣! 呵呵,是的!
我喜欢一切都在自己的掌握之中的感觉。
LZ的东西为什么都不能让人看看内幕呢?只知道漂亮,却学习不到什么! 你想要看哪些内幕? 所有内幕的源码是非常大的~很难上传 分成多个卷传上来,期望看看这种效果是怎么弄出来的。光看这个是看不出来你的各种图形和用户操作是如何处理的。实在不行向我邮箱传一份吧,十分感谢!
superyongzhe@163.com 你的邮箱最大可以收多大的附件? 30M,要不你就用QQ邮箱吧,最大支持1g,期待中! 我的qq:314665354 真的不错,希望楼主给个完整的代码学习下。 楼主~~我也非常有兴趣GUI在2440上的移植~~想知道你是如何移植上去的~~主要如何改与ucos的接口与2440的接口????????
~
我的QQ是150189576~~期待........ 这个不是uCOS,也不是uCUI. 学习了。 【14楼】 chenlinzhi319
积分:2
派别:
等级:------
来自:
楼主~~我也非常有兴趣GUI在2440上的移植~~想知道你是如何移植上去的~~主要如何改与ucos的接口与2440的接口????????
~
我的QQ是150189576~~期待........
--------------------------------------------------------------------------------
我想学习楼主的源码实现!
邮箱:bennycen2006@163.com
谢谢!! 这几天正忙着升级GUI,源码需做大改动.新版本类似于VC;可以不需要OS就可以运行.以后有时间的话,会编译成ADS下的静态库,给各位有兴趣的朋友试用. 新版GUI的部分功能演示:
http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_427999.jpg
(原文件名:IMAG0016.jpg)
http://cache.amobbs.com/bbs_upload782111/files_13/ourdev_428000.jpg
(原文件名:IMAG0071.jpg) 测试程序源码:
点击此处下载 ourdev_428002.rar(文件大小:2K) (原文件名:GUI_Test.rar) 发现做GUI还是VC的思想最实用,微软的确很有实力。Qt的信号与槽机制听起来也不错,不过自己做GUI的话,这种机制很麻烦! 对QT不太了解.
或许开发用C++比C方便一些,不知C++运行速度比C慢多少? 这个我目前不清楚,我现在正在用mini2440和qt开发一个气象监控的界面,感觉都不能算是嵌入式编程。这个款arm功能很强,目前没觉得影响速度。想知道你的gui的3D和透明效果的具体实现方法,如果不能给源码,介绍些资料给我看看。放心吧,这是个人爱好做的东西! 本人还是很乐意和志同道合的技术人员一起交流和研究,对于别人提出的某些意见,的确可以令我领悟到不少东西. 那你的表盘应该是贴图的效果了?透明效果的图标不会是带a通道的32位bmp位图吧? 是的 既然如此,问题如下:
1.是否使用OS?如果没有,那是不是用定时器做了个假多任务?(我那个GUI就是这么搞的)
2.GUI使用的是什么机制,类似于VC和miniGUI或者其他什么新思想?
3.在GUI的运行过程中必定需要大量数据结构,那你的动态内存是如何处理?描述各个界面的数据结构是动态还是全局的?
4.你对用户输入采用的是何种处理,触摸类型有按下,抬起,保持,还有一些什么其他动作吗?
哈哈,一下问了这么多问题,不知能否一一解答! Re:【27楼】 superyongzhe
1.这个GUI目前还没有OS,但用户可以通过GUI的定时器控件(虚拟定时器)同时创建n个定时器(每个定时器都是相对独立的,且数量不限制)来实现“伪多任务“功能,如果时间允许的话,后续将会再设计一个多任务OS和这个GUI配合使用,目前已经初步实现了外部用户程序动态调用系统本地函数的功能,
2.GUI基于消息驱动机制,本人对VC和MiniGUI也只是略知一二,也不敢确定到底它们之间的区别有多大,不过会适当保持一部分和它们相类似的编程风格。
3.对于动态内存分配处理,也是这个GUI开发过程的一个难点之一,目前临时性的做法是模拟CPU的Stack Pointer的方式进行,所以暂时无法实现多任务,界面对象的数据结构都是在动态内存中,程序退出时必须调用GUI_ObjectDestroy函数释放内存.
4.对于不同的控件就有不同的处理方法,每个控件都拥有自己独立的控件过程回调函数(Callback). 呵呵,谢谢你认真的回答。
主要对第4个问题觉得不是很清楚,使用回调函数的确没错。可是你应该有很多中不同类型的控件,你是根据需要在回调函数里完成,还是编写一个比较通用的控件,然后自己构造数据来完成?整个绘图和消息处理的关系是怎么弄的?不知是否有框架或者流程图可供参考。 暂时没有流程图,我也是凭空想象出来的. 不知道有没有人愿意做一个大型的,很有实用价值的免费开源项目? 不知是什么项目,如果是OS,FS和GUI的话,我会很喜欢。能否详细说明一下这个计划?
我一直有一个希望就是能做一个开源的专用OS系统,不像ucos这样简陋,又不像linux这样复杂,还有就是不做通用做专用,针对某一类应用专门优化的。 为什么不做通用的? 因为我觉得嵌入式对资源的要求比较高,也有很多实时性和稳定性的要求。如果做通用的,往往在性能和资源占有上难以平衡,而且这类通用的已经有很多了,我们再做这个有必要吗?我们能做的更好吗?所以我们要做的就是有针对性的嵌入式集成套件。
wince只适合手持设备,高端的,对于工业,数据采集之类的不可行。
linux过于庞大,占用资源太多,而且太复杂,不好用。
ucos太简陋,几乎什么你都需要自己搞。
最主要的原因是他们都是通用的,难于在性能,资源占用和可靠性之间很好的平衡。而且在ucos和linux之间形成了一个空缺,要么就用简陋的ucos,要么就用麻烦的linux,对于特殊场合难以应用。而且嵌入式领域个性化需求更强,这种用通用牺牲性能在对价格和稳定性敏感的地方是很麻烦的。
因此我认为有必要设计一种专用系统:
1.比ucos丰富,比linux简单,有OS,GUI,FS和NET。我觉得在实际的嵌入式设备中用的最多的应该是数据采集,传输,存储,另外还有用户交互,我们针对这个特点来设计。
2.容易使用,不想linux那样,结构太庞大,我们要求的就是简单。
3.稳定可靠,兼顾性能和资源占有。
总的来说就是:简单易用,稳定可靠,性能与资源兼顾,功能完善。
其中有说得不合适的地方,请多多包涵。我可能没说清楚,但大概意思是这样。 忘了提了,论坛里还有一个写过OS的网友想和我一起升级我那个EasySystem,不过我觉得没必要,因为原始的构架不好,再升级也是白干,只能用来验证原理和实验。刚好你也有这个计划,要不一起干吧?他有OS设计经验,你和我有GUI和fs经验,就差net了。不知我是不是在做梦,如果可行就搞一个计划,我们3人先做个样子出来,哈哈!! ecos 【34楼】 superyongzhe 最后的骑士
因此我认为有必要设计一种专用系统:
1.比ucos丰富,比linux简单,有OS,GUI,FS和NET。我觉得在实际的嵌入式设备中用的最多的应该是数据采集,传输,存储,另外还有用户交互,我们针对这个特点来设计。
2.容易使用,不想linux那样,结构太庞大,我们要求的就是简单。
3.稳定可靠,兼顾性能和资源占有。
==================================
稍微问一下
具体来说,你想要你的OS实现什么功能呢?应该满足什么样的指标呢? 具备文件系统,图形接口,通讯接口,具备完善的开发工具和文档,使用简单且运行稳定可靠,没有多余累赘的东西,而ucos这类简单的却没有,linux又太多。
因此当我们需要部署这个系统的时候,使用开发工具进行定制,做少量的驱动移植,然后就是应用编程。不像ucos那样什么都没有,而linux里又有很多嵌入式不需要的东西,而且没有针对性。 应用程序不需要和OS一起编译,可单独编译成Bin文件,由OS向应用程序提供API函数。 这个看后来准备怎么搞了,应该是可以和os集成,也可以以插件的方式运行,区别于可执行程序。 这个问题我已经解决了 不知是如何实现的,可否提供一个思路? 类似于Window下的动态连接库原理 呵呵,说得倒是很简单,实现起来很麻烦,包括编译器,怎么重定向都没有说。 我目前就是在ADS下实现的 那么继续问题:
1、是否实现抢占式多任务?
2、是否支持各任务独立的线性地址空间?
3、如果不支持独立线性地址空间,那么,是否支持内存隔离和保护? 这些现在还在计划之中,我正在和一个网友讨论,不过我认为应该是抢占式的,不支持独立线性地址空间,至于内存隔离保护,目前还不确定。
整个系统框架和模型还在思考中!呵呵,现在还在分析阶段! 多任务、且允许运行时任务加载的OS,若没有内存隔离保护,就会如同当年的DOS系统一样故障频发
线性地址空间确实未必需要,因为只要编译器支持代码完全采用相对转移(这个在GCC的话,需要设置参数)、局部变量均采用基于堆栈指针的相对寻址(这个几乎所有常见编译器都是如此实行的),并且编程时避免使用全局变量,那么统一编址的多任务也很容易
其实,不妨考虑用带MPU(或把MMU当MPU用,不过会比较复杂)的器件,如AVR32或流明的Cortex-M3(ST目前还没有带MPU的CM3器件)实现这个系统
另外,若以MPU方式实现,则可以很容易的在微核架构下实现高性能(因为上下文切换会很容易),因此其实类似文件系统、图形系统等内容,并不需要在一开始就确立实施 我目前初步设计的OS可以"同时"运行32个任务,每个任务有自己独立的动态堆和栈、支持任务抢占式调度和时间片调度 先参考现有的os,做出改进,集众家之。
可以使用ucos的内核,并加以改进,主要是借鉴他的调度算法和(部分)任务间通信算法,并对其进行加强,增加时间片调度,可以有相同优先级。他的内存管理简直是垃圾,参考linux的内存管理。
设备管理和网络参考linux的文件系统和网络。
图形系统参考minigui,使用消息机制,用c编写。
我们现在要确定实施步骤,要不先搞内核,确定内核的模型,做个框架出来,然后再搞图形,设备,网络吧! 【50楼】 superyongzhe 最后的骑士
先参考现有的os,做出改进,集众家之。
可以使用ucos的内核,并加以改进,主要是借鉴他的调度算法和(部分)任务间通信算法,并对其进行加强,增加时间片调度,可以有相同优先级。他的内存管理简直是垃圾,参考linux的内存管理。
设备管理和网络参考linux的文件系统和网络。
图形系统参考minigui,使用消息机制,用c编写。
我们现在要确定实施步骤,要不先搞内核,确定内核的模型,做个框架出来,然后再搞图形,设备,网络吧!
=========================================
内存管理方面,你小看ucos了……其实你恐怕并不明白Linux的内存管理对于实时操作系统来说到底意味着什么……更何况,你觉得,一个不支持进程独立线性地址空间的操作系统,可能实现Linux的内存管理方案么?
设备管理、网络和图形系统?个人认为,只要能先搞出一个稳定且精炼的微核,那么所有的外部设备(包括片内外设)的内容都可以迎刃而解……
其实,如果是采用MPU方案,则所有设备的驱动代码都可以以较高优先级任务的方式实现(MMU方案之所以必须把这些东西塞到操作系统内核里,那只是因为MMU方案下,上下文切换,特别是涉及用户态与核心态相互转换的上下文切换,需要太多时间代价而已)
依我的看法,首先写出一个具备任务加载及去除、任务调度、任务间通讯、事件、锁、内存管理和分配功能的微核,才是首要的 现在有一点可以确定的是先搞内核,按ls所说,就是首先是现实任务管理了?不知能否把你的方案说得更详细一点? 先做好最基本的功能'不要一开始就贪求太全~ 的确是,那我们现在统一的一个想法就是现做内核。内核一般主要有几个功能要实现:
1--任务管理,包括任务调度算法,任务模型,互斥和临界区,我想这个os可能只需要进程模型,线程估计就没必要要了。
2--内存管理,包括动态内存的算法,有必要实现类似于linux的动态内存算法,当然是进行取舍后的,不是照搬。
3--任务间通信,首先应该有信号量,消息队列至于其他的通信方式(如信号什么的)可以先放着。
我们可否先确定这三个部分的功能和模型?大家一起支招啊!
最后是关于实施步骤的建议:在这里讨论的人几乎都有自己的作品,我们分工根据大家讨论的模型在自己的作品上进行修改增强,进行试验,然后再发表到这里,再进行讨论,直至大家觉得整个内核的模型已经明确,然后再制定详细计划,真正动手。举个例子,lz先在你的gui上实现任务模型和算法,我在我的gui上实现动态内存算法。
这只是我目前的想法,大家提出建议吧! 个人建议:
1、不要做动态内存分配,只在任务初始化信息中包含数据段长度(含堆和栈)即可
2、可以以某个既有的RTOS为基础,没必要一切重做
3、最好初期便加入MPU或以MPU方式运行的MMU支持 回 【55楼】 watercat
我之所以如此重视内存管理是因为本来做的一个小系统就是因为没有内存管理而难以有高级的应用,如果内存管理方面没有进展的话,那和ucos有多大区别?我觉得这就是简单os之所以难以实现复杂功能的关键。
和你的建议综合在一起就是,我们现在仔细考虑一下内存管理的框架,期待您更详细的设想,我对mmu和mpu的理解很浅薄,前辈能否说得详细点? 实际上,OS不一定非要进行复杂的内存分配控制,因为就[简单的]OS而言,能够做到“实时性”才是更重要的
如果你确实需要在程序中使用较复杂的内存分配方案,不妨直接把malloc的功能做到你的程序内部,相当于在用户态进行内存分配控制(实际上,包括Linux在内,不以4KB为单位的内存分配仍然是通过用户态的malloc代码进行的),而对于系统来说,只要在程序运行前分配固定的数据空间,以及必要的时候,允许运行时进行有限次数、固定尺寸的数据段动态分配,就足够了 mark 慢慢学习 强悍,学习!! 最近几天没有发帖,不是说把这个想法给忘了,而是在了解国内嵌入式os状况。不看不知道,一看下一跳,已经有很多国人开始做嵌入式os了,而且还很不错,有rt-thread,djyos,kingmos等。看来我们没必要重头开始了,加入他们的开发行列吧!!哈哈!! LZ,你好!
我是ARM9的初学者,准备从SamSung的S3C2440开始着手。不知道使用哪种编译器和仿真器比较好?还请LZ给予指导下。 东东是好东东,最好了解的是透明效果如何做,谢谢分享 我在本论坛有发表过透明效果的实现方法. MAKR,都是牛人 Very Good 最近忙于一个新项目,耽误了不少时间. 再次看见lz。。。
再次感谢。。。 上面的谁有时间教我下S3C44B0X01L 能否直接读写 S3C44B0X01L ?? 能否给个联系号码?我的QQ>425491878 重谢!!!!!!!!!!!!!!! 谢谢分享!!!!!!!!!!!!!
页:
[1]