⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read.me

📁 old-ucos-v1.11.zip ucos1.1版本
💻 ME
📖 第 1 页 / 共 2 页
字号:
                          uC/OS, The Real-Time Kernel
                              Companion Diskette

                              uC/OS Version 1.11

                                 READ ME FILE


----------------------------- REPORTING PROBLEMS -----------------------------

    If  you find a problem (i.e. bug) in uC/OS, do not  hesitate to report the
problem to either:

 1) The publisher:

        Miller Freeman, Inc. (R&D Books)
        1601 West 23rd Street, Suite 200
        Lawrence, Kansas 66046
        (913) 841-1631
        (913) 841-2624 (FAX)

        INTERNET: rdorders@rdpub.com
        WEB     : http://www.rdbooks.com

 2) Through CompuServe:

        My CompuServe address is 72644,3724

 3) Through the INTERNET:

        My INTERNET address is 72644.3724@compuserve.com or,
                               Jean_Labrosse@compuserve.com

 4) By writing to me:

        Jean J. Labrosse
        9540 N.W. 9th Court
        Plantation, FL 33324
        U.S.A.

 5) By calling me (after 8PM Eastern time):

        (954) 472-5094
        (954) 472-7779, FAX

    Make sure that the  problem  you are  reporting is in  uC/OS  and not your
application.   If you in fact discover a bug in uC/OS, call the  publisher and
see if they are shipping the same version of the code that you are using.

    If you are  using  an  older  version,  you should  first  get the lastest
version from the publisher.  Most likely,  the  bug  has been found by someone
else  and  has  been  corrected.   In this case, you can obtain an  upgrade by
contacting the publisher (see SOFTWARE UPGRADES).

    If you have the same version as the publisher then you may have  uncovered
a problem.   I will do my best to correct the problem and  get an  answer back
to you as  quickly as  possible.   If you found a problem with uC/OS, you will
get a FREE upgrade.

/*$PAGE*/
------------------------------ SOFTWARE UPGRADES -----------------------------

    As you can see, I have been trying to support uC/OS.  When bugs are found,
I do my best to correct them.   It is virtually impossible to notify everybody
that purchased the code (i.e. the diskette) to tell them that a new version is
available.    You  should  occasionally  check  with the publisher to see what
version they are shipping. The cost to upgrade will be less than the price you
paid for the  original  diskette.    You will, however, have to send back your
original diskette to the publisher to get the upgrade price.

    I will not be  upgrading the  publisher  everytime  I add new  features to
uC/OS.  However, I will upgrade the publisher whenever a bug is discovered and
fixed.

    If you find a bug in the most recent release, you will get a FREE upgrade.

    I  would  highly  suggest that you resist changing the  STYLE  of the code
unless you don't mind spending many hours doing so everytime you upgrade.
/*$PAGE*/
--------------------- FEQUENTLY ASKED QUESTIONS / PROBLEMS -------------------

 1) My computer/processor 'hangs' when I run uC/OS!

    An executable for uC/OS is provided on the diskette.  If uC/OS still hangs
    with the  executable  provided on the floppy, try to contact me.  If uC/OS
    does not  hang with the executable provided on the floppy then you need to
    look  at  'OSIntCtxSw'  (see pages 62, 63 and 67 in  the  book)  which  is
    processor specific.  The very first  instruction in 'OSIntCtxSw' may  need
    some adjustment, i.e. ADD SP,6.  You will notice that for the SMALL memory
    model,  the constant is 6 while for the LARGE model, it is 10!  If you use
    another processor, compiler or memory model,  you may  need to  adjust the
    constant.


 2) Where should I enable the 'tick' interrupt ?

    You should  enable the tick  interrupt  AFTER you have started  uC/OS in a
    'startup' task as shown in the  example  code.   This way, the OS is in  a
    state ready to accept interrupts and can thus process interrupts.


 3) The executable on the floppy  works  fine  but when I compile with Borland
    C++ V3.0, the program crashes ?

    uC/OS was actually compiled with V3.1 and not V3.0.   You  may want to get
    that version of the compiler (or higher).  I actually have  uC/OS  running
    with V4.51.  In any event, try looking at item 1).


 4) Does uC/OS work with Microsoft C/C++ ?

    Yes, you will have to adjust the  SP  offset  constant  (see item 1))  and
    disable stack checking.   Others have used the  Microsoft compiler without
    too many problems.

/*$PAGE*/
 5) Are there other ports available for uC/OS ?

    Yes.  uC/OS has been ported to a large number of  processors.   See 6) for
    ports available from chip vendors.

    You can contact me to obtain the port you are interrested in.

/*$PAGE*/
 6) uC/OS ports available from microprocessor/microcontroller manufacturers?

    a) Philips Semiconductors, Inc.
       Processor   : XA
       Description : The  Philips  Semiconductors XA  (eXtended  Architecture)
                     family of  16-bit  microcontrollers  provides  an  upward
                     compatibility  path  for  80C51  users  who  need  higher
                     performance or more than 64K of program/data memory.

                     The high-performance Philips XA supports the bit-oriented
                     operations of the  80C51  while incorporating support for
                     multitasking  operating  systems such as  uC/OS and high-
                     level  languages such as C.   Existing  80C51 code can be
                     translated to run on the XA.   The  speed  of  the XA, at
                     least 10 to 100  times  greater  than  the  80C51,  gives
                     designers an easy path to truly high performance embedded
                     control.

       App. Note   : You may also want to get a copy of AN-711, an application
                     note I wrote for Philips describing how uC/OS was ported
                     to the XA.

       FTP Site    : ftp://ftp.ibsystems.com/pub/philips-mcu/bbs/xa/rtos
       Filename    : UCOS_XA.EXE

       BBS         : 1-800-451-6644
                     1-408-991-2406
                     31-40-2721102


    b) VLSI Technology, Inc.
       Processor   : ARM
       Description : The ARM is a 32-bit RISC processor.
       Contact     : Art Sobel
                     408-434-7671
                     art.sobel@sanjose.vlsi.com

       FTP Site    : ftp.vlsi.com
       Login       : armsw
       Password    : JStart
       Instructions: cd outpoing
                     bin
                     get uCOS.tar.gz
                     bye

/*$PAGE*/
----------------------------- uC/OS RELEASE NOTES ----------------------------

December 9, 1997: V1.11
-----------------------

 1) Removed two lines in  IX86L_A.ASM,  function  OSStartHighRdy, because  the
    code didn't do  anything.   This  was  reported  by  Mr Mike Hostetler  of
    BITWORKS.

 2) Added  code  to save the  SS  register  in  EX1L.C.   This  ommission  was
    reported by Mr Mike Hostetler of BITWORKS.

 3) Added a way for  OSTaskDelReq()  to  notify  its caller whether a task has
    been deleted or not.   OSTaskDelReq() now returns OS_TASK_NOT_EXIST if the
    requested task has been deleted and OS_NO_ERR if the task is still active.
    This suggestion was provided by Mr Mike Hostetler of BITWORKS.
    
 4) In ALL processor versions, OSTaskCreate() MUST be changed as follows.  The
    code prevents other tasks from creating another task at the same priority,
    at the same time.  This situation was very unlikely to happen because your
    application  should not have been doing this in the  first  place  anyway.  
    This condition was reported by Mr. Alain Chebrou.   

    UBYTE OSTaskCreate(.....)
    {
        ???   *stk;
        UBYTE  err;
 
        OS_ENTER_CRITICAL();
        if (OSTCBPrioTbl[p] == (OS_TCB *)0) {  
            OSTCBPrioTbl[p] = (OS_TCB *)1;        <<< ADD this code!
            OS_EXIT_CRITICAL();
            .
            .
            .
            if (err == OS_NO_ERR) {
                if (OSRunning) {                 
                    OSSched();
                }
            } else {                              <<< ADD this code!
                OSTCBPrioTbl[p] = (OS_TCB *)0;    <<< ADD this code!   
            }
        }
        .
        .
    }
    

July 18, 1997: V1.10
--------------------

 1) The  local variable 'cnt' in the function  OSSemAccept()  should have been
    declared UWORD instead of WORD.  This has now been corrected.

 2) I significantly improved the  performance of  the  test  code  by  writing
    directly to video RAM of the PC.  This assumes that you have a VGA adapter
    on your PC  (almost everybody does by now!).   If  you  have  a monochrome
    adapter and the .EXE supplied on the  floppy  doesn't  work then, you  may
    want  to  try  to  change  the  constant  0xB800 to 0xB000  in the display
    functions (i.e. see TEST.C).

 3) Wrapped all the code associated with SEMAPHORES, MAILBOXES and QUEUES with
    OS_SEM_EN, OS_MBOX_EN, and OS_Q_EN, respectively.

 4) Added comments to the code.

 5) A  bug  was  discovered  by Mr Leor Weinstein of PantaSoft.   The function
    OSTimeDlyResume() has an error in the first assignment to ptcb as follows:
        ptcb = (OS_TCB *)&OSTCBPrioTbl[prio];
    should be:
        ptcb = (OS_TCB *)OSTCBPrioTbl[prio];
    same without '&'.

 6) Mr  Leor  Weinstein  also  suggested  that  some  code  and  variables  be
    conditionally compiled in order to save memory.  This has been done.

 7) Mr  Daniel  Wisehart  suggested  that  the  PSW  of  80x86  processors  be
    initialized to 0x0202 instead of 0x0200 as per required by Intel.

 8) Mr J. Picard  suggested  that  the  order of the MOV instruction for 80x86
    processors w/r to loading and storing the  SS:SP  registers  in  the large
    model be changed.  Thus, the following code has been changed from:
       MOV  SP,ES:[BX]
       MOV  SS,SS:[BX+2]
    to:
       MOV  SS,SS[BX+2]
       MOV  SP,SS[BX]


June 21, 1996: V1.09
--------------------

 1) The configuration #defines found in UCOS.H have now been removed from this
    file and moved  to a  new  file  called  OS_CFG.H  which is  assumed to be
    application specific.   Also, all  processor specific #defines must now be
    placed in the processor's .H file.  I thus intend to have OS_CFG.H contain
    all PRODUCT specific #defines while the processor's .H file  will  contain
    NON-PRODUCT specific #defines and macros (i.e. processor specific code).

 2) Mr. Uri Sabadosh reported a problem with  OSMboxPend()  and  OSQPend().  A
    race  condition exist in the  following scenario.   There are two tasks, 8
    and 9.   Task 9 PENDs on mailbox 'Mbox' with a timeout. The ticker readies
    task 9 because the timeout has elapsed but, before task 9 gets a chance to
    run, task 8 (higher priority) POSTs a message into 'Mbox'.  At that point,
    task 9  has timed out  waiting for the  message but,  the message has been
    placed in task's 9 OS_TCB.   When  task  9 got to execute it checked for a
    timeout instead of checking for a message first.   In  this  scenario, the
    message was lost!  The problem has been corrected.

 3) I added the test files for the LARGE model of the Intel  80x86.   You will
    find these files in the \SOFTWARE\UCOS\EX1_X86L directory.


July 21, 1995: V1.08
--------------------

 1) The following changes have been implemented to support futur  enhancements
    to uC/OS and to correct a bug.  The overall  functionality  of  uC/OS  has
    otherwise not been changed in this version from V1.07.

 2) V1.08 corrects a bug reported by  Mr Gene Chouiniere  on 6/9/95.   The bug
    occurs when a task pends on a  queue  or a  mailbox  with a timeout and is
    subsequently suspended by another task.   If OSTimeTick()  decrements  the
    timeout to 0 before the  suspension  is  removed  the  task  is  not  made
    ready-to-run by OSTaskResume()  and the task thus 'hangs'.  The correction
    was to make OSTimeTick() leave 1 tick if the task is suspended.   The task
    will be made ready-to-run  on the next tick  following the  removal of the
    suspension.

 3) Changed 'far' to 'OS_FAR'.   This allows the keyword 'far' to be used in a
    different context than the one assumed by Intel for the x86 processors.

 4) Added the  #define  OS_IDLE_TASK_STK_TOP  (see UCOS.H)  which  is  used to
    define the index into  OSTaskIdleStk[]  where  the  top  of  stack starts.
    This has been done to support  processors that have stacks starting at low
    memory and which grows upwards as opposed to downwards.
    OS_IDLE_TASK_STK_TOP  is  used  in  OSInit()  to  initialize the idle task
    stack.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -