![]() |
Telelogic Rhapsody (steve huntington) | ![]() |
Topic Title: RiC++ 5.0 Interrupt Driven Framework Topic Summary: Created On: 21-Sep-2005 20:23 Status: Read Only |
Linear : Threading : Single : Branch |
![]() |
![]()
|
![]() |
|||
How to run the framework with the test models
============================================================================ To try out the Interrupt Driven Framework, follow these simple instructions: 1. Set up an environmental variable IDF_ROOT to point to the idf directory below where this model is located: ex: ...\InterruptDrivenFramework\idf 2. Modify your Rhapsody\Share\Properties\siteC++.prp file to include just the new environments IDF_Microsoft_NT, IDF_Borland_NT, IDF_Tasking_C166, ... that are needed. The attached Share.zip file must be extracted into the Rhapsody directory. 3. Start up Rhapsody and load the model. 4. Select the "idf" component and the "microsoft_nt" configuration, generate make. This should generate an idf.lib file in the idf\microsoft_nt\oxf directory. 5. Select the "TimerTest" component and the "oxf" configuration, generate / make / run. This uses the usual "Microsoft" environment and uses animation to test the selected model. 6. Once the model has been tested, it can be run using the "IDF_Microsoft_NT" environment by simply selecting the "microsoft_nt" configuration and generate / make / run. 7. To test with another environment such as tasking_c166, select the idf component and the tasking_c166 configuration. Generate / make. Then select the PingPongTest component with the tasking_c166 configuration. (This test does not use timeouts and will run without the need to setup a periodic interrupt). Framework Limitations ============================================================================ 1. Threads are allowed, but are not true threads. Interrupt driven. 2. Animation is not possible with this framework, but any model can be animated using the oxf framework. Tracing mode is partially supported. 3. Flat statechart implementation and Real Time model must be selected. (Reusable statechart implementation and Simulated Time models are not supported) 4. The event queue and Timer heaps are not dynamic and maximum sizes must be setup. 5. To use the framework with a different target, one function must be modified to setup a periodic interrupt that simply sets bTick to TRUE every 20ms or so. 6. The OMString, OMList, OMMap and OMCollection classes are not integrated How to setup the framework for a different target ============================================================================ 1. Modify the operation OXF::initTimer(). This should setup a periodic interrupt that simply sets the global variable bTick to true. 2. Add a new environment in the siteC++.prp file ex: CustomIDF. Setup makefile template, compiler flags, ... 3. Add a new configuration to the idf component ex: customidf, that uses the CustomIDF environment. 4. There are several framework constants in the RiCIdfPkg that may need tuning: OM_MAX_EVENTS : Maximum number of simultaneous events OM_MAX_TIMEOUTS : Maximum number of simultaneous timeouts OM_MS_PER_TICK : Periodic timeout in milliseconds
|
|||
![]() |
FuseTalk Standard Edition v3.2 - © 1999-2009 FuseTalk Inc. All rights reserved.