PGOS For Sunplus -- 面向16位嵌入式系统实时OS
西安科技大学PG盘古小组今天正式宣布,专为Sunplus SPCE061A设计的嵌入式系统实时内核 PGOS(版本1.0.0BETA1)发布了!!
PG小组希望大家都来帮助我们测试这个OS,并将您的测试报告以E-mail或者回贴的形式告诉我们,以便于我们更好的改进这套系统。今天可以提供下载的包括:
1) PGOS For Sunplus Version 1.0.0 BETA1 的全部库文件(在Sunplus GCC编译器下编译通过,没有任何Error和Warning)
2) PGOS Header File 这个是方便您开发基于PGOS的应用而提供的,目前我们提供的所有API均在这些文件中定义了。您可以自己查看。
由于时间仓促,我们还没有正式的程序员指南,例子程序也正在制作,相信不久就会提供下载。谢谢您的支持,也感谢Sunplus公司,为我们大家提供了这么一个优秀的16位嵌入式平台,让我们可以在其上尽情发挥。
(PS : 西安科技大学PG小组成员介绍 --
prostar :相信大家都比较熟悉他吧,他是这个论坛的嵌入式系统的斑竹,一直说做一个OS,今天终于实现了~呵呵
pglld: 一个算法狂人。为我们的PGOS实现了PreMALLOC技术。使得我们的执行效率完全可以和一些商业RTOS相比。
pgzn: 为我们实现很多系统调用,小伙子现在正在努力的制作《PGOS程序员指南》呢~~
pgwzp: 我们的后勤部长。给我们准备了空的实验室~呵呵~
好了,废话不在多说,现在就请你下载我们的PGOS~~一定要帮我们捉虫~~!!帮助我们更早的正式发布Realse版本!!
[upload=rar]viewFile.asp?ID=690[/upload]
PGOS :面向消费型嵌入式设备的实时多任务操作系统
PGOS是西安科技大学盘古小组开发的针对掌上消费型嵌入式设备的实时多任务操作系统。现在简要介绍PGOS的特点如下:
1) 体积小。专为嵌入式设备优化,可以应用到绝大多数对存储器有苛刻要求的场合。如掌上词典PDA,小型学习机,寻呼机,智能电子玩具,家用电器等。
2) 速度快。PGOS拥有一个特别优化的内核结构。我们独有的PreMALLOC™技术可以保证在系统初始化的时候就预先分配可能用到的内存,以此加速其他的后期操作,如创建任务等。这样一来,我们可以保证系统的绝对运行速度。其次,对所有大量执行的函数,我们都使用了汇编语言直接实现。
3) 适用面广。目前PGOS已经再Sunplus公司的unSP™系统CPU上实现,并计划移植到INTEL x86,ARM,MIPS等主流CPU之上。对于使用我们的系统的用户来说,广泛的CPU支持甚至为用户提供了“Write once,run anywhere”的可能。
4) 完全的多任务内核。PGOS在设计之初就强调为程序员提供一个完全的多任务执行环境。这将彻底改变嵌入式软件,尤其是给面向低端嵌入式设备软件的开发带来一场革命性的突破!彻底忘记中断和轮询吧,现在PGOS给程序员们带来了更好的多任务支持!
5) 易学易用。PGOS考虑到用户中可能会有大批的入门级用户,所以我们在设计API的时候,尽量设计的简单易用。我们有一个设计原则贯穿始终:Programmer Is First !
6) 更高安全性。PGOS不允许用户直接操作硬件。这也许会另一些程序员感到不习惯,但是随着时间的推移,他们会感到这样带来的安全性提高的并最终习惯这种规定。事实上,PGOS为程序员们准备了丰富的系统调用,完全可以不借助硬件完成大多数的功能。
7) 加速产品开发周期。使用嵌入式操作系统后,开发人员可以将精力集中到最需要的地方去,而不必拘泥于系统问题。大大缩小开发周期,保护用户投资。更快的比竞争对手开发出更好的产品。
《PGOS程序员指南》很快就可以和大家见面了,PGOS在设计上借鉴了uC/OS-II的一些思想。但是大多数的功能都是全新的。以下是一个简单的例子:
#include "pgos_all.h"
void fun1() ;
void fun2() ;
INT`16U fun1_stk[64] ;
INT`16U fun2_stk[64] ;
int main()
{
pgos_init() ;
CreateTask( fun1,(void * )0,&fun1_stk[63],2 ) ;
CreateTask( fun2,(void * )0,&fun2_stk[63],1 ) ;
pgos_start() ;
return 0 ;
}
void fun1()
{
for( ;; ) SuspendTask( 1 ) ;
}
void fun1()
{
for( ;; ) ResumeTask( 1 ) ;
}
上面的Example程序创建了两个任务fun1和fun2,很简单,fun1不断挂起自己,而fun2则不断的恢复fun1,由于fun1的优先级高于fun2,所以应该看到程序不断的在fun1和fun2中切来切去。
个人非常支持在学生阶段就做这样的实践,脚踏实地的做一些比较有意思的东西,而不是浮躁的把时间都花在涉猎所有的所谓新技术,当然这是我个人观点。
所以我觉得盘古小组做这样的事情非常有意思,希望你们能坚持下去,既然开了个好头,就再接再厉把。我看了一下你们的head file,发现提供了任务机制,并且有优先级概念,IPC大概提供了类似Mailbox的东西,不过没有看到mutex和semaphore。帖子中所提及的PreMALLOC看起来像内存分配算法,不过我没有看到对应的API,也许是你们内部使用的(或者和Task Schedule有关,个人很感兴趣你们使用的是那种算法,类似ucos还是时间片轮转?),若是很有特色可以说得更详细些。
好好加油吧。
谢谢您的关注,这个其实是我们为了参加一个嵌入式软件比赛而准备的东西,目前的版本是BETA1。PG小组全是一些就要毕业的大四学生。下面我来回答一下您的问题 :)
1) PreMALLOC技术的确和内存分配有关,我们用它实现了一个没有公开的系统调用。该系统调用用于实现公开的系统调用pgos_init()。
2)关于临界区和信号量这样的东西,其实我们在内部的版本中已经初步实现了,只是目前自己也还在测试,而且我们发现我们的pgos_cre_mutex()总是当机,所以没有发布在BETA1中,BETA1中发布的库函数全是经过我们内部测试的,这才拿出来公开测试。没有通过内部测试的API绝对不会拿出来公开测试的。
3)关于我们的任务调度算法,我详细说明一下。uC/OS-II使用了基于优先级的抢先式算法,该算法带来的好处是显而易见的:可以保证关键任务的实时响应特性。但是他的缺点也是非常明显的:那些优先级低的任务很可能的不到足够多的执行机会。我们在BETA1版本中实现了基于优先级的抢先算法,而现在正在内部测试的BETA2版本则对不同优先级的任务使用抢先算法,而对相同优先级的任务使用时间片轮询算法。另外我要说明一下,如果你在BETA1中创建相同优先级的任务,那么函数会返回一个错误。但是系统内部实现已经严格区分了任务ID和任务优先级的概念,而在uC/OS-II下,任务ID也就是任务的优先级。在下一个版本的pgos下,就会允许用户创建相同优先级的任务了。
先提供一个简单的Example程序
/*
PGOS Test programme version 1.0.0
PGOS -- The real time operation system for embeded systems
Designed by XUST PanGu Team .
Programmer :
Xiaochen Xin xinxiaoc@china.com.cn
Luodan Liang abbreviation2003@yahoo.com.cn
Nan Zhang
Zhengpeng Wang wangzhengzai0803@126.com
Thanks To :
Sunplus University Programme
Fanjing Meng -- Special thanks to her( give us a free space to work
)
*/
#include "pgos_all.h"
void fun1() ; // User task 1
void fun2() ; // User task 2
INT16U fun1_stk[32] ; // Stack for task 1
INT16U fun2_stk[32] ; // Stack for task 2
////////////////////////////////////////////////////////////
//
// MAIN PROGRAMME
//
////////////////////////////////////////////////////////////
int main()
{
// Initltze the PGOS -- Useing the PreMALLOC Technolog
pgos_init() ;
// Create task --
CreateTask( fun1,(void *)0,&fun1_stk[31],2 ) ;
CreateTask( fun2,(void *)0,&fun2_stk[31],1 ) ;
// Initlize the system timer -- Here is 8Hz
pgos_init_timer() ;
// Start Your High Ready Task !!
pgos_start() ;
// Will never run here !!
return 0 ;
}
//////////////////////////////////////////////////////////
//
// This is the user task 1
//
//////////////////////////////////////////////////////////
void fun1()
{
for( ;; )
{
// Note : Every embeded programme must be a infinite loop .
SleepTask( 1,5 ) ; // sleep , PGOS will switch to next high ready task
}
}
//////////////////////////////////////////////////////////
//
// This is the user task 2
//
//////////////////////////////////////////////////////////
void fun2()
{
for( ;; )
{
Watchdog_Clear() ;
SleepTask( 2,3 ) ;
}
}
置顶!!!!可惜流星出差了:(
支持!
[upload=rar]viewFile.asp?ID=696[/upload]
发布例程两个,一个是Getting Started,另一个是Task Switch。希望对您的开发有所帮助。
顶了 先 呵呵 加油呀
如果加上组件 做总线扩展 然后在把GBA上面简单的游戏移植过来 呵呵 就好了
呵呵
GBA是ARM的处理器,所以不太可能移植,毕竟那是32位的CPU撒……
版权归PG小组,目前不需要任何费用
支持,非常有意思。
我运行了上面的例程,速度挺快的。
希望编程手册上有较多的例程,以帮助我们全面
了解PGOS带来的unSP编程新方式
好久没见这样的好贴了,高兴!
再接再厉,祝你们在嵌入式大赛上大获全胜。
圣诞将至,祝大家圣诞快乐!
又是几天没来(不对,是几天没用这id),没想到竟然给置顶了 …… 真的非常感谢斑竹们噢!
恩,现在给大家介绍下最新的进展吧!
1)编程手册已经完成了一些,今天就可以给大家提供下载了。哈哈!就在下个帖子噢!还包括一个完整的使用Sunplus 61版的例程,使用了LED扩展扳。例程内同时集成了我们提供的LED Extended Board Driver For PGOS。都是源代码噢!下回去仔细看看我们的Readme。
2)PGOS 1.0.0 Realse版 已经进入了最后的Final测试阶段。很快就会有提供了。在这个版本中,我们的主要进步如下:
《一》修正了任务切换时候的BUG。表现方式为有时候无法正确切换到空闲处理。原因在于我们过分信任C语言的数组处理能力,呵。责任在我写的代码上,已经被check out & fix了。目前的大家手上的BETA1存在这个问题,不过我们提供的Example都不会触发这个问题。
《二》新增加4个同步类函数。
感谢大家支持我们的计划!PGOS将永远保持免费的特性。不过我们计划引入GPL来规范开发。哪个时候,PGOS就会做为一个开源(是的,开放源代码!)的项目而存在。我们欢迎有兴趣加入PG Team的朋友和我们联系。共同推动PGOS的发展,要知道,目前它很不完善,我们最近都在找工作,的确耽误了点开发。目前PG小组还只有我签了工作,呜。
对了,我们目前非常需要这样的人加入我们PG Team,参与开发。当然,是无偿的哟,大家都是为了兴趣嘛!
1) 熟悉OS内核的牛人
2) 熟悉代码优化的超牛人(紧急!!!!!!!!!)
请下载
[upload=rar]viewFile.asp?ID=1119[/upload]
我晕,上面的帖子竟然忘记点“上传”就发了,请斑竹删吧!呵呵,这个才是下载
PGOS86 For Intel X86 Preview版本
API全部重写。更加安全,更加稳定。使用Watcom C/C++ Compiler编译
[upload=rar]viewFile.asp?ID=1157[/upload]真是不错,有这么大的干劲。待我熟悉了凌阳的OS,再来用你们的。
很就没有向大家报告PGOS的最新进展了,目前PGOS为了快速推广,开始全力完善x86版本,等x86版本成熟后立刻移植到包括unSP(TM)再内的众多CPU上。
目前我们在x86上几乎可以现代操作系统的一切先进的特性,包括信号量,互斥这样的东西。目前开发的重点是范例应用,图形用户界面,文件系统等。相关的信息,下载,以及加入我们的团队,请访问:
http://gro.clinux.org/projects/pgos/
顶
在那能下载啊???
我说几句!
有没有教程呀!
那是什么软件?好用吗?我下了,没研究明白!见笑了!但是我很想学习!我刚刚学完单片机,不知道这是干什么的?
[em03][em03]我要学习了阿
不错得想法,我会花点时间读读你们的代码,
希望你们在毕业之前能出个能较好运行的版本
哇
这么狠阿!库都给屏蔽了呀,让我们找BUG,原代码也不公开,没的看偶
要想学习RTOS,大家最好是去看看UCOS/I,有教程有原代码有事例,I