厦门莫格电气自动化有限公司销售
Honeywell霍尼韦尔82407444-001
您迈开询价的一小步,我还您成功的一大步。
82407444-001
82407444-001
82407444-001
占先式操作系统的主要任务就是进行任务的调度,通过对任务的实时调度来完成系统的功能。任务调度过程中,不可避免的发生任务对系统资源的抢占问题,因为系统中 CPU只有一个,而每个任务都认为自己是CPU的***占用者,每一个任务都是一个死循环。任务间进行切换的依据就是各自的优先级,一个高优先级的任务可以通过任务调度函数或者中断退出函数等来中止正在运行的任务。被中断的任务只有自己的优先级在当前就绪任务表中***高时,才能从被中断处继续运行。这就需要为每个任务分配任务堆栈,来保存任务的环境变量。由于每个任务在不同时刻被中断时需要保存的环境变量数目不同,所以任务堆栈空间的分配问题也是一门学问。
3 一些解决问题的技巧
(1)片内RAM占用问题的解决
任务堆栈***好不要放在片内,如果把任务堆栈放在片内的话,用户应用程序可使用的资源就非常有限,应用程序的功能也会受到限制。这就是为什么某些把任务堆栈放在片内的基于51系列单片机的实时操作系统只能用来做些演示实验,但并不实用。一个有实用价值的基于51系列单片机的实时操作系统必须在512字节以上的RAM环境中运行。随着集成技术的发展,现在已经出现了很多带有辅助RAM的51系列单片机,这类单片机把片外的RAM集成到芯片内,使用MOVX指令来访问这些RAM。如果用户不想通过三总线来扩展片外RAM的话,可以选用这种带有辅助RAM的单片机。此外,因为操作系统要用到一些全局变量,鉴于处理的速度问题又不想把它们全部的放在片外,那就可以根据这些全局变量应用的频繁程度来决定把哪些移到片外,哪些留在片内。别小看这几个字节的节约,在51 系列单片机上效果会很明显。笔者认为在这种资源相对匮乏的单片机上,开发操作系统的***高境界应该是开发一个绿色的操作系统,用户在应用操作系统时可以用的系统资源应该和基于裸机编程差不多。
(2)重入问题的解决
应该尽量使有重入性要求的函数的参数传递通过寄存器来完成,这样可以用一般的方法来编写函数,使得函数具有重入性。如果实在是寄存器不够用的话,可以动用硬件堆栈来保存这些局部变量。
(3)堆栈分配问题的解决
鉴于各个任务对于任务堆栈大小的要求不同,即使同一个任务在不同的时刻被中断,它对堆栈大小的要求也不相同的情况,可以将任务堆栈多分配出一个字节,用来统计任务堆栈中有效数据的个数。单片机的片内RAM中,堆栈的栈底也做一个标志,当任务切换时,把当前任务放在堆栈中的环境变量从栈底到栈顶全部拷贝到任务的堆栈中,然后把将要运行任务的任务堆栈中的所有数据***到栈底标志开始的地方。任务堆栈和硬件堆栈之间的数据拷贝如图1所示。

其中,Stack(i)和Stack(j)都是指针数组Stack[max_tasks]中的元素,NUM=SP-StkStart,图1中所要进行的操作步骤是:①将系统硬件堆栈中的内容放到当前任务的堆栈中;②把将要运行的任务的堆栈内容移到系统的硬件堆栈中,并将硬件堆栈中的内容弹出到各个寄存器。这个过程就完成了任务的切换。
结 语
本文介绍了在基于51系列单片机的嵌入式操作系统开发中,可能遇到的几个问题和它们的解决办法。这些想法都是笔者在学习和实践中得来的,相信能够对从事相同工作的人员有一定启发。
ADVANCED INSTRUMENTS TO-13392700A *NEW IN A BOX*
SCHNEIDER ELECTRIC TSXDSY16T2 *USED*
IDEC RSSD 25A *NEW IN A BOX*
DELTA 100-TR VALVE *USED*
DELTROL CONTROLS 166 3PDT 120V *USED*
BACO F-PR12 SWITCH *USED*
LOT OF 2 ABB SK 615004-BH *USED*
LOT OF 2 MTE CONTACTOR UCO5 *USED*
RADIO SHACK 273-1511B *USED*
MICRO SWITCH OP-AR *AS IS*
UNITED ELECTRIC PRESSURE CONTROLLER 6233-179 *USED*
LANCE 3/4" 2000 WOG BALL VALVE *USED*
DWYER 1910-0 PRESSURE SWITCH (AS PICTURED) *USED*
KILLARK XNCS-0B3 DEVICE RECEPT***E COVER *USED*
OPCON 8250A-6501 *USED*
FPE 149468 GAUGE *USED*
OPTEX CDD-11P *USED*
WEED INSTRUMENT 4004TJ ISOLATED TC TRAN***ITTER *USED*
NAMCO COIL EB201-72423 110V *USED*
LUMBERG RKTS 8-187/2 CABLE *USED*
SOLA 83-12-218-2 *USED*
SQUARE D FB361-1 FUSE HOLDER *USED*
DWYER PRESSURE SWITCH 1823-20 *NICE* AS PICTURED
AERO M PSA1R10189AN *USED*
OMRON Z-15GQ22-B7-K *USED *
WHEELOCK BSA-804-84-SA HORN STROBE *USED*
CHROMALOX WATER HEATER ELEMENT 2E303 *NICE*
LOT OF 3 SIEMENS 5SX21 C5 *USED*
SERVICE FILTER PRESSURE GAUGE CI-20 0-60 *USED*
DECCO 9-11 120/60 COIL *USED*
SYRELEC ARS 40A D *USED*
MAGNECRAFT RELAY W199X-3 24VDC *USED*
DONGAN CONTROL TRANSFORMER 33-100-K *USED*
AMF SS-4260-I-69776?-R *USED*
WHITE-RODGERS 152 ROOM THERMOSTAT 277VAC *USED*
PEPPERL + FUCHS NBB2-12GM60-WS *USED*
CROMPTON 253-TALU *USED*
KEYENCE PZ-51LR *NICE*
YOKOGAWA NPB09822961 *USED*
BIMBA D-36376-A-3 *USED*
MPP CAPACITOR JK66-0184D *USED*
HERION 4022170 VALVE *NICE*
ABB ZLS189BB MODULE *USED*
ABB RK216063-AD RELAY MODULE 24V*USED*
AEROVOX 293P4314M 430V *USED*
ALLEN BRADLEY 1794-ASB SER.C *USED*
LOT OF 2 FESTO MSZC-3-21 DC *USED*
ELECTRONICS CORP. OF AMERICA 42MTB-5004 *USED*
WESTINGHOUSE ELECTRIC TIMER TRF 1P *USED*
MAC 225B-111AAAA *USED*
ASEA RK221052-AH RELAY 48-55V *USED*
AMETEK GAUGE 06-08-00-D1 *NICE*
MAC 45A-AA1-DDAJ-1K?A *USED*
BIMBA SR-091-DP *USED*
BALLUFF BES 516-211-E5-E-S2?1 *USED*
ARROW HART AUTO GRIP CONNECTOR 5469N *USED*
TURCK RK4.4T-4-RS4.4T *USED*
BRADY 65564 GATE VALVE LOCKOUT *USED*
HAMMOND PH50MQMJ TRANSFORMER *USED*
MAC 130B-111AAAA *USED*
MAC 130B-111BA *USED*
DECCO 9-855M 115/60 *USED*
TURCK VAS 22-B669-5M *USED*
SETRA 264 TRANSDUCER *USED*
GRACO REGULATOR 515872 *USED *
LOT OF 2 UNIMAX SWITCH 2HB-5 *USED*
CLARK TB-102-1 110V COIL *USED*
ALLEN BRADLEY 700-CF310D* SERIES A *USED*
PARKER 0R75B PRESSURE RELIEF VALVE *USED*
FANUC A03B-0819-C001 *USED*
HR 01 25.201 WITH METAL CAGE *USED*
HUBBELL HBLDSAC *NEW NO BOX*
STI 42660-0200 *NEW OUT OF BOX*
HEVI DUTY E750 *NEW IN A BOX*
TI***EMPER IRD-TD0LWL-024-?13 SENSOR *USED*
ROSEMOUNT 3051CD2A02A1AS5 *USED*
BERNSTEIN KIN-E50NS/008-K?L2 CABLE *USED*
LOT OF 2 SQUARE D HOMT120 CIRCUIT BREAKER *USED*
ASCO 27-463-4D *USED*
ALLEN BRADLEY 1734-MB SERIES SERIES A *USED*
GENERAL ELECTRIC COIL 22D82G2 110V *USED*
AUTOMATION DIRECT ABM2E71Z11 400V LIMIT SWITCH *USED*
SHI-YAU SYT-Z100E *USED*
INDUSTRIAL INDEXING SYSTEMS INC. IOE-850 *USED*
NAMCO SL5100 *USED*
OMRON E5CS2-R20K *USED*
DIGI BOARD 30000644 *USED*
MTE 4N8-4R *USED*
CALEX INSTRUMENTATION AMPLIFIER 178 *USED*
PIZZATO FA 4115-S10 *USED*
RV4NAYSK50A *USED*
SQUARE D 9007-A0-1 *USED*
CUTLER HAMMER E50RB *USED*
WIKA PRESSURE GAUGE 111.11.68.3000 *USED*
LOT OF 2 ***C D-A73 *USED*