uc游戏如何开发
① uc浏览器如何唤出开发人员工具
亲,您好。目前UC浏览器开发者工具仅支持在极速模式下打开,支持以下三种方式打开:
1.CTRL+SHIFT+I
2.F12
3.网页空白处右键--检查
② uc刘览器靠什来营利
UCweb的营利模式
一,流量付费:着力打造wap网络入口盈利模式完全可以借鉴hao123,向网站收取流量费用。
二,搜索引擎合作:比如1000次或100000次搜索收取搜索引擎多少钱。网络和Google都开展了相应的手机搜索业务。
三,用户收费:学习qq,对用户进行区别化。高级用户付费-为更快的浏览速度买单,为更炫的功能买单
四,内容收费
五,电子商务:和支付宝结合六,广告联盟
而在2004年10月推出手机浏览器的UCWEB开始做大。2006年底,在雷军等天使投资人的帮助下,UCWEB砍掉了公司的其他业务,将几乎全部的精力投入到了手机浏览器的开发上。在发布新版手机浏览器之后,UCWEB的用户数以每月30%的速度高速增长。2007年8月,UCWEB拿到了晨兴投资和联创策源合计1000万美元的投资。2008年的一系列大事件使得UCWEB的访问量骤增,到目前为止累计激活用户已经超过7000万,其中活跃用户更是超过3000万,成为国内排名第一的手机浏览器。那么,为什么如此多的厂商对手机浏览器有着如此浓厚的兴趣?他们认为,未来移动互联网将会超越固定互联网——在日本,移动互联网网站Mixi已经超越所有的固定互联网网站,成为日本第一大网站。回想当年,意气风发的Netscape公司正是依靠Navigator浏览器,差一点在固定互联网颠覆了微软的统治。
与固定互联网类似,移动互联网也有三种典型的盈利模式:一是作为媒体由厂商投放广告;二是最终用户直接体验某项服务如体验流行歌曲,体验后付费;第三就是作为移动电子商务的平台向达成买卖的双方收费。
而通过控制手机浏览器,也就能够控制住移动互联网的入口。
对于主要收入来自手机浏览器的Opera来说,它的收入主要来自两方面:一是典型的软件授权模式,手机厂商或者定制手机的移动运营商在手机中预装了Opera手机浏览器,就必须向Opera支付一定比例的软件授权费。另一个方面就是Opera浏览器的首页预装了谷歌地址搜索栏,当手机用户进行搜索的时候,谷歌会给Opera一定比例的分成。当然,目前第一方面的收入远大于第二方面。
无论是3G门户、UCWEB还是腾讯,他们都是“醉翁之意不在酒”,其实他们不仅仅把手机浏览器当做单纯的产品或者技术平台,而是要将其作为整合旗下所有移动互联网业务的业务平台,他们最终的收入将来自于各种各样的移动互联网业务。
如今,在国内移动互联网领域名列前茅的3G门户开始尝试将流量变现的好办法,它首先开发了自己的门户价值,也就是媒体价值。打开GO浏览器首页进入左下角的”应用”,除了能够看到天气预报、新闻、股市、星座等内容之外,还会看到“GE梦想启动未来”的Flash广告。如果继续点击这个广告的话,客户就会通过GO进入3G门户GE专区,看到更多GE的内容。在GO发布会现场,除了GE广告公司的负责人之外,建行的相关负责人也到场祝贺,并对这种全新的广告形式表示出了浓厚的兴趣。
当然,UCWEB也在进行类似的卡位动作。打开UCWEB浏览器,除了移动上网和移动搜索之外,浏览器的主菜单里面还集成了电子邮箱、新闻资讯频道、音乐频道、手机游戏、手机视频等多项应用。此外,UCWEB还发布了一款手机桌面软件,可以用Push的方式向手机用户的手机桌面上推送天气预报、新闻等内容。显然,UCWEB也是希望消费者能够在上面获得所有需要的内容。
与阿里巴巴的合作则是UCWEB转向电子商务的开始。通过将阿里巴巴旗下的淘宝网、支付宝等植入手机浏览器,UCWEB将帮助客户们通过手机而不仅仅是电脑进行电子商务,并赚取其中的手续费收入。“UCWEB会通过和淘宝合作,提供比一般手机(不适用UCWEB的手机)更好的体验和更强大的服务。”UCWEB公司CEO俞永福表示。
因此,这场起源于手机浏览器的战争其实早就已经不限于浏览器,而是在更为广阔的战场上展开。业内分析人士认为,当3G发展起来,浏览器和客户端不存在谁取代谁的问题,都会存在下去。但是在手机上,客户端一定会越来越成为用户最经常使用的切入点,浏览器一统天下的可能性在手机上是不会继续的。
与合作伙伴,UC有几种合作模式,一种方式是出租平台上的位置,以换取广告收入。俞永福坦承,目前除了与手机厂商进行产品预装合作外,广告业务是UC重点关注的盈利方式之一,但“UC一直有一个坚持,就是不做硬的广告,我们的服务都是融入到用户需求之中的”。比如,UC与网络等搜索引擎开展合作,此举可通过浏览器产生的流量参与搜索引擎公司的广告分成。
另一种方式就是,提供一些不与商户竞争的增值服务来获得现实收入,比如网络服务,包括服务器和技术支持。如果有搜索类的企业未来要做照片搜索,那么UC就必须能够支持手机拍摄的照片上传到对方的网站去。“多数人需要的服务不收费,少数人需要的服务就要收费了。”俞永福说。2009年,UC和阿里巴巴进行了合作,从而使电子商务有可能成为UC探索新获利来源的一个突破口。双方希望打造一个移动互联网环境下的电子商务平台,阿里巴巴将旗下的淘宝网、支付宝等植入UC浏览器,客户就可以通过手机在互联网上进行交易了。按照现在电子支付的行规来看,提供通道的服务商,可以从交易额中获取一定的收入。
面对目前在手机上应用前景最好的手机游戏,UCWEB开发定位于第三方游戏公司的网页游戏平台,在解决支付等核心问题以后,不仅能与第三方游戏公司以分成的模式铸就这个产业的更多繁荣,也可以更好地把用户黏在UCWEB上。除此之外,雷军凭借其在电子商务方面的资深经验,完全可以打造一个在手机上的电子商务平台,成就手机上的另外一个淘宝
一旦QQ手机浏览器采用开放式经营策略,不但UCWEB成为下一个的GOOGLE的美梦将破灭,甚至对整个中国3G移动互联网的竞争格局都将造成深远影响。
内测版的QQ手机浏览器只实现了WAP浏览、导航、下载和实用信息查询等少数功能,看似简单,实际却延续了马化腾做产品的一贯思路,即立足于产品对用户的核心价值,在核心功能的设计与开发上务求完善。
手机浏览器的核心价值是什么?是工具,是一个让用户可以更加方便、快捷、高效的通过手机上网来获取自身所需信息的工具;是窗口,是一个让用户能够集中快捷的获取各种移动互联网应用的窗口。手机浏览器的核心功能是浏览和导航,产品做得好不好,关键是看其能否真正做到方便用户,满足用户对手机浏览器最核心功能的需求。是以用户为中心,还是猛打自己的小算盘,是产品能否赢得用户口碑的关键,如果仅从服务用户的产品设计思路来看,QQ手机浏览器内测版无疑已经超越了目前国内所有的手机浏览器,这突出表现在其浏览功能、导航功能和按键设置三个方面。
从导航功能来看,其分类收录的内容基本都是目前国内移动互联网领域最常见,最受手机用户欢迎的主流应用,包括新浪、搜狐等竞争对手,排除了狭隘的门户之见,完全站在用户的立场上来考量。这一做法与UCWEB对与自己没有业务往来的着名应用不做推荐,或基于广告收入而将一些不知名的站点强行推荐给用户的行为相比,无疑更能满足用户对手机浏览器功能的需求;
从内测版来看,腾讯想把QQ手机浏览器建成一个开放式移动互联网业务平台的用意非常明显,这个平台不仅服务腾讯,也服务于所有其它移动互联网公司。预计整个计划将分两步走,第一步是取代UCWEB的霸主地位,具体步骤是依托腾讯的庞大用户群,整合强大产品与营销资源,迅速将手机QQ浏览器向市场推广开来,做大用户数和流量。在控制用户的同时推行开放的市场策略,以合作的形式与国内其它移动互联网公司进行资源交换和利益捆绑,通过对用户手机上网入口的控制,建立腾讯对行业的影响力,使QQ手机浏览器成为行业内最有影响力、占绝对主导地位的移动互联网业务平台。第二步则是挟平台以战巨头,与中国移动、联通等官方电信运营商和GOOGEL、微软、苹果等国际巨头在中国3G移动互联网市场展开激烈竞争,并最终成为中国3G移动互联网市场排行前两位的移动互联网业务运营商。
3G时代,腾讯将不再满足与新浪、搜狐等在提供什么样的移动互联网应用这些较低层面的竞争,而是想通过控制手机用户上网入口来占领3G置高点,获得对中国移动互联网市场更大的影响力和发言权。表面上看,QQ推出手机浏览器直指UCWEB,可实际却是项庄舞剑,意在沛公。在马化腾的眼里,UCWEB可能是一个可敬或可借鉴的对手,但绝对不是最终的竞争对手。
在俞永福看来,09年将是优视动景(UCWEB)公司做“现金流”的时期,但绝对不会向用户收费。而是借鉴Firefox、傲游等PC浏览器的赢利方式,在浏览器上内嵌搜索框,UCWEB上可以看到网络、Google、易搜、有道等搜索引擎,由此收取搜索引擎的费用。此外,UCWEB还提供像hao123、265一样的站点导航服务,从流量中获取利润、跟运营商展开业务合作等等。
大力发展手机广告。如今,空中网转型的产物Kong.net在手机广告方面的成效已经取得了初步的进展:根据其近日发布的二季度财报显示,空中网手机广告营收为35.7万美元,比第一季度增长68%,这是继第一季度无线广告收入下滑后的大幅增长,由于奥运营销刺激广告主投放,为空中网带来了实际收益。
广告似乎是互联网、移动互联网不可突破的商业模式。诚然,中国的网民已经习惯了免费的“网”餐,向用户收费之路显然行不通,发展广告无疑“似”最为有效的。在行业政策稳定、发展环境趋于理想化的今天,移动互联网企业该如何真正走出从“人流”到“现金流”关键模式之困、走模式多元化之路?
国内知名的手机娱乐生活社区百阅,也在追寻答案。百阅联合创始人叶逸飞谈到,除了广告的模式,百阅也在对其他的商业模式进行一些探索,比如在社区中建立手机电子商务平台、在社区中销售各种虚拟道具、发展百阅虚拟货币体系、展开虚拟游戏运营等等,据其称,目前这部分收入虽然不及广告收入,但“至少给百阅探索新的盈利模式带来了很多的可能”。
现在的中国网络游戏市场仅仅单独依靠游戏产品来竞争市场份额,风险较高,用户完全跟着单个游戏产品流动,不易形成稳定长期的付费回报率。网游公司要盈利,抓住用户资源才是关键,在当前的市场趋势下,盛大、完美等公司已经在朝互动娱乐和社区交友产业发展,走整合营销路线。无论是网络文学,影视作品还是社区交友等,其目的都是培养玩家的粘性和忠诚度,并且丰富自己的产业结构,形成新的企业运营模式。而九城和网龙等纯以游戏产品为盈利的网游运营商都面临着2009年度盈利能力下降的危机,企业转型,走整合营销和联合路线应该是网络游戏市场的新动态。
③ ucole怎么做游戏
ucole游戏开发实际上是分阶段:
1、用别人的画,做出核心玩法,让亲朋好友去体验和反馈。
2、增加周边功能。比如注册、登陆、统计、分数、语音、第三方SDK等。
3、优化游戏体验。特效、换成自己的画面。
4、小范围测试、规模测试等,修改BUG。
5、发布游戏。
④ UC小游戏怎么进入 UC小游戏入口在哪
需要工具:手机、UC浏览器
一、打开手机上的uc浏览器客户端。
⑤ UC安卓浏览器插件开发
UC安卓浏览器插件开发:
如图所示,便是UC的插件面板。 UC通过开放浏览器插件api, 使开发者能够进行插件的开发。
当建立一个android工程后,只有这四个地方需要进行配置。 首先在android工程的配置文件AndroidManifest.xml中,需要加入如下代码:
<service android:name="com.uc.addon.sdk.remote.AddonService">
<intent-filter>
<action android:name="com.uc.browser.action.Addon"/>
</intent-filter>
</service>
这样插件才能被浏览器识别。
然后分别开发extension和receiver。 (有时根据需求只需其中一个就够了)
首先是extension, 你的extension类必须继承于AbstractExtension类,并且override onInvoke()方法 。
public class NewTabDemo extends AbstractExtension {
...
@Override
public void onInvoke(){
}
..
}
onInvoke中的内容就是点击该extension后触发的操作。
然后是receiver . 相对的,receiver需要继承AbstractReceiver 类,并重写onEvent方法:
public class MyEventReceiver extends AbstractEventReceiver{
...
@Override
public void onEvent(int eventId , EventBase event){
if (eventId == EventIds.EVENT_PAGE_START) {
...
}
}
}
⑥ 如何使用 UC浏览器开发者版 进行移动端调试
1、一台PC、一台手机
很显然首先你得需要一台 PC 机,一台手机,并把它们连上同一个网段的网络(推荐做法,也可以 USB 连接调试,详见UC浏览器开发者版)。
2、PC、移动端文件安装
毫无疑问,移动端需要安装UC 浏览器开发者版。而 PC 端需要安装ADB工具,是个压缩文件,解压后双击 exe 文件就 OK 了。
3、调试
准备工作完成,接下去就是激动人心的调试环节了!
首先在移动端打开安装的浏览器,打开需要调试的页面。
接着我们打开 PC 端的 chrome 浏览器(Safari 也可以,建议 chrome),在地址栏输入手机IP+:9998,比如我的是http://192.168.23.10:9998/。我在手机端打开了两个网页,在 PC 端显示如下:
PS:在我的机器上 chrome 面板(Elements 模块)展开不好用,需要双击,而且双击展开后就关不上了。
UC 浏览器开发者版调试也有两个明显的缺点:
仅支持安卓机
无法做到浏览器兼容(比如程序只在 Safari 上出了问题)
⑦ UC怎么使用啊
UC其实就是QQ的翻版你先安装好UC软件然后申请UC号就和QQ一样的登陆,加好友和QQ一样输入UC号查找或者就点查找在线的UC用户。以下是UC的特点:1.八面玲珑多面手因为UC的功能强大,在使用时用户有可能会打开很多窗口,有时在普通状态下切换功能窗口很麻烦。针对这一点,开发商早为用户想到了切换窗口的快捷方式。在主面板上方有一个“窗口列表”按钮,用鼠标点击它一下,原来显示用户列表的位置,如今变成了窗口列表。想切换到哪个窗口,只要用鼠标点击一下选定的名称,再在弹出的菜单上点“定位窗口”就行。要是想关掉不用的窗口的话,点“结束窗口”就行。呵呵,挺方便吧?如果想恢复正常的状态,点击“窗口列表”左边的“好友列表”就可以。 2.轻轻松松传文件 用“文件传输”给好友传送东西时,你是不是每回都要一步一步的点击文件传输窗口的“加入”按钮,然后再用浏览文件夹的方式找到想发送的文件,再点“打开”,将文件加入到发送列表中?有没有觉得特麻烦?告诉你吧,UC的文件传输支持用鼠标拖动的方式,你只要把想发送的文件直接拖动到文件传输对话框中,就可以给对方发送文件,而且点击右下角的图标,还可以将文件传输窗口设置成始终显示在桌面的最上方,先用此功能固定住窗口,然后再拖动想发送的文件,就可以避免在查找文件时“文件传输”窗口容易最小化的麻烦。用直接拖放文件的方式,给好友传送东西是不是比老方法方便多了3.杀手绝活老板键 是不是有很多人在工作之余上网聊天?嘘……这话要小声点儿说,现在很多单位都明令禁止上网聊天,被老板听到了可不太好啊,要不这月的奖金肯定没了。我可不怕,因为UC有“老板键”顾名思义,这当然是对付老板的啦。只要轻轻一按Ctrl+Alt+S,屏幕上的UC窗口就会消失得干干净净,保证不会被Boss抓到,呵呵,这可是我的看家法宝,不要告诉别人哟。4.浮出图标小而简不知大家注意没有,拖动UC好友列表的头像,可以在桌面上形成用户浮动图标。可以将常聊天的几个好友拖到桌面,形成浮动条,收到好友消息时,一目了然。5.多人世界尽欢言 想多个好友在一起畅所欲言吗?除了使UC的自建聊天室之外,你还能创建多人世界邀请好友文字聊天,多人世界是UC2.40版新开发的功能,可以支持最多10个好友同时场景聊天(图2),娱乐互动效果是聊天室所无法比拟的。据可靠消息,UC支持多人语音聊天功能也正在研发中,嘿嘿,是不是有些迫不及待了?6.精美皮肤自己做 你还不知道吧,在51UC网站上,已发布有皮肤编辑器,利用它大家可以制作任意形状的UC皮肤。可以是固定不变的单窗体,也可以做成像官方发布的皮肤那样采用弹出用户列表形式,外观还能制成任意样子,甚至可以将UC皮肤制成Windows窗口的模样。换上你秘制的皮肤,再配合UC的老板键功能,就算当着老板的面聊天他也无从察觉(呵呵,此操作有一定危险系数,请15岁以上成年人不要模仿)。做UC皮肤,只有你想不到的,没有做不到的^_^。大家还可以将自已精心制做的作品上传到51UC网站,通过网站发布,然后用群发消息通知好友下载,只要作品够棒,你绝对能美名远扬哟。51UC网站还提供有许多网友制作的皮肤,千奇百怪,应有尽有,闲暇无事时,大家也可以下载下来欣赏品味一下。7.聊天信息随手呼 UC的场景聊天充满个性,在文本聊天的基础上充份利用了声音、图像的多媒体效果,和互动技术。给使用者一个全新聊天感觉,可惜场景窗口太占地方。唉! 鱼与熊掌不可兼得,我只好在平时使用时选择对聊模式,相信许多其它用户都和我一样有如此明智的选择。只是不晓得大家注意过没有,每回收到信息时右下角的图标闪啊闪的,非得用鼠标点一下才可以显示出来。其实这方面也有快捷键的,只要按一下Ctrl+Alt+Z 就可以呼出收到的聊天信息,可能是照顾用户的使用习惯,UC的这个功能是和QQ兼容的,另外,Ctrl+Alt+Z 的快捷方式还可以用来呼出息统消息。 8.隐身登录无影踪 想及时接收信息,又不想被别人打扰怎么办?最好的办法就是隐身登录喽。什么?别告诉我说你不会啊!!其实用“隐身”的方法登录UC很简单,在点击桌面上的UC图标时,可以看到有“自动登录”和“隐身登录”两个选项。只要在“隐身登录”上打钩就可以用隐身的方式登录UC,这样你在好友那面显示的状态就是“下线”了。如果你当时没在“隐身登录”上打钩,可以用鼠标右键点击UC主界面右侧的“在线心情”再点击弹出菜单中的“隐身”就可以。这时从对方的UC中会看到你已经下线。呵呵,至于“隐身”的好处我就不多说喽,慢慢体会去吧您的。9.省时省力发消息 有些公司信息要及时传达给同事,想把好玩儿的笑话发给所有UC好友组的朋友们,你是不是还在用老套的E-mail ? 是不是还手动一条条的给好友发信息 ?省省吧,用UC的消息群发,写上想说的话,再点几下鼠标,选定发送对象就可以轻松搞定,省时又省力。10.省时快捷注新号 UC这么好用,当然要多注册几个靓号留着以后送人,可每回注册时,默认的密码保护功能要求要输入身份证号码,这也太影响工作效率喽,没关系,只要在用户注册窗口中将“密码保护”中的钩去掉就可以跳过这步。以后需要密码保护功能,可以通过UC主界面上的选项重新申请。在UC操作界面中,点击主菜单以后你会看到有“密码保护一项”,选择此项后就会进入“修改密码保护信息”窗口,只要在这里输入相关信息就可以申请密码保护功能了。需要大家注意的是,找回密码时,您的用户信息是直接显示出来的,并不发送到你所预留的邮箱。11.在线心情任 我换想不想在对方的好友列表中显示出你的在线心情?UC提供了此类功能。用鼠标点击主菜单右侧的在线状态,会弹出在线心情的选择菜单,点击“新信息状态”就会弹出输入文字的对话框,可以在这里输入最多10个汉字的心情状态。并且可选择是“在线”还是“离开”的在线状态,在“立即应用该状态”上打钩,你就可以马上看到所设置的状态了。12.游戏插件轻松用 UC最令人振奋的就是游戏功能,由官方网站提供的游戏游插件可绝不是那种粗制滥造的伪劣产品,做工绝对精细,有好多功能可由用户随心选择。像服务器端的开放权限设置和OP权限管理我在这里就不多说了,主要和大家讲讲一些容易被忽略的小地方。在中国像棋中,棋盘的右侧有纵向排列的三个按钮,可以通过它进行:显示对战棋谱、显示聊天信息和隐藏功能面板等操作。还可以将记录的棋谱按动画方式显示。创建UC五子棋游戏时,在“创建新游戏”的设置窗口中,创建者可以通过“时间限制”选项,设置思考时间,当下棋双方有一方的思考时间超出范围,就可判负。进入五子棋游戏中,右键点击选中的用户昵称,选择“查看积分”可以看到该用户在当前五子棋游戏中的胜负情况。通过鼠标右键点击棋盘弹出的菜单,会调出颜色管理器,可以通过它重新设置边框和背景网络线的颜色。13.视频电话随便调 使用UC的视频电话功能时,默认设置是只显示对方传来的图像,看不到自己摄像头拍下的是什么情形,是不是心里怪怪的,总会想“拍到的东西在对方那里是什么样子?”之类的问题? 呵呵,有这种想法的人肯定没注意观查,在视频电话的功能窗口左侧靠下方,有“我的视频新窗口’”和“本地视频画中画”两个图标按钮。可以通过这两个按钮来选择是开一个单独的窗口显示你本地摄像头拍到的画面,还是将本地画面和对方传来的图像集成在一起显示。用鼠标点击窗口右侧的“视频设置”和“音频设置”,在弹出的对话框中,还可以对视频电话的默认置做修改,并且可以设置成传送大图像。14.备份信息不丢失 UC可不仅仅是用来聊天的,有很多时候大家会用来和朋友进行联络,甚至谈一些很重要的事情,这时就需要将聊天信息备份出来了,不然万一出点儿什么问题,聊天记录丢掉了怎么办?想保存聊天室聊天记录的话,可以点击聊天室左上方的“功能”选项,在弹出菜单中选择“保存公众信息”可以将“公众聊天信息窗口”中的内容备份,选择“保存私聊信息”可以将“私聊窗口”中的聊天内容备份,备份的文件以 .rtf 格式存贮,在不登录UC的情况下,能用WORD直接查看。如果需要保存文本聊天的内容,可以用鼠标右键点击UC主菜单中的“消息管理”,再点击左侧的“文件”选项,通过“导出至文本文件”选项将聊天信息保存成扩展名为 .txt 的文本文件,若选择“导出全部”则将UC接收发送的所有信息记录导出,选择“导出选中部分”选项则只会导出用户鼠标选中的部份信息。+此外,在2.40版以后的UC中,消息管理器还支持搜索功能,你可以写入想找的内容,在众多聊天记录中查询,十分方便。15.自动更新省力气 现在当前提供在线更新的聊天软件极少,6MB左右的文件,要是每回升级都要在网上重DOWN而又赶上拔号的话,肯定特别麻烦。其实UC有在线更新文件的功能,而且能自主设置更新的时间间隔。用鼠标点击主菜单中的“系统设置”,从左侧的下拉菜单选“更新”,会出现更新计划的选项,默认为“每周进行一次版本检察”,可以选成“每天进行一次版本检察”或“自定义版本检查周期”在自定义选项中,可以从1天到30天自由调整自己认为合适的时间段。16.好友分组智能化 知道吗?UC可以对好友分组进行权限设置,能够对选定的组进行操作,设置成自动接收文件。用户鼠标右键点一下先定的用户组,会看到弹出的菜单中有“组信息”字样。可以在点击“组信息”窗口中弹出的菜单中对该组好友的“文本聊天”“视频电话”“文件传输”等操作进行统一设置。还可以把用户修改本地好友昵称的记录保存在服务器上的功能,这样更方便用户的操作。其实UC还有许多有意思的功能等待大家来发掘,UC的用途也不仅仅局限于聊天,她吸纳百家之长,完备的功能可以满足网上即时通讯的各种需求,又具有开放式接口设计,真正可以做到无限功能扩展,是一个全新的网络通信平台。让使用者真正体验全新网络生活的互动乐趣。
⑧ uC/OS-II的开发笔记
uC/OS-II是一个简洁、易用的基于优先级的嵌入式抢占式多任务实时内核。尽管它非常简单,但是它的确在很大程度上解放了我的嵌入式开发工作。既然是一个操作系统内核,那么一旦使用它,就会涉及到如何基于操作系统设计应用软件的问题。 void task_xxx(void *pArg){/* 该任务的初始化工作 */…… /* 进入该任务的死循环 */while(1){……}}
每个用户的任务都必须符合事件驱动的编程模型,即uC/OS-II的应用程序都必须是“事件驱动的编程模型”。一个任务首先等待一个事件的发生,事件可以是系统中断发出的,也可以是其它任务发出的,又可以是任务自身等待的时间片。当一个事件发生了,任务再作相应处理,处理结束后又开始等待下一个事件的发生。如此周而复始的任务处理模型就是“事件驱动的编程模型”。事件驱动模型也涵盖了中断驱动模型,uC/OS-II事件归根结底来自三个方面:(1)中断服务函数发送的事件(2)系统延时时间到所引起的(3)其它任务发送的事件。其中“中断服务函数发送的事件”就是指每当有硬件中断发生,那么中断服务程序就会以事件的形式告诉任务,而等待该事件的最高优先级任务就会马上得以运行;“系统延时时间到所引起的”事件其实也是硬件中断导致的,那就是系统定时器中断。而“其它任务发送的事件”则是由任务代码自身决定的,这是完全的“软事件”。不管“软事件”还是“硬事件”,反正引起uC/OS-II任务切换的原因就是“事件”,所以用户编写应用代码的时候一定要体现出“事件驱动的编程模型”。 互斥信号对象(Mutual Exclusion Semaphore)简称Mutex,是uC/OS-II的内核对象之一,用于管理那些需要独占访问的资源,并使其适应多任务环境。创建每一个Mutex,都需要指定一个空闲的优先级号,这个优先级号的优先级必须比所有可能使用此Mutex的任务的优先级都高!
uC/OS-II的Mutex实现原理大致如下:当一个低优先级的任务A申请并得到了Mutex,于是它获得资源访问权。如果此后有一个高优先级的任务B开始运行(此时任务A已经被剥夺),而且也要求得到Mutex,系统就会把任务A的优先级提高到Mutex所指定的优先级。由于此优先级高于任何可能使用此Mutex的任务的优先级,所以任务A会马上获得CPU控制权。一直到任务A释放Mutex,任务A才回到它原有的优先级,这时任务B就可以拥有该Mutex了。
应该注意的是:当任务A得到Mutex后,就不要再等待其它内核对象(诸如:信号量、邮箱、队列、事件标志等等)了,而应该尽量快速的完成工作,释放Mutex。否则,这样的Mutex就失去了作用,而且效果比直接使用信号量(Sem)更糟糕!
虽然普通的信号量(Sem)也可以用于互斥访问某独占资源,但是它可能引起“优先级反转”的问题。假设上面的例子使用的是Sem,当任务A得到Sem后,那么任务C(假设任务C的优先级比A高,但比B低)就绪的话将获得CPU控制权,于是任务A和任务B都被剥夺CPU控制权。任务C的优先级比B低,却优先得到了CPU!而如果任务A是优先级最低的任务,那么它就要等到所有比它优先级高的任务都挂起之后才会拥有CPU,那么任务B(优先级最高的任务)跟着它一起倒霉!这就是优先级反转问题,这是违背“基于优先级的抢占式多任务实时操作系统”原则的!
综上所述,uC/OS-II中多个任务访问独占资源时,最好使用Mutex,但是Mutex是比较消耗CPU时间和内存的。如果某高优先级的任务要使用独占资源,但是不在乎久等的情况下,就可以使用Sem,因为Sem是最高效最省内存的内核对象。 uC/OS-II的OSSchedLock()和OSSchedUnlock()函数允许应用程序锁定当前任务不被其它任务抢占。使用时应当注意的是:当你调用了OSSchedLock()之后,而在调用OSSchedUnlock()之前,千万不要再调用诸如OSFlagPend()、OSMboxPend()、OSMutexPend()、OSQPend()、OSSemPend()之类的事件等待函数!而且应当确保OSSchedLock()和OSSchedUnlock()函数成对出现,特别是在有些分支条件语句中,要考虑各种分支情况,不要有遗漏!
需要一并提醒用户的是:当您调用开关中断函数OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()时也要确保成对出现,否则系统将可能崩溃!不过,在OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()函数之间调用OSFlagPend()、OSMboxPend()、OSMutexPend()、OSQPend()、OSSemPend()之类的事件等待函数是允许的。 首先应该阐明的是,我们这里讨论的是“驱动程序”,而不是“中断服务程序”,这两个词语往往被用户混淆。(1)中断服务程序指那种硬件中断一旦发生,就会立即被硬件中断控制器调用的一小段程序,它的操作追求简单明了,越快速越精简就越好。(2)驱动程序是指封装了某种硬件操作细节的函数集,它提供给应用程序的是统一、标准、清晰、易用的API。
对于中断服务程序的编写,往往与驱动程序的设计相关联。比如驱动程序提供异步操作的功能,那么就需要中断服务程序为它准备缓冲区和一个结构体,并且中断服务程序会依照这个结构体的成员参数自动完成所要求的操作。又如,串口(UART)中断服务程序的设计有两种:基于数据包传输和基于单字节传输,前者适用于以数据包为单位的通信程序,而后者适用于如超级终端这样的应用程序。
如果在一个系统中,要求使用同一个硬件设备完成几种不同的操作方式,就需要设计一个通用的驱动程序,而该驱动程序可以根据需要安装各种针对性很强的中断服务程序。
在设计驱动程序时,特别需要注意的是,某些外设的操作往往以一个连续而严格的时序作为原子操作,比如用I/O端口来访问DS1302、24C01、LM75A等等。在这类设备的操作过程中,不允许有其它任务来控制对应的I/O端口,否则会引起数据错误甚至器件损坏。所以,这种设备的驱动程序都应该仔细设计“原子操作”,把必须连贯操作的时序控制代码用互斥对象封装成一个“原子操作”,以适应多任务环境。其实,大部分设备都是这样,需要确定“原子操作”,如LCD、RTL8019AS、Flash等等也是如此。
关于驱动程序的设计,还有很多很多的文章可作,需要具体问题具体分析。在这里我就不列出个条条目目了,希望有兴趣的朋友多多讨论。