|
Kernel Products
smxCF™
ColdFire RTOS Kernel
smxCF is the smx real-time multitasking RTOS kernel for ColdFire processors.
This datasheet only lists details for this architecture.
For full information see:
Processors Supported
See www.smxrtos.com/processors for Processors Supported chart.
See www.smxrtos.com/eval for free Evaluation Kits for common boards.
Development Tools Supported
- Metrowerks CodeWarrior
- Diab Data C/C++ Compiler and visionCLICK.
Development System Requirements
- Windows 9x, 2000, ME, NT 4, or XP
- BDM interface (e.g. P&E Micro "wiggler" or Multilink ; typically supplied with evaluation boards)
smxCF Development Kit Contents
- Pre-built smxCF kernel library (ELF)
- Source code platform (Protosystem) for an easy start (configured for an eval board)
- smxBSP
- SMX Quick Start, smx Target Guide, smx User's Guide, and smx Reference Manual
- Site development license
- Royalty-free license for one developed product
smxBSP and Startup Code
The Protosystem supplied with smxCF includes BSP routines, startup code, and drivers for on-chip peripherals, such as timers and UART's. smxFS, smxNS, smxUSB, etc. have drivers to support on‑chip and external controllers. For CodeWarrior, we supply project files based on the stationery supplied and augment it with our own code for common evaluation boards. For your project, you would start with the closest BSP and adapt it, as necessary for your board. See the smxBSP brochure for more information.
Easy Change to/from Other Processors
smxCF shares the same code base with smxARM and smxPPC. Therefore it is easy to migrate between smxCF and other processor versions of smx. If you have experience with smx on one processor then you are already down the learning curve for new projects.
Debugger Support
smxCF supports symbolic debugging for any debugger or emulator that can read the ELF/DWARF or COFF file format. In particular, CodeWarrior's integrated debugger and visionCLICK are recommended. smxAware supports these two debuggers.
smxAware is a DLL that adds smx kernel-awareness to the debugger. With it, the debugger is aware of all tasks and smx objects running in the system, and you can:
- Display information about kernel specific objects such as tasks, lsr's, semaphores, exchanges, messages, events, heaps, stacks, etc. from an entry added to the main menu.
- View errors, profiling, and other diagnostic information.
- View a graphical window that shows event timelines, profiling, resource allocation, stack usage, and memory overview.
- View a Thread window and Registers for each task. Shows where suspended tasks will resume. (CodeWarrior only)
- Display a trace log created by simple string markers output by the code.
- Set task-specific breakpoints. The breakpoint will be triggered only if it is hit while the specified task is running. (Not all debuggers support this.)
Please refer to the smxAware datasheet for further information.
Performance
max interrupt latency:
isr to lsr time:
task switch time:
|
58 clocks (==0.88 microsec on 66 MHz CPU; 0.29 microsec on 200 MHz CPU)
6.4 microsec (measured on 66 MHz 5282 running in SRAM; 2.1 microsec at 200 MHz)
11.4 microsec (measured on 66 MHz 5282 running in SRAM; 3.6 microsec at 200 MHz) |
RAM Usage
- smx global variables: 575 bytes
- stack space: num stacks * stack size (typical stack size is 2000 bytes)
- heap space: space for control blocks + lsr queue + heap stacks (if any) + error buffer + handle table
Notes
- Space for control blocks depends on the number of smx objects used. Control blocks range from 12 to 76 bytes.
- The lsr queue size is the number of lsr's that can be enqueued * 8 bytes per entry. Typically 20 to 100 elements.
- The error buffer is optional. Its size is the number of entries * 12 bytes per entry.
- The event buffer is optional. Its size is the number of entries * 24 bytes per entry.
- The handle table is optional. Its size is the number of entries * 8 bytes per entry. The handle table is used only by smxAware.
|
|
|
|
smxCF Function Sizes (v3.7)
|
|
|
|
|
smx function |
cw |
dc |
|
|
|
|
|
bump_msg |
540 |
542 |
|
bump_task |
1055 |
1066 |
|
clear_q |
2044 |
1930 |
|
clear_mutex |
456 |
434 |
|
count |
644 |
572 |
|
count_stop |
760 |
662 |
|
create_cx |
232 |
218 |
|
create_dpool |
988 |
928 |
|
create_eq |
160 |
148 |
|
create_et |
132 |
126 |
+ |
create_fbpool |
172 |
180 |
|
create_hmsgn |
388 |
356 |
|
create_hpooln |
560 |
514 |
|
create_mutex |
344 |
336 |
+ |
create_rq |
248 |
230 |
+ |
create_sema |
408 |
380 |
+ |
create_taskn |
500 |
434 |
+ |
create_xchga |
676 |
600 |
|
delete_cx |
244 |
220 |
|
delete_eq |
196 |
176 |
|
delete_et |
420 |
388 |
|
delete_hmsg |
288 |
250 |
|
delete_hpool |
368 |
356 |
|
delete_mutex |
152 |
140 |
|
delete_sem |
292 |
278 |
|
delete_task |
588 |
520 |
|
delete_xchg |
336 |
328 |
|
dq_msg |
188 |
158 |
+ |
error manager |
1388 |
1288 |
|
find_next |
324 |
228 |
|
find_pool |
196 |
172 |
|
free_mutex |
468 |
422 |
|
get_block |
268 |
230 |
+ |
get_fblocks |
408 |
370 |
|
get_msg |
216 |
188 |
|
get_mutex |
884 |
798 |
+ |
go_smx |
2368 |
2600 |
|
handle table |
864 |
833 |
|
hook |
160 |
142 |
+ |
invoke |
168 |
152 |
+ |
keep_time |
652 |
686 |
|
locate |
528 |
496 |
|
lsrs_on |
40 |
34 |
|
miscl |
1048 |
830 |
|
ncallocx |
68 |
64 |
|
nfreex |
236 |
202 |
|
nheapchkx |
40 |
36 |
+ |
nheapinix |
352 |
314 |
|
nheapsetx |
292 |
302 |
|
nheapwalkx |
484 |
500 |
+ |
nmallocx |
440 |
392 |
|
nreallocx |
480 |
440 |
|
num_in_pipe |
172 |
156 |
|
pget_char |
872 |
788 |
|
pget_char_stop |
1076 |
964 |
|
pput_char |
880 |
816 |
|
pput_char_stop |
1080 |
992 |
|
put_msg |
328 |
304 |
|
qsize |
864 |
874 |
|
read_timer |
232 |
236 |
+ |
receive |
1076 |
952 |
|
receive_stop |
1004 |
914 |
|
rel_all_blocks |
148 |
120 |
|
rel_all_msgs |
192 |
178 |
|
rel_block |
104 |
92 |
+ |
rel_fblock |
164 |
136 |
|
rel_mutex |
848 |
722 |
|
reset_flags |
108 |
106 |
+ |
resume |
580 |
492 |
|
resume_pget |
420 |
368 |
|
resume_pput |
436 |
382 |
+ |
sendx |
868 |
780 |
|
set_flags |
408 |
376 |
+ |
signalx |
840 |
740 |
|
sleepx |
324 |
294 |
|
sleep_stop |
324 |
282 |
|
sort_fblocks |
244 |
254 |
+ |
startx |
892 |
770 |
|
start_timer |
344 |
326 |
|
stop |
640 |
538 |
|
stop_timer |
240 |
232 |
|
suspend |
608 |
512 |
+ |
test |
592 |
550 |
|
test_flags |
636 |
568 |
|
test_flags_stop |
628 |
556 |
|
test_stop |
824 |
766 |
|
unhook |
128 |
106 |
+ |
unlockx |
148 |
128 |
+ |
scheduler |
3268 |
3009 |
|
|
|
|
+ |
min kernel |
17256 |
16013 |
|
max kernel |
48291 |
44568 |
|
|
|
|
Notes
- cw = CodeWarrior v5.1.1; dc = Diab Data C++ v5.2.1.
- smx v3.7.0 library built with full optimizations for speed (not size). SMX_EVB = 0; SMX_PROFILING = 0.
Test Mode enabled (smx error testing).
|
|
|
|
|
|