r1_6_2_st_tool
所属分类:单片机开发
开发工具:C/C++
文件大小:9744KB
下载次数:221
上传日期:2006-11-18 10:18:59
上 传 者:
schlin2999
说明: ST方案机顶盒开发系统平台,其中有一些例子.
(program development platform, which has some of the examples.)
文件列表:
r1_6_2_st_tool (0, 2005-01-03)
r1_6_2_st_tool\autorun.inf (55, 1997-07-28)
r1_6_2_st_tool\ctl3d32.dll (25088, 1997-07-28)
r1_6_2_st_tool\inquest.ico (766, 1997-07-28)
r1_6_2_st_tool\libcxx2.lib (25555, 1999-07-23)
r1_6_2_st_tool\logo.bmp (72318, 1997-07-28)
r1_6_2_st_tool\setup.exe (47616, 1997-07-28)
r1_6_2_st_tool\setup.ins (63856, 1998-10-18)
r1_6_2_st_tool\setup.pkg (11529, 1998-10-18)
r1_6_2_st_tool\st20.rc (440, 1998-06-07)
r1_6_2_st_tool\uninst.exe (286723, 1997-07-28)
r1_6_2_st_tool\version (1906, 1998-10-20)
r1_6_2_st_tool\_inst32i.ex_ (306666, 1997-07-28)
r1_6_2_st_tool\_isdel.exe (8192, 1997-07-28)
r1_6_2_st_tool\_isuser.dll (22528, 1998-09-03)
r1_6_2_st_tool\_setup.dll (10752, 1997-07-28)
r1_6_2_st_tool\_setup.lib (43957, 1997-07-28)
r1_6_2_st_tool\make.exe (77882, 2002-03-27)
r1_6_2_st_tool\bin (0, 2005-01-03)
r1_6_2_st_tool\bin\console.exe (4608, 1998-05-07)
r1_6_2_st_tool\bin\conspawn.exe (4608, 1998-05-07)
r1_6_2_st_tool\bin\debrtos.dll (121344, 1998-10-12)
r1_6_2_st_tool\bin\genedsrv.exe (6656, 1998-05-07)
r1_6_2_st_tool\bin\jpidiag.exe (109056, 1998-10-15)
r1_6_2_st_tool\bin\libmsg.dll (5632, 1998-05-07)
r1_6_2_st_tool\bin\msvcrt40.dll (312832, 1995-09-29)
r1_6_2_st_tool\bin\noteserv.exe (6656, 1998-05-07)
r1_6_2_st_tool\bin\ntdinst.exe (25088, 1998-10-12)
r1_6_2_st_tool\bin\ptcomp.exe (95232, 1998-06-07)
r1_6_2_st_tool\bin\ptlink.exe (164864, 1998-06-07)
r1_6_2_st_tool\bin\st20cc.exe (215040, 1998-10-13)
r1_6_2_st_tool\bin\st20cfxx.exe (759808, 1998-06-07)
r1_6_2_st_tool\bin\st20gcpp.exe (130560, 1998-06-07)
r1_6_2_st_tool\bin\st20icc.exe (1170432, 1998-10-14)
r1_6_2_st_tool\bin\st20libr.exe (227840, 1998-06-07)
r1_6_2_st_tool\bin\st20link.exe (498176, 1998-10-18)
r1_6_2_st_tool\bin\st20list.exe (185856, 1998-06-07)
r1_6_2_st_tool\bin\st20o.dll (36864, 1998-06-03)
r1_6_2_st_tool\bin\st20run.exe (1217536, 1998-10-18)
r1_6_2_st_tool\bin\st20sim.exe (445952, 1998-06-07)
... ...
OS/20
release 2.05.03
This release of OS/20 is for use with both the OS-link based toolset,
(ST20-SWC, release 2.0, on both Sun and PC platforms) and DCU based
toolset (Osprey, release 1.6).
Known problems with this release:
- (OS link only)
the OS/20 trap handler is always copied into internal memory, by
allocating from the internal memory partition. This means that
it is not possible to have a completely static installation, despite
the comments to the contrary in the user manual.
- Normal priority semaphores still can not be signalled from interrupt
handlers or high priority processes, however priority semaphores
with timeouts can be used in this way.
Interrupt latency
-----------------
OS/20 has been designed to be used in set-top-box applications with a
software demultiplexor. On current chips this requires a very low
interrupt latency to ensure that packets are not dropped. The largest
block of code for which interrupts are disabled is the scheduler trap
handler, invoked by the hardware every time a context switch may be
required.
The length of time the trap handler executes for is heavily dependent
on the environment it is run in. For this reason the internal memory
partition is used for some critical allocations:
- trap handler code
- trap handler workspace
- all important variables
- normally all task's 'TDesc' structures (created using task_create)
In addition is is recommended that the workspace for interrupt handlers
is allocated from the internal memory partition, as the trap hander
will have to access this to perform context switches while an interrupt
is active.
When all these actions are taken, it is possible to reduce the
interrupt latency to a maximum of 6uS on a C4B core, less on a C2B.
BETWEEN_HIGH_AND_LOW
--------------------
In many cases the interrupt latency introduced by the scheduler trap
handler is acceptable. However in some cases it may be necessary to
reduce it even further.
The configuration option BETWEEN_HIGH_AND_LOW allows the scheduler trap
handler to run with high priority interrupts still enabled. The
advantage of this configuration is that high priority processes and
interrupts can run with only the hardware latency.
However, an unfortunate side effect of doing this is that it is now the
user's responsibility to ensure that the scheduler trap handler is not
re-entered. Low priority interrupts are still disabled, so re-entrency
can only occur if a high priority process or interrupt performs an
operation which will generate a low priority scheduler trap.
In particular this means that some operations cannot be used from high
priority:
- signalling a semaphore which could have a low priority OS/20 task
waiting on it
- performing any channel operations where the other end of the
channel is connected to a low priority OS/20 task
However communication between the high priority process and the low
priority OS/20 task can still be performed, as long as it is through a
mechanism which will defer the communication until it is safe to enter
the trap handler. The easiest way to do this is to use a low priority
interrupt, which is triggered from high priority but doesn't run until
the high priority process has descheduled, and the trap handler has
completed (if it was executing). An example of this is provided in the
"examples/between" subdirectory.
Building
--------
To rebuild OS/20 (Unix):
- cd to the top level directory of the OS/20 source tree
- make -f makefile.top tp
- libraries and header files will be copied into the dist-tp
subdirectory
- Ignore errors about failure to copy example files
To rebuild OS/20 (PC):
- cd to the top level directory of the OS/20 source tree
- make -f makefile.top tp-pc
- libraries and header files will be copied into the dist-tp
subdirectory
- Ignore errors about failure to copy example files
Change history
--------------
v2.02.01
- DCU 'product' release with Osprey 1.1.
v2.02.02
- Fix DCU dependencies for OS-link release
v2.02.03:
- Changes to adapt to the new C1 calling conventions.
v2.02.04:
- A number of changes have been made to the scheduler trap handler to
improve performance.
- Code to move the scheduler trap handler's code into internal memory
has been reinstated.
- BETWEEN_HIGH_AND_LOW option reinstated.
v2.03.00
- added #pragma ..._translate to all visible functions in the header
files.
- added CONF_INTERRUPT_RESTORE_REGS and CONF_INTERRUPT_PRIORITY_FIX
macros and associated work arounds to overcome C2 silicon bugs.
- added a task_class to the task structure to ensure the new function
task_delete works correctly for tasks created with both task_create
and task_init.
- added a check to task_unlock to ensure SchedulerLock doesn't go
negative.
v2.03.01
- Removed the dependence on __CORE__ when compiling with the DCU toolset,
and require Cx_CORE to be explicitly defined.
- added functions interrupt_uninstall and interrupt_delete.
v2.03.02
- added CONF_INTERNAL_CHANNEL_STATUS_FIX and CONF_SAVE_2DBLOCK_MOVE.
- fixed a bug in kernel_initialize which failed to report one memory
allocation failure.
- moved interrupt controller related data from os20i.h to a new files:
intregs.h.
- fixed the return type of task_delete (was void, should have been int).
- broke the interrupt.c file into multiple files, one function per file.
- fixed a confusion in roottask_stack_size/_base for OS link, over
what the 'base' of the stack means. This fixed a bug which prevented
main returning correctly because the exit longjmp was being corrupted.
v2.03.03
- added semaphore_wait_timeout for FIFO semaphores.
v2.03.04
- fixed a bug in the implementation of semaphore_wait_timeout which
could cause corruption of local workspace.
v2.03.05 (internal release only)
- A complete re-write of the semaphore_wait_timeout code, which resulted
in a much more reliable mechanism.
- Implemented a simple profiling mechanism, enabled by CONF_TIME_LOGGING.
- Added message_delete_queue.
- Fill in task stack with a known value to aid workspace usage
calculations.
v2.03.06 (internal release only)
- Added CONF_HIGH_PRI_INTERRUPT_SWITCH to allow context switching from
high priority interrupt handlers.
- Added InterruptStack array to record details of interrupt stack usage,
so that st20run can display interrupt handlers.
- Commented out workspace filling, as it causes problems for some
applications. To be investigated.
v2.03.07
- Fixed a problem with the level triggered interrupt workaround,
which prevented it working when compiled with the DCU toolset
- Added CONF_INTERNAL_CHAN_ALT_FIX instead of using the CORE macros.
- Added DDTS bug numbers for the workarounds in conf.h
v2.03.08
- Inherit the breakpoint, error and system portion of Enables (groups
0-2) from the start up value. This allows more control over the
selection of debugging flags.
- Fixed a problem with semaphore_create_fifo which prevented it being
used with semaphore_wait_timeout.
v2.03.09
- Renamed various files to fit within 8.3 filename restrictions, and
added PC makefiles
- Change to C1 software interrupts to ensure that no interrupts are
lost, or spurious interrupts triggered when there is nothing to do.
v2.03.10
- restored CONF_HIGH_PRI_INTERRUPT_SWITCH code in kernel.c which was
accidently deleted in 2.03.07 version.
v2.04.00
- Changed timeouts on FIFO semaphores to use a doubly linked list,
faster than the previous implementation.
- Added support for timeouts on priority semaphores.
- Changed the initialisation of timeouts on semaphores to require a
different initialisation function, reduces complexity (no need to
convert existing queue from singly linked to doubly linked lists)
and memory requirements. Introduced four new functions:
semaphore_init_fifo_timeout semaphore_create_fifo_timeout
semaphore_init_priority_timeout semaphore_create_priority_timeout
- Implemented timeouts on message queues. Four new functions:
message_init_queue_timeout message_create_queue_timeout
message_claim_timeout message_receive_timeout
- Changed locks in message queue functions from task to interrupt,
allowing them to be used from interrupt handlers.
- Added CONF_C1_INTERRUPT_SYNC_FIX for a C1 interrupt bug.
- Added locks around updates to software interrupts register, to
remove possibility of spurious interrupts.
- Clear pending bit in C1 interrupt handler when looping. Removes
another source of possible spurious interrupts.
- Split task.c into multiple files.
- Wrote PC makefiles for OS-link toolset version.
- Added per task data pointer, two new functions:
task_data task_data_set
- Modified task_id to make it work from high priority processes.
- Replaced task_end function with task_exit, now callable from anywhere.
- Added task exit function, and a new function:
task_onexit_set
- Renamed task_[gs]et_priority to task_priority and task_priority_set.
- Removed __FULL_DEBUG__ to mean Inquest support and introduced two
new macros CONF_INQUEST_SUPPORT and CONF_EXIT_TRAP_IDLE_SUPPORT.
- Changed version numbering to use macros in kernel.h, and generate an
information module which can be inspected with ilist/st20list.
- Moved finished channel from the tdesc_t to task_t, as no STi5500's
have the problem of channels in +ve addresses any more.
v2.04.01
- Added KernelState and modified semaphore_init_generic so that
task_lock only called when the kernel has been initialised. Avoids
a NULL pointer dereference.
- Changed interrupt number validity check in various functions from
InterruptInputs (which was wrong anyway, it should have been
InterruptNumbers) to INTERRUPT_INPUTS to allow more numbers than
the hardware supports.
v2.05.00
- Added support for C1.
- Added task_suspend (and task_flags_suspended to task_init) and
task_resume.
- Implemented task_priority_set when applied to another task.
- Added extern "C" in all header files
v2.05.01
- Lots of C1 context switch performance improvements
- Implementation of missing C1 functions (timeouts on semaphores and
message queues, task_suspend, task_resume and task_wait).
- Fixed a race condition in the CLEAR_PENDING work around,
which could cause software interrupts to be lost.
- Created a proper channel class, allowing channel_delete to be
implemented
- Implemented chan_reset, and removed the channel reset from
chan_init_address
- Made channel and semaphore lists available through function calls,
in the same way as task lists were previously.
- Changes to C2 kernel profiling: record min, max total and count
for each path, and split one path into two, making a total of eight.
- Changes to C2 time logging: introduced functions to retrieve the
results and task_ps, introduced interrupt time logging and
corresponding functions to retrieve results and interrupt_ps,
put stack filling for tasks and interrupts back in, and added option
to init functions to suppress it.
- Added CONF_INTERRUPT_PARAM making the parameter to interrupt handlers
option to reduce memory usage.
- Renamed interrupt handler sections (Osprey toolset) to remove
ambiguity, and bring into line with other OS/20 section names.
v2.05.02
- Fixed task_priority_set() so that task with a new priority is scheduled
accordingly.
- Fixed task_wait() on C1 which caused a waiting task to deschedule
indefinately when waiting on a task which had already terminated.
- Several changes made to OS/20-C1. Timer interrupt handler has been fixed
so that timer events are no longer missed. Interaction between OS/20 and
plug-in module has been improved. Various enhancements made to plug-in
module.
- Introduced CONF_INTERRUPT_LOCK_RECORD to record the maximum time
spent with interrupts disabled.
v2.05.03
- Fixed a problem with priority based semaphores without timeout which
was potentially not thread-safe.
- Added -fd to PC makefile so that kernel accesses volatile data with a
a device read/write.
近期下载者:
相关文件:
收藏者: