| Title
|
Files
|
Version
|
Updated
|
SDCC_8031sdk_uCOS-II-.0002.tar.gz
SDCC_8031sdk_uCOS-II-.0002-CRLF.tar.gz
|
Makefile
includes.h
test.h
os_cfg_r.h
ucos_ii.h
|
os_cpu.h
ringbuf.h
test.c
os_cpu_asm.mcs51
os_cpu_c.c
|
isrs.c
os_dbg_r.c
os_mem.c
os_flag.c
os_mutex.c
|
os_task.c
ringbuf.c
os_core.c
os_mbox.c
os_q.c
|
os_time.c
ucos_ii.c
os_tmr.c
os_sem.c
|
|
.0002
|
10/22/2006
|
ChangeLog
- Facilities to write Interrupt Service Routines from C code, better then uC/OS-II default
Assembly ISRs. OSIntSaveCtx(); OSRestoreCtx(); OSIntEnter(); OSIntExit(); in SDCC_uC/OS-II document.
C SerialISR, Timer2ISR, Timer0ISR(making I2C bus to ultra sonic sensor).
- Test App runs DeadLock Test, Priority Inverson Test, Priority Inheritance Test,
and Strict Priorities Test. Also implements I2C bus Interfaced to uC/OS-II task to range find
objects with Ultra Sonic Sensor. Requires Breadboard and circuitry and Sensor External to
8031sdk.[incomplete]
- Unsigned Chars (OSIntNesting, OSPrioCur, OSPrioHighRdy, OSRdyGrp, OSRdyTbl[]) and
OS_TCB ptrs * (OSTCBCur, OSTCBHighRdy, OSTCBPrioTbl[]) put statically in 8032 Internal Ram
decreasing Context Switching Time by 40uS and Scheduling Time by 20uS. The loss is 32 bytes of
Reentrant Function Call Stack but with 215 left we can still nest 25 or so routines deep if our
Parameters and Local Vars like SDCC_uC/OS-II estimations. Deepest uC/OS-II function Nesting is
15.
- xdata Pointers used throughout uC/OS-II code instead of generic 3 bytes pointers. 2 for 3
and as they all go onto the Reentrant Function Call Stack. Savings can be great as shown in
SDCC_uC/OS-II document. For Deepest nested uC/OS-II function calls it would be 45 bytes saved.
Increasing possible function nesting by 7.
- Timer2 used for OSTickISR with auto-reload so more accurate. Timer0 cannot be used with auto-reload
for OSTimeTick() because it is only 8-bit auto-reload, without auto-reload off course is can be
16-bit and make 100Hz, but then Time will drift faster. Timer2 can do 16-bit Auto-Reload.
- Timer0 makes I2C bus protocol because 8-bit auto-reload can bit-bang Port0.0-1 pins and easily make
the protocol [incomplete]
|
| Title
|
Files
|
Version
|
Updated
|
SDCC_8031sdk_uC/OS-II-.0001.tar.gz
SDCC_8031sdk_uC/OS-II-CRLF.0001.tar.gz
|
Makefile
includes.h
test.c
os_cfg_r.h
ucos_ii.h
|
os_cpu.h
os_cpu_asm.mcs51
os_cpu_c.c
|
os_dbg_r.c
os_mem.c
os_flag.c
os_mutex.c
|
os_task.c
os_core.c
os_mbox.c
os_q.c
|
os_time.c
ucos_ii.c
os_tmr.c
os_sem.c
|
| .0001
|
8/29/2006
|
ChangeLog
- Context Switching and Scheduling works. Task creation works. Interrupts in Assembly work.
Interrupt Context Switching works. uCos services all work including FLAGS. Test app makes
bunch of Task and has them delay and interrupt each other at random intervals output to the
8032 Internal Serial Port with Task specific text to see valid results. 5 Tasks
- OSCTXSw: Context Switching code called by Scheduler when Task gives up the MCU by either
calling OSTimeDly(), Pending on a resource that is unavailable... Very Hardware
and compiler dependent. Diff Compilers use diff stack base pointers
- OSSTaskStkInit: Called when Task are created, sets up their initial Stack with 8032 Registers,
SDCC pseudo function registers(stack base pointers), Also put stack data argument
into dptr and accumulator so Task get their stuff right.
- OSIntCtxSw: Context Switching from interrupts, only restores task does not save current, that must
be done before call, at start of ISR
- OSTickISR: Assembly language, save running context, calls OSTimeTick() then either returns to
itself if no new Task to run, or OSTimeTick() never lets code return to OSTickISR(), it
calls OSIntCtxSw and a new Task runs, with the old left at the place when the Interrupt
happened.
- OSStartHighRdy: Called only once when the operating system is started
OSCtxSw, OSStartHighRdy, OSIntCtxSw, OSTickISR, OSTaskStkInit, os_cpu.h, os_cpu.c
ucos_ii.h, includes.h,
|