Readme.txt
上传用户:jyxpgd88
上传日期:2013-04-13
资源大小:90k
文件大小:8k
源码类别:

uCOS

开发平台:

C/C++

  1.           The uC/OS-II port for Keil C V7.07 or higher
  2.           By Stuart Wright, England, (swright@jiskoot.com)
  3. This port for the Dallas 80C390 was based on a port for the 8051 by 
  4. John X. Liu from China (johnxliu@163.com). Johns port was a very clear 
  5. and consise port which allowed me to easily port and testing of this 
  6. port. Incluced within this port are a number of his test files.
  7. 1. About this port.
  8.       This package contains the files of porting uC/OS-II V2.70  to
  9.       Keil C environment,  including  the  necessary head files and
  10.       source files and an example to show how to use this port.
  11. 2. Files list.
  12.       This package  only  included  the  files specific to port for 
  13.       Keil C, and  assumed that you have all the other uC/OS source 
  14.       files.
  15.       Porting files:
  16.           OS_CPU.H    Defines the data types and some macros needed 
  17.                       by uC/OS.  Also  defines some macros to work-
  18.                       around  the problem that some keil c keywords 
  19.                       were used  as identifiers  in uC/OS-II source 
  20.                       files.
  21.           uCOS_II.H   Header file for OS functions, all functions 
  22.                       have been declared KCREENTRANT.
  23.           OS_CPU_C.C  The c part of porting source files.
  24.           OS_CPU_A.ASM  The assembling language part of the port.
  25.       Example files:
  26.           OS_CFG.H    The configuaration file, specific to every 
  27.                       application, used to define what features of 
  28.                       the os are needed to be included 
  29.           EX1L.C      The example file ported from borland c++ port
  30.                       which can be found in directory:
  31.                             SOFTWAREuCOS-IIEX1_IX86L
  32.           PC.H        The PC-emulating head file, ported from its
  33.                       original directory SOFTWAREPC
  34.           PC.C        The PC-emulating source file,implementes PC's
  35.                       display screen, ported from SOFTWAREPC
  36.           PC51EMU.DLL   The debug DLL of Keil UV2 degugger environ-
  37.                         ment. To be used to emulate the behavior of
  38.                         a PC display screen.
  39.           START390.A51  File to configure the dallas 80C390 processor
  40.           EX1KC51.UV2   The example's project file.
  41.           EX1KC51.OPT   Option file of the project.
  42.       Document: 
  43.           Readme.Txt   This file.
  44. 3. About the porting files.
  45.       The required functions have been implemented according to the
  46.       description in the book 'uC/OS-II, The Real-Time Kernel'. Mainly 
  47.       the work of porting is arround how to save the status of CPU
  48.       and restore it later.  The status include the register ACC,B,
  49.       PSW, DPTR,IE,R0-R7,SP, and the hardware stack resides in 8051
  50.       strach RAM. This work is fulfiled by c code in OS_CPU_C.C and
  51.       some assembly code in OS_CPU_A.ASM.
  52.       Due to the specific grammer of keil c, the functions declared
  53.       by default are non-reentrantable.  If you need re-entrantable
  54.       function, you must add a 'reentrant' after the declaration,
  55.       like this:
  56.          func() reentrant
  57.          {
  58.            .
  59.            .
  60.            .
  61.          }
  62.       So it is necessary to modify the declarations and definitions
  63.       of uC/OS-II's system functions to make them work as expected.
  64.       Head file uCOS_II.h declares all uC/OS functions reentrant.
  65.       But you still need do lot of things.  You need modify all the
  66.       uC/OS-II function declarations in .h files and definitions in
  67.       .c files so as to make them conform to the respective ones in
  68.       uCOS_II.h.
  69. 4. The example.
  70.       The example comes from SOFTWAREUCOS-IIEX1_IX86L,  which is
  71.       intended running under MS-DOS originally.  Seeing it's a nice
  72.       illustration of uC/OS multi-tasking feature, I included it in
  73.       this port for keil c environment. In order to show the result
  74.       I wrote a Keil UV2 debugger simulator DLL to emulate PC's the
  75.       display screen to show the result of the examle.  It maps the
  76.       XDATA:0-0x1000 as PC's display buffer at B800:0 and  displays
  77.       the characters and attributes as same as PC does.  To see the
  78.       result of the example, you should copy the PC51Emu.DLL to the
  79.       Keil's C51Bin directory and add '-dPC51Emu' at the paramters
  80.       editbox of dialog DLL in debug panel of the project's options.
  81. 5. Compiling and running the example files.
  82.       First, Unzip the files in this package to a directory,  
  83.       i.e. SOFTWAREuCOS-III8051Keil, make the directory current.
  84.       Then copy all uC/OS files in the directory SOFTWAREuCOS-II
  85.       SOURCE to the current directory, edit the declarations of all
  86.       functions and the definitions in OS_*.C to make
  87.       them same with the  respective ones in UCOS_II.H.
  88.       Second, Run Keil UV2 IDE, open the project file "Ex1KC51.UV2", 
  89.       click compile or build, let KC compile all the source files,
  90.       and build the target Ex1Kc51. If any error occurs, correct it.
  91.       Mostly circumstance  it is due to incorrect modifing of uC/OS
  92.       source files.  It is rather simple to find the mismatches out
  93.       and correct them.
  94.       Third, start debugging,and check the peripheral menu,you will 
  95.       see a menu item 'Virtual screen' added there.  Click the menu
  96.       item, a PC-liked virtual screen window will display.  Run the
  97.       example in full speed, you will see the output of the example
  98.       shown on the virtual screen window.
  99.       You may run the original example in SOFTWAREuCOS-IIEX1_I86L, 
  100.       to have a comparation between them.
  101. 6. Adapting this port in your application.
  102.    1) Copy the files you need from the directory of this example to
  103.       the directory of your project.
  104.    2) Edit the OS_CPU.H and select a critical method best to you by
  105.       set the OS_CRITICAL_METHOD to 1,2, or 3. You may refer to the
  106.       book 9.03.02 to decide which method to be used.
  107.    3) Read and edit the OS_CFG.H and decide what system services
  108.       you need include in your project.
  109.    4) Write your own interrupt service routines as demonstrated in
  110.       OS_CPU_C.C. If you like you may reimplement the OSTickISR.
  111.    5) At least in your first task you must write code to initialize 
  112.       the timer that uC/OS uses. If you change the timer rate, you 
  113.       must change the OS_TICKS_PER_SEC to the right value as well.
  114. 7. Support for multiple DPTR's of the Dallas 80C390
  115.       The code can support the second DTPR of the Dallas 80C390 this
  116.       requires a number of changes to the code
  117.    1) The first change required is to the function "OSTaskStkInit" in
  118.       the file OS_CPU_C.C. This function contains 5 lines of code are 
  119.       currently commented out, to enable support for the second DPTR
  120.       this code must be uncommented.
  121.    2) The second change must be performed within the file OS_CPU_A.A51.
  122.       This file has two macros called PUSHR and POPR, these are used 
  123.       to push and pop the registers to and from the stack. Within both 
  124.       of these macros there are two versions of the registers to push 
  125.       and pop. Currently the register list for one DPTR is uncommented 
  126.       and the list for two DPTR's is commented out. The commenting must 
  127.       must be swapped around to enable the second DPTR
  128. 8. The arithmetic unit of the Dallas 390
  129.       This arithmetic unit appears to work ok on condition that you 
  130.       only use this unit within one process or interrupt. I do not 
  131.       believe it is possible to allow more than one process or interrupt 
  132.       to use this unit due to the way this unit functions. See relevent
  133.       Dallas 80C390 literature.
  134. 9. System clock speed and timing.
  135.       Currently the system is set for a clock speed of 29491200Hz which
  136.       is what I use within my system. To change this you need to change 
  137.       the "#define CLOCK_SPEED" within the file EX1L.C as well as within
  138.       the Keil project settings.
  139.     
  140. 9.Limitations.
  141.       This port has some limitations, listed as below.
  142.    1) Only large mode is supported.
  143.    2) Does not support register banking.
  144.    3) Does not support RET_PSTK or RET_XSTK option.
  145.    4) Only supports the standard 8051 register stack (IDATA). The Dallas 
  146.       80C390's exteneded 1K stack is currently not supported.