Profilo di 大宇xinyueFotoBlogElenchiAltro Strumenti Guida

宇 赵

Professione
Interessi
孩子的爸
di 

xinyue

18 aprile

经常使用电脑的保健方法

       IT人作为经常接触电脑的一个群体,在使用电脑的过程中总会不知不觉地身体健状况受到影响!在此,IT世界网数字生活频道通过网络收集整理了一些有关使用电脑者易出现的健康隐患与相应的保健知识,愿祝各位IT人多学会自我保健,有一个更健康良好的体魄。

一、干眼症与电脑眼病
  症状:虽然肉眼无法看出来,但事实上显示器上的画面是一直在闪烁的。看显示器时,我们往往会长时间地盯着某一个点,很少眨眼,因此眼肌容易疲劳,眼黏膜发干,眼睛发红、发炎、疼痛。在电脑前不间断工作4小时后,几乎所有人的眼睛都会出现酸痛和沙眼的感觉。
  保健方法:距显示器需要70厘米以上;把亮度调整到不使眼疲劳的程度;避免室内的光线直接照射在屏幕上而产生干扰光线;使用电脑时滴一些与我们眼泪成分相同的眼药水;眼睛疲劳时,用以淡红茶水煮过的湿巾敷几分钟眼睛,会很快消除充血和疲劳。在荧光屏前工作时间过长,视网膜上的视紫红质会被消耗掉,而视紫红质主要由维生素A合成。因此应多吃些胡萝卜、白菜、豆芽、豆腐、红枣、橘子以及牛奶、鸡蛋、动物肝脏、瘦肉等食物,以补充人体内维生素A和蛋白质。
二、恐怖鼠标手
  症状:长期使用电脑键盘和鼠标,可能与一种称为腕关节综合征的疾病挂上钩,出现食指或中指疼痛、麻木和拇指肌肉无力感,发展下去可能导致神经受损,进而引起手部肌肉萎缩。女性发生“鼠标手”比男性多,这是因为,女性手腕通常比男性小,部正中神经容易受到压迫。
  保健方法:避免上肢长时间处于固定、机械而频繁活动的工作状态下;电脑桌上的键盘和鼠标的高度,最好低于坐着时的肘部高度;使用鼠标时,手臂不要悬空,以减轻手腕的压力,移动鼠标时不要用腕力而尽量靠臂力做,减少手腕受力;鼠标最好选用弧度大、接触面宽的,有助力的分散。

三、电磁辐射之害
  症状:显示器热度过高,在工作时就会有相当多的电磁辐射,它会使空气发生电离作用,不断产生正电荷(正离子),并不断与空气中的负离子中和,导致负离子的含量几乎为零,长期处于正离子过多的环境中,使人失眠、免疫力下降、女性内分泌紊乱等。
  保健方法:仔细地打扫办公环境;多喝茶;不要把自己显示器的后面对着同事的后脑或者身体的侧面;常喝绿茶;勤洗脸;在电脑桌下摆放一盆植物或水,可以吸收电脑所发出的电磁波;尽量使用液晶显示器。
四、脑功能减弱
  症状:随着个人电脑日益普及,人们正越来越多地受到记忆力减退的困扰,主要原因是他们对电脑的依赖过强,从而使得自己的脑功能反而减弱。
  保健方法:保证充足的睡眠;静想练习。最好每天能有20-30分钟时间静想生活中轻松美好的事情,聆听自己呼吸的节律,让情绪尽量放松;学习使用五笔输入法,不要总是使用智能拼音的联想输入法;改变不健康的饮食结构,多食用健脑食品。
五、颈肩腕综合症
  症状:如果使用电脑时高高地架着胳膊,低着头,并且在桌子下艰难地跷着二郎腿,那么,工作一小时你就会感到腰背酸痛,脖子和肩膀麻木,手臂也不灵活。这样的坐姿保持一年至一年半,你就可以获得双下巴、颈椎关节僵硬。
  保健方法:上半身应保持颈部直立,使头部获得支撑,两肩自然下垂;须选择符合人体工学设计的桌椅,使用专用的电脑椅;使用电脑每隔一小时应休息5至10分钟,做柔软操或局部按摩;眼睛与显示器保持恰当距离。眼睛与电脑显示器形成轻度向下注视荧光屏的角度,这样可使颈部肌肉得到放松。
六、电脑躁狂症
  症状:由于对电脑过度依赖,所以当电脑出现故障后,会精神紧张,情绪烦躁、不安,甚至有对电脑“动武”的倾向,如通过用力敲打键盘、鼠标,大骂电脑,摔砸电脑等方式发泄怒火,有的还将不满情绪发泄在家人或同事身上。
  保健方法:一旦电脑出现故障,立即找专业人士来维修,避免独自坐在电脑桌前,应当尽快转移视线和注意力,放松心情;随时保存工作文档,用移动硬盘将资料备份,一旦电脑出现问题,不会受到太大损失,情绪不至于骤然失控;不要长时间坐在电脑前,隔一段时间走开喝杯茶、咖啡或活动一下。
七、电脑忧郁症
  症状:长时间的电脑操作形成“非此即彼”的思维定式,不习惯与人达成妥协和谅解,丧失自信,身心疲惫,以致工作难以展开。
  保健方法:做好自我心理调整,及时纠正思维方式;积极处理好人际关系,尤其与同事的关系。
八、中枢神经失调
  症状:发病率为70%,长时间在密闭环境中操作电脑,电脑发出的微波引起中枢神经失调,连续多日长时间操作电脑后发病症状:头痛、头晕、失眠、厌食、恶心,以及情绪低落、思维迟钝、健忘、容易被激怒、常感疲惫等。
  保健方法:保证电脑桌附近采光充足、通风良好;每在电脑前工作1小时就走开休息10分钟;操作电脑期间多喝水。
15 marzo

几首俄语歌的歌词

     上学的时候俄语歌词都记录在一个本子里,由于年代久远,现在都没有了,今天无意中发现,转载如下(原文地址http://www.blogchinese.com/user1/50841/archives/2005/2006412124744.shtml):

В низенькой светёлке (纺织姑娘)
Огонек горит,
Молодая пряха
Под окном сидит.
Молода. Красива,
Карие глаза,
По плечам развита
Русая коса.

Русая головка,
Думы без конца…
Ты о чем мечтаешь,
Девица-краса?..

В низенькой светелке
Огонек горит,
Молодая пряха
Под окном сидит.

Дороженька  (小路)
По-над речкой расстилается туман,
Росы чистые упали на траву,
Я надену свой бордовый сарафан,
Я малины — красной ягоды нарву.

Молодая да веселая пройдусь.
Не вернутся к нам ни горе, ни беда.
Я своей работой-славою горжусь,
Я — ударница колхозного труда.

В чистом полюшке дороженька легла,
Словно светлая большая полоса,
Рассветлым-светла дороженька, светла,
И ведет она к победам-чудесам.

Кто колхозную дорожку проложил?
Кто колхозную дорожку проторил?
Это Ленин нам дорожку проложил.
Это Сталин нам дорожку проторил.

Калинка (卡林卡)

Калинка, калинка, калинка моя!
В саду ягода малинка, малинка моя!
Ах! Под сосною под зеленою
Спать положите вы меня;
Ай, люли, люли, ай, люли, люли,
Спать положите вы меня.

Калинка, калинка, калинка моя!
В саду ягода малинка, малинка моя!
Ах! Сосенушка ты зеленая,
Не шуми же надо мной!
Ай, люли, люли, ай, люли, люли,
Не шуми же надо мной!

Калинка, калинка, калинка моя!
В саду ягода малинка, малинка моя!
Ах! Красавица, душа-девица,
Полюби же ты меня!
Ай, люли, люли, ай, люли, люли,
Полюби же ты меня!

Калинка, калинка, калинка моя!
В саду ягода малинка, малинка моя!

Катюша  (喀秋莎)

Расцветали яблони и груши,
Поплыли туманы над рекой.
Выходила на берег Катюша,
На высокий берег, на крутой.

Выходила, песню заводила
Про степного сизого орла,
Про того, которого любила,
Про того, чьи письма берегла.

Ой ты, песня, песенка девичья,
Ты лети за ясным солнцем вслед
И бойцу на дальнем пограничье
От Катюши передай привет.

Пусть он вспомнит девушку простую,
Пусть услышит, как она поет,
Пусть он землю бережет родную,
А любовь Катюша сбережет.

Расцветали яблони и груши,
Поплыли туманы над рекой.
Выходила на берег Катюша,
На высокий берег, на крутой.

Комсомольская  песня  (共青团员之歌)

Протрубили трубачи тревогу,
Всем по форме к бою снаряжён,
Собирался в дальнюю дорогу
Комсомольский сводный батальон.

До свиданья, мама, не горюй,
На прощанье сына поцелуй!
До свиданья, мама, не горюй, не грусти!
Пожелай нам доброго пути!

Прощай, края родные,
Звезда победы нам свети!
До свиданья, мама, не горюй, не грусти!
Пожелай нам доброго пути!

Всё, что с детства любим и храним,
Никогда врагу не отдадим.
Лучше сложим голову в бою,
Защищая Родину свою.

До свиданья, мама, не горюй,
На прощанье сына поцелуй!
До свиданья, мама, не горюй, не грусти!
Пожелай нам доброго пути!

Прощай, края родные,
Звезда победы нам свети!
До свиданья, мама, не горюй, не грусти!
Пожелай нам доброго пути!

Мчится тройка удалая (三套车)

Вот мчится тройка удалая
По Волге-матушке зимой.
Ямщик, уныло напевая,
Качает буйной головой.

"О чем задумался, детина?" -
Седок приветливо спросил, -
"Какая на сердце кручина
Или тебя кто огорчил?"

"Ах, милый барин, добрый барин!
Уж скоро год, как я люблю...
Да нехристь, староста-татарин
Меня журит, а я терплю!

Ах! Добрый барин, скоро Святки,
А ей уже небыть моей!..
Богатый выбрал, но постылый,
Ей не видать счастливых дней!"

Ямщик умолк, но кнут ременный
С голицей за пояс заткнул.
"Родные, стой, неугомонный", -
сказал, и горестно ввдохнул.

Ой, цветет калина  (红莓花儿开)

Ой, цветёт калина в поле у ручья,
Парня молодого полюбилая.
Парня полюбила на свою беду:
Не могу открыться, слова не найду!

Он живет, не знает ничего о том,
Что одна дивчина думает о нем.
У ручья с калины облетает цвет,
А любовь девичья не проходит, нет!

А любовь девичья с каждым днем сильней.
Как же мне решиться рассказать о ней?
Я хожу, не смея волю дать словам...
Милый мой, хороший, догадайся сам!

Очи черные (黑眼睛)

Очи черные, очи страстные!
Очи жгучие и прекрасные!
Как люблю я вас! Как боюсь я вас!
Знать, увидел вас я в недобрый час!

Ох, недаром вы глубины темней!
Вижу траур в вас по душе моей,
Вижу пламя в вас я победное:
Сожжено на нем сердце бедное.

Но не грустен я, не печален я,
Утешительна мне судьба моя:
Все, что лучшего в жизни бог дал нам,
В жертву отдал я огневым глазам!

 Подмосковные вечера (莫斯科郊外的晚上)

Не слышны в саду даже шорохи,
Всё здесь замерло до утра,
Если б знали вы, как мне дороги
Подмосковные вечера.
Если б знали вы, как мне дороги
Подмосковные вечера.

Речка движется и не движется,
Вся из лунного серебра,
Песня слышится и не слышится,
В эти тихие вечера.
Песня слышится и не слышится,
В эти тихие вечера.

Что ж ты милая смотришь искоса
Низко голову накланя
Трудно высказать и не высказать.
Всё, что на сердце у меня
Трудно высказать и не высказать.
Всё, что на сердце у меня

А развет уже всё заметнее,
Так пожалуйста будь добра
Не забудь ты, эти летние
Подмосковные вечера.
Не забудь ты, эти летние
Подмосковные вечера.

Уральская рябинушка (山楂树)
Вечер тихой песнею над рекой плывет.
Дальними зарницами светится завод.
Где-то поезд катится точками огня,
Где-то под рябинушкой парни ждут меня.

Припев

Ой, рябина кудрявая,
Белые цветы,
Ой, рябина, рябинушка,
Что взгрустнула ты?

Лишь гудки певучие смолкнут над водой,
Я иду к рябинушке тропкою крутой.
Треплет под кудрявою ветер без конца
Справа кудри токаря, слева - кузнеца.

Припев

Днем в цеху короткие встречи горячи,
А сойдемся вечером - сядем и молчим...
Смотрят звезды летние молча на парней
И не скажут, ясные, кто из них милей.

Припев

Укрывает инеем землю добела.
Песней журавлиною осень проплыла.
Но все той же узкою тропкой между гор
Мы втроем к рябинушке ходим до сих пор.

Припев

Кто из них желаннее, руку сжать кому,
Сердцем растревоженным так и не пойму.
Хоть ни в чем не схожие, оба хороши...
Милая рябинушка, сердцу подскжи"!

Припев

Ой, рябина кудрявая,
Оба хороши.
Ой, рябина, рябинушка,
Сердцу подскажи!

Эй, ухнем! (伏尔加船夫曲)

Припев:
Эй, ухнем!
Эй, ухнем!
Еще разик, еще раз!

Разовьем мы березку,
Разовьем мы кудряву!
Ай-да, да ай-да, ай-да, да ай-да,
Разовьем мы кудряву.

Припев

Мы по бережку идем,
Песню солнышку поем.
Ай-да, да ай-да, ай-да, да ай-да,
Песню солнышку поем.

Припев:
Эй, эй, тяни канат сильней!
Песню солнышку поём.
Эй, ухнем!
Эй, ухнем!
Еще разик, еще раз!

Эх ты, Волга, мать-река,
Широка и глубока,
Ай-да, да ай-да, ай-да, да ай-да,
Широка и глубока.

Припев: Эй, ухнем!
Эй, ухнем!
Еще разик, еще раз!
Эй, ухнем!
Эй, ухнем!

无线传输距离和发射功率以及频率的关系(转)

     一直以来都没有搞明白这个问题,用错误的理论和公式计算,终于知道自己错了,现在转贴如下:
 
功率 灵敏度  (dBm  dBmV   dBuV)
dBm=10log(Pout/1mW),其中Pout是以mW为单位的功率值
dBmV=20log(Vout /1mV),其中Vout是以mV为单位的电压值
dBuV=20log(Vout /1uV),其中Vout是以uV为单位的电压值
换算关系:
Pout=Vout×Vout/R
dBmV=10log(R/0.001)+dBm,R为负载阻抗
dBuV=60+dBmV
应用举例
无线通信距离的计算
       这里给出自由空间传播时的无线通信距离的计算方法:所谓自由空间传播系指天线周围为无限大真空时的电波传播,它是理想传播条件。电波在自由空间传播时,其能量既不会被障碍物所吸收,也不会产生反射或散射。
       通信距离与发射功率、接收灵敏度和工作频率有关。
       [Lfs](dB)=32.44+20lgd(km)+20lgf(MHz)
       式中Lfs为传输损耗,d为传输距离,频率的单位以MHz计算。
       由上式可见,自由空间中电波传播损耗(亦称衰减)只与工作频率f和传播距离d有关,当f或d增大一倍时,[Lfs]将分别增加6dB.
       下面的公式说明在自由空间下电波传播的损耗
       Los = 32.44 + 20lg d(Km) + 20lg f(MHz)
       Los 是传播损耗,单位为dB
       d是距离,单位是Km
       f是工作频率,单位是MHz
       下面举例说明一个工作频率为433.92MHz,发射功率为+10dBm(10mW),接收灵敏度为-105dBm的系统在自由空间的传播距离:
       1. 由发射功率+10dBm,接收灵敏度为-105dBm
       Los = 115dB
       2. 由Los、f
       计算得出d =30公里
       这是理想状况下的传输距离,实际的应用中是会低于该值,这是因为无线通信要受到各种外界因素的影响,如大气、阻挡物、多径等造成的损耗,将上述损耗的参考值计入上式中,即可计算出近似通信距离。
       假定大气、遮挡等造成的损耗为25dB,可以计算得出通信距离为:
       d =1.7公里
       结论: 无线传输损耗每增加6dB, 传送距离减小一倍
 
05 marzo

晕车,吐得一塌糊涂

    一般的时候没有晕的这么厉害,或者是太疲惫,或者是身体太虚弱,还或者是车上的人太多并且拉上了窗帘……周一的时候就是不一样,无论是空调车还是普通车都挤满了人,有的时候连落脚的地方都没有,即使空调车贵一倍的价钱,即使平时很少人坐的车,在周一的早晨和周五的晚上一定会挤满,对此我早已习惯。仅仅半个多小时我就开始晕车,头有点不舒服,扶着得手开始觉得发凉,另一只手开始发热,前心发凉,后背发热……再过不了多久胃就有了反应,我开始转移注意力,我开始背“春江潮水连海平,……落月摇情满江树”“君不见……与尔同销万古愁”……其实转移注意力的方法开始还是有效的,但是一不小心想到了那个恶心的笑话里的一句话“我看袋子满了,就往回喝了一口,他们就都吐了”,看来东西看太多了,在不合时宜的时候想起来也是一种错误,不过还好,我还是忍住了,“锦瑟无端五十弦……只是当时已惘然”……就要到站了,本着节约的原则,还是没有跟乘务员要塑料袋。
    下了车,寒风凛冽,塑料袋在枝头被拉成直线,背风的房子前面,各种垃圾废纸盘旋上升,然后嗖的一下又被吹向蓝天,昨天刚刚下过一场大雪,出奇的大,所以今天出奇的冷,天也出奇的蓝,风吹的耳朵和脸生疼,我在孙河下车,才走了路程的一半,下车的第一件事情就是找个地方去吐,幸好在树下有一个垃圾筐,胃里翻江倒海,眼泪、鼻涕合着呕吐物随风飘飞,我突然很怀念在家种地的日子,那时蓝天蓝,白云白,采花香,那时不坐汽车,也不会晕车……
07 febbraio

最近老是失眠

     最近老是失眠,躺下很久很久都难以入睡,一闭上眼睛,各种各样的奇奇怪怪的问题就象春风春雨下的野草一样疯狂生长起来,为什么有的物质是透明的,有的物质不透明?物质都是由原子紧密排列在一起构成的,而光是一种电磁波。为什么物体会有颜色?为什么物体会有选择的反射或者是折射一定波长的电磁波?为什么光线在穿过两种透明介质的时候会发生折射?通讯用的电磁波也会折射么?如果可以会不会也存在一种类似凸凹透镜的东西,能使长波成像?如果人的眼睛能接收长波的话,是不是整个世界就是透明的?…………
    这些问题想来想去也没有结果,唯一的结果就是我又失眠了,假如地球是一个光滑理想的球体,假设光线在空气中是完全直线传播的,那么一个眼睛距地面1米的小孩能看见多大的范围?同底面积,同高的圆锥体积是圆柱体积的1/3,怎么计算出来?有的时候上班的时候也会冒出类似的问题,我会马上拿出纸笔演算,有的时候我都觉得自己不太正常。不过还好,这种情况并不是很多。
    网络的资源真是太丰富了,也让我知道原来也有和我思考一样问题的人,下面转一个物质为什么是透明的答案,对于不对就不知道了,反正看着有点道理:
一个重要的原因:再坚实的物质,如果从原子的内部去看,它其实是空荡荡的。因为在原子的内部,原子核和电子的体积加起来不到原子体积的1000000000分之一。况且,还没有证据证明原子核和电子就不能被光子穿过!所以,透明才是正常的!
要想弄清楚这个复杂的问题首先得弄清楚下面这个问题:一些物质为什么是不透明的?
对于不透明的物质,我们可以分为四大类:
1、由于自由电子的阻挡作用导致的不透明:这是金属不透明的原因。
2、能吸收光线的物质导致的不透明:这类物质的分子的电子的激发能比较低,恰好在可见光范围内,分子里往往有苯环、苯醌、联苯胺或其它共轭体系的结构,这种结构可以降低电子的激发能,使电子容易发生跃迁而吸收光子的能量。这样光线就被吸收了。
3、由于透明物质的结构被破坏而造成的不透明。如玻璃是透明的,而玻璃粉则是不透明的;冰是透明的,而冰被砸碎了就是不透明的了。如果一种物质它的结构特点不符合1、2,那它就是可以通过光线的,但如果它的结构里有很多小空隙,那它就是白色。这就是白色物体不透明的原因。
4、 1、2、3原因混合的结果。现实中的许多物体的不透明就是这个原因造成的。

如果一种物质它的结构里即没有自由电子,又没有容易激发的电子,物质的结构又很紧密,没有许多孔隙等条件。那物质就可以通过光子,即是透明的。所以玻璃是透明的!
27 novembre

太久没来了,记下流水帐……

太久没来了,先把过去的事情整理一下:三月份开始装修房子,5月底入住的,房子装修的时候吵了不少的架;七月份原来的公司搬家,从上地搬到北太,结束了我的租房生活,每天四个小时的公交车,真是太累了。七月中旬老婆的学校组织出去玩,山东玩了4天;
                                            青岛-1
 
 
回来后开始准备换公司,八月初来到现在的单位。八月中旬开始生病,住院一周,九月初又开始上班,期间照了婚纱照,上班的时候没事就加班啊,十一的时候病情复发,又住院一周,出院后一直在家休息,老爸老妈每天照顾我,什么都不让我做,天天哄小侄子,日子过得还不错。在家休息了将近一个月,十一月终于又来上班了。感谢各位来看望我的兄弟,特别是教主和恐龙,当天的饭都是两位做的,每次同学到家里来都是自己动手,谁让咱饭做的不好呢。
 
03 agosto

ucos

uC/OS-II 初级程序员指南
hui
发表于 2006-4-13 16:23:58

来自:嵌入式资讯网

本文面向首次接触uC/OS-II的程序员,为他们介绍一下这个系统的一些基本特征和编程上的注意事项,并介绍几个值得了解的API。本文作者已经成功的将uC/OS-II移植到几种不同CPU之上。包括EPSON S1C33Sunplus unSP™等,积累了丰富的经验,现在愿意和朋友们分享这些经历。希望本文的资料对于希望使用这个系统来开发的朋友有所帮助,作者乐意与您分享任何您成功的喜悦。

(一)      uC/OS-II 简介

uC/OS-II是一种基于优先级的可抢先的硬实时内核。自从92年发布以来,在世界各地都获得了广泛的应用,它是一种专门为嵌入式设备设计的内核,目前已经被移植到40多种不同结构的CPU上,运行在从8位到64位的各种系统之上。尤其值得一提的是,该系统自从2.51版本之后,就通过了美国FAA认证,可以运行在诸如航天器等对安全要求极为苛刻的系统之上。鉴于uC/OS-II可以免费获得代码,对于嵌入式RTOS而言,选择uC/OS无疑是最经济的选择。

(二)      uC/OS-II 应用程序基本结构

应用uC/OS-II,自然要为它开发应用程序,下面论述基于uC/OS-II的应用程序的基本结构以及注意事项。

每一个uC/OS-II应用至少要有一个任务。而每一个任务必须被写成无限循环的形式。以下是推荐的结构:

void task ( void* pdata )

{

INT8U  err;

InitTimer(); // 可选

For( ;; )

{

    // 你的应用程序代码

    …….

    ……..

    OSTimeDly(1); // 可选

}

}

以上就是基本结构,至于为什么要写成无限循环的形式呢?那是因为系统会为每一个任务保留一个堆栈空间,由系统在任务切换的时候换恢复上下文,并执行一条reti 指令返回。如果允许任务执行到最后一个花括号(那一般都意味着一条ret指令)的话,很可能会破坏系统堆栈空间从而使应用程序的执行不确定。换句话说,就是跑飞了。所以,每一个任务必须被写成无限循环的形式。程序员一定要相信,自己的任务是会放弃CPU使用权的,而不管是系统强制(通过ISR)还是主动放弃(通过调用OS API)

现在来谈论上面程序中的InitTimer()函数,这个函数应该由系统提供,程序员有义务在优先级最高的任务内调用它而且不能在for循环内调用。注意,这个函数是和所使用的CPU相关的,每种系统都有自己的Timer初始化程序。在uC/OS-II的帮助手册内,作者特地强调绝对不能在OSInit()或者OSStart()内调用Timer初始化程序,那会破坏系统的可移植性同时带来性能上的损失。所以,一个折中的办法就是象上面这样,在优先级最高的程序内调用,这样可以保证当OSStart()调用系统内部函数OSStartHighRdy()开始多任务后,首先执行的就是Timer初始化程序。或者专门开一个优先级最高的任务,只做一件事情,那就是执行Timer初始化,之后通过调用OSTaskSuspend()将自己挂起来,永远不再执行。不过这样会浪费一个TCB空间。对于那些RAM吃紧的系统来说,还是不用为好。

(三)      一些重要的uC/OS-II API介绍

任何一个操作系统都会提供大量的API供程序员使用,uC/OS-II也不例外。由于uC/OS-II面向的是嵌入式开发,并不要求大而全,所以内核提供的API也就大多和多任务息息相关。主要的有以下几类:

1)任务类

2)消息类

3)同步类

4)时间类

5)临界区与事件类

我个人认为对于初级程序员而言,任务类和时间类是必须要首先掌握的两种类型的API。下面我就来介绍比较重要的:

1)      OSTaskCreate函数

这个函数应该至少再main函数内调用一次,在OSInit函数调用之后调用。作用就是创建一个任务。目前有四个参数,分别是任务的入口地址,任务的参数,任务堆栈的首地址和任务的优先级。调用本函数后,系统会首先从TCB空闲列表内申请一个空的TCB指针,然后将会根据用户给出参数初始化任务堆栈,并在内部的任务就绪表内标记该任务为就绪状态。最后返回,这样一个任务就创建成功了。

2)      OSTaskSuspend函数

这个函数很简单,一看名字就该明白它的作用,它可以将指定的任务挂起。如果挂起的是当前任务的话,那么还会引发系统执行任务切换先导函数OSShed来进行一次任务切换。这个函数只有一个参数,那就是指定任务的优先级。那为什么是优先级呢?事实上在系统内部,优先级除了表示一个任务执行的先后次序外,还起着分别每一个任务的作用,换句话说,优先级也就是任务的ID。所以uC/OS-II不允许出现相同优先级的任务。

3)      OSTaskResume函数

这个函数和上面的函数正好相反,它用于将指定的已经挂起的函数恢复成就绪状态。如果恢复任务的优先级高于当前任务,那么还为引发一次任务切换。其参数类似OSTaskSuspend函数,为指定任务的优先级。需要特别说明是,本函数并不要求和OSTaskSuspend函数成对使用。

4)      OS_ENTER_CRITICAL

很多人都以为它是个函数,其实不然,仔细分析一下OS_CPU.H文件,它和下面马上要谈到的OS_EXIT_CRITICAL都是宏。他们都是涉及特定CPU的实现。一般都被替换为一条或者几条嵌入式汇编代码。由于系统希望向上层程序员隐藏内部实现,故而一般都宣称执行此条指令后系统进入临界区。其实,它就是关个中断而已。这样,只要任务不主动放弃CPU使用权,别的任务就没有占用CPU的机会了,相对这个任务而言,它就是独占了。所以说进入临界区了。这个宏能少用还是少用,因为它会破坏系统的一些服务,尤其是时间服务。并使系统对外界响应性能降低。

5)      OS_EXIT_CRITICAL

这个是和上面介绍的宏配套使用另一个宏,它在系统手册里的说明是退出临界区。其实它就是重新开中断。需要注意的是,它必须和上面的宏成对出现,否则会带来意想不到的后果。最坏的情况下,系统会崩溃。我们推荐程序员们尽量少使用这两个宏调用,因为他们的确会破坏系统的多任务性能。

6)      OSTimeDly函数

这应该程序员们调用最多的一个函数了,这个函数完成功能很简单,就是先挂起当起当前任务,然后进行任务切换,在指定的时间到来之后,将当前任务恢复为就绪状态,但是并不一定运行,如果恢复后是优先级最高就绪任务的话,那么运行之。简单点说,就是可以任务延时一定时间后再次执行它,或者说,暂时放弃CPU的使用权。一个任务可以不显式的调用这些可以导致放弃CPU使用权的API,但那样多任务性能会大大降低,因为此时仅仅依靠时钟机制在进行任务切换。一个好的任务应该在完成一些操作主动放弃使用权,好东西要大家分享嘛!

(四)      uC/OS-II 多任务实现机制分析

前面已经说过,uC/OS-II是一种基于优先级的可抢先的多任务内核。那么,它的多任务机制到底如何实现的呢?了解这些原理,可以帮助我们写出更加健壮的代码来。由于我们面向的初级程序员,本文不打算写成又一篇uC/OS-II的源码分析,那样的文章太多了,本文打算从实现原理的角度探讨这个问题。

首先我们来看看为什么多任务机制可以实现?其实在单一CPU的情况下,是不存在真正的多任务机制的,存在的只有不同的任务轮流使用CPU,所以本质上还是单任务的。但由于CPU执行速度非常快,加上任务切换十分频繁并且切换的很快,所以我们感觉好像有很多任务同时在运行一样。这就是所谓的多任务机制。

由上面的描述,不难发现,要实现多任务机制,那么目标CPU必须具备一种在运行期更改PC的途径,否则无法做到切换。不幸的使,直接设置PC指针,目前还没有哪个CPU支持这样的指令。但是一般CPU都允许通过类似JMPCALL这样的指令来间接的修改PC。我们的多任务机制的实现也正是基于这个出发点。事实上,我们使用CALL指令或者软中断指令来修改PC,主要是软中断。但在一些CPU上,并不存在软中断这样的概念,所以,我们在那些CPU上,使用几条PUSH指令加上一条CALL指令来模拟一次软中断的发生。

回想一下你在微机原理课程上学过的知识,当发生中断的时候,CPU保存当前的PC和状态寄存器的值到堆栈里,然后将PC设置为中断服务程序的入口地址,再下来一个机器周期,就可以去执行中断服务程序了。执行完毕之后,一般都是执行一条RETI指令,这条指令会把当前堆栈里的值弹出恢复到状态寄存器和PC里。这样,系统就会回到中断以前的地方继续执行了。那么设想一下?如果再中断的时候,人为的更改了堆栈里的值,那会发生什么?或者通过更改当前堆栈指针的值,又会发生什么呢?如果更改是随意的,那么结果是无法预料的错误。因为我们无法确定机器下一条会执行些什么指令,但是如果更改是计划好的,按照一定规则的话,那么我们就可以实现多任务机制。事实上,这就是目前几乎所有的OS的核心部分。不过他们的实现不像这样简单罢了。

下面,我们来看看uC/OS-II再这方面是怎么处理的。再uC/OS-II里,每个任务都有一个任务控制块(Task Control Block),这是一个比较复杂的数据结构。在任务控制快的偏移为0的地方,存储着一个指针,它记录了所属任务的专用堆栈地址。事实上,再uC/OS-II内,每个任务都有自己的专用堆栈,彼此之间不能侵犯。这点要求程序员再他们的程序中保证。一般的做法是把他们申明成静态数组。而且要申明成OS_STK类型。当任务有了自己的堆栈,那么就可以将每一个任务堆栈再那里记录到前面谈到的任务控制快偏移为0的地方。以后每当发生任务切换,系统必然会先进入一个中断,这一般是通过软中断或者时钟中断实现。然后系统会先把当前任务的堆栈地址保存起来,仅接着恢复要切换的任务的堆栈地址。由于哪个任务的堆栈里一定也存的是地址(还记得我们前面说过的,每当发生任务切换,系统必然会先进入一个中断,而一旦中断CPU就会把地址压入堆栈),这样,就达到了修改PC为下一个任务的地址的目的。

以上就是uC/OS-II的多任务实现机制,我们在这里大费笔墨谈论这个问题,是希望我们的程序员们可以善加利用这个机制,写出更健壮,更富有效率的代码来。
01 marzo

msn无法上线了

    前一段时间msn用的好好的,从这个周一来了以后就一直无法登录,总是报告错误。把msn卸载重装后问题依旧,生气了,以后不用msn了。可是又不甘心,今天把诺顿关了,结果就可以登录了。可是没过半个小时,又无法登录了,郁闷!最后把C:\Documents and Settings\Administrator\Application Data\Microsoft\MSN Messenger文件夹下的所有东西都删除,结果又可以登录了。不知道msn到底出了什么问题。
31 dicembre

下雪了!

    今年的冬天一直都不是特别的冷,或者至少我觉得不是太冷,因为每次出门我都穿很多。每天大部分时间在宿舍和公司都让我多少有点烦躁,因为空气干燥,因为屋里的温度很高,温度和湿度都会影响人的情绪,所以我就看是盼望着下雪。不下雪的冬天感觉不像是冬天。

    前一段时间大连济南威海连续得下了大雪,可是北京一点下的意思都没有。后来连唐山和天津都下了几次,可是北京依然是蜜蜂停在日历上——风和日丽。虽然有几次好像是阴天了,但最后都让我白白的高兴了一番。我们开玩笑说冷空气绕道其它的地方回它的老家西伯利亚了。

    昨天已经开始阴天,天气预报也说会有小雪,于是我就很兴奋,可是一天下来也没有看到一点雪的迹象。中间曾有人说下雪了,惹得大家都围到窗前看,睁大了眼睛也没有看见一点雪花,齐呼上当被骗。

    今天天气不冷,出门的时候感觉有什么东西从天上飘下来,研究了半天确定是雪花不是沙尘暴,心里就有点莫名的高兴,可是雪花太小,不仔细看根本不能发现,但是车窗下部的一条白线说明那是雪花。hb说天气很干燥,下了雪会更冷,可是我仍然很期盼。

    明天就是元旦,下午就可以放假了,但是我更盼望下雪,虽然我的LP说不喜欢下雪,因为她会滑倒,可是我不会因为这个就不期盼,我会拉着她不让她摔倒。每天工作一会儿我就会起来走走,因为工作了两年以后我的脖子就开始疼。可是我在走的时候发下外面居然好多白茫茫的东西在飘,确定不是我眼花的缘故后我告诉自己下雪了,然后就喊了出来,大家说真的假的,不是又在欺骗我们脆弱的感情吧。但是还是放下工作围过来看,然后大家一起兴奋了起来。

    我喜欢下雪的感觉,因为我会想起很多平时忘却的事情,忘却的感觉。我会想起过年时挂在院子里高高杆子上的红灯笼,那个时候我会抬起头来向上望,想象灯光里飘舞的雪花是静止的,慢慢的我就感觉到我和灯笼一起往上飞起来了……我会想起小时候自己用罐头瓶子做的手提灯笼,里面放上一截红腊,雪花飘舞中发出淡黄色的光芒,火焰在风中摇摇摆摆,我常常长望着发呆……我还会想起路灯,黄色的、橙色的、青白色的路灯光下,飘着的黄色的、橙色的、青白色的雪花……

    下雪了,终于冬天了。冬天来了就期盼着过年了——这是那么遥远的,清晰的,童年时的一种期盼的喜悦。

ps:刚刚写了很多的时候,办公室跳闸了,我没有保存,害得我从头写。再写的时候就没有开始的感觉了。一个字:郁闷!!!

 
Foto 1 di 10