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

📄 readme.txt

📁 os源代码 os源代码 os源代码 os源代码 os源代码 os源代码
💻 TXT
字号:

Floating point implementation of uC/OS-II for the Motorola MPC555

Rebecca Williams, Dept. 2338
Sandia National Laboratories
----------------------------------------------------------------------


Board and compiler requirements
-------------------------------

This port of uC/OS-II is designed for the Axiom Manufacturing board and the
Motorola MPC555 chip.  Register configuration is done through actual code
as opposed to an initialization file.  This keeps the final burn version
from becoming too different from the debug version.  For details about the
Axiom board contact www.axman.com

The compiler used is Metrowerks CodeWarrior 5.0.  The interface should be
a Macraigor BDM Wiggler.

__start.c and __ppc_eabi_init.c are copyrighted (c) 1996-97 by Metrowerks.


Tradeoffs
---------

** Memory **

The Axiom board has no external RAM, and so memory is very limited.
Creating a stack frame for any RISC processor is problematic due to the
sheer number of registers.  Creating a floating point implementation
exacerbates the problem since the floating point registers are all 64
bits wide (as opposed to the GPR registers, which are all 32 bits).
In order to keep the entire implementation of the O/S within the available
RAM space, I chose to make the individual task stacks very small.  This
does not allow for a lot of interrupt nesting.  Since this is a very
basic implementation with only a few simple tasks, I can get away with
very shallow stacks.  To create a more robust system, more stack area
will be required.

If your RAM is limited, you may wish to economize in one of these ways:
1) Have as few tasks as possible, or
2) Eliminate floating point operations completely, remove all Assembly 
   language references to the FP registers, and change the OS_STK
   definition to INT32U, or
3) If you still need floating point operations, make the modifications
   as per (2) but perform all floating point operations in critical mode

** Frequencies **

The Axiom board uses a 4 MHz external crystal, but the internal phase-lock
loop on the MPC555 causes a clock rate of 20 MHz.  The Decrement interrupt
is what drives the uC/OS-II time tick.  Right now, the system is set up
so as to produce a 1:1 ratio for the clock driving the Decrement register.
So loading 0x30D40 (200000) into the decrementer produces a time tick at
approximately 100 Hz.  You may manipulate the time tick frequency by 
adjusting the value loaded into the Decrement register in the 
SetDecrementer() function.

** Debugger Issues **

Note that the BDM debugger will not duplicate the behavior of the Decrement
register on each instruction.  The Decrement register is free-running and
will not be controlled by stepping through it.  Similarly, the BDM debugger
does not accurately capture the contents of key registers.  Recall that
the BDM input is not an emulator, it is actually an interrupt built into
the 555 chip.


Tasks
-----

Three very basic tasks (A, B, and C) are initialized.  The purpose of each
task is to write a very simple serial string to the serial port.  The 
serial connection uses the following format:

9600 Baud
No parity
1 stop bit
Hardware flow control

Only one project, the Debug version, has been built and tested.  In order
for the interrupts to work, they must be either dual-mapped into memory
(see Section 10 of the MPC555 User's Manual) or burned into the CMFI FLASH
memory (see the Axiom manual).



----------------------------------------------------------------------
Sandia National Laboratories does not warrant or guarantee the
functionality of this port in any way, and makes no recommendation 
concerning the suitability of this port for any particular task.
----------------------------------------------------------------------

⌨️ 快捷键说明

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