Nrk-api-static-configuration

Version 2 (Anthony Rowe, 02/17/2007 09:45 am)

1 1 Anthony Rowe
 = Static Configuration (nrk_cfg.h) =
2 1 Anthony Rowe
3 1 Anthony Rowe
Given the memory constraints of embedded sensor operating systems, Nano-RK uses a
4 1 Anthony Rowe
static design-time framework. This approach is consistent with sensor networking assumptions
5 1 Anthony Rowe
because as compared to traditional operating systems (where processes can
6 1 Anthony Rowe
be dynamically spawned), the OS and the applications are co-located in a single address
7 1 Anthony Rowe
space. In particular, admission control and real-time schedulability analysis tests
8 1 Anthony Rowe
are carried out offline as compared to taking a dynamic online approach. We would
9 1 Anthony Rowe
like to stress that a static approach does not mean that task properties and configuration
10 1 Anthony Rowe
parameters cannot be reconfigured during run-time. Rather, a static approach enforces
11 1 Anthony Rowe
the checks to ensure that the dynamic reconfiguration does not adversely affect application
12 1 Anthony Rowe
and system guarantees in a pre-deployment offline setting as compared to running
13 1 Anthony Rowe
dynamic admission control algorithms. Data (or control) dependent modifications to
14 1 Anthony Rowe
the task code such as changing task periods, resource usage limits, resource priorities
15 1 Anthony Rowe
and configuration of various parameters such as the network buffer sizes and stack
16 1 Anthony Rowe
sizes of each task can be changed to accommodate mode changes. With current energy
17 1 Anthony Rowe
and memory constraints, the run-time configurations will need to be verified offline at
18 1 Anthony Rowe
design-time.
19 1 Anthony Rowe
20 1 Anthony Rowe
Many of the static parameters are defined in nrk_cfg.h
21 1 Anthony Rowe
22 1 Anthony Rowe
23 1 Anthony Rowe
{{{
24 1 Anthony Rowe
   #define NRK_REPORT_ERRORS
25 1 Anthony Rowe
   // NRK_REPORT_ERRORS will cause the kernel to print out information about
26 1 Anthony Rowe
   // missed deadlines or reserve violations
27 1 Anthony Rowe
28 1 Anthony Rowe
   #define NRK_HALT_ON_ERROR
29 1 Anthony Rowe
   // NRK_HALT_ON_ERRORS will cause the kernel to freeze on errors so that
30 1 Anthony Rowe
   // it is easier to see debugging messages.
31 1 Anthony Rowe
32 1 Anthony Rowe
   #define NRK_STACK_CHECK
33 1 Anthony Rowe
   // NRK_STACK_CHECK adds a little check to see if the bottom of the stack
34 1 Anthony Rowe
   // has been over written on all suspend calls
35 1 Anthony Rowe
36 1 Anthony Rowe
   #define NRK_NO_POWER_DOWN
37 1 Anthony Rowe
  // Leave NRK_NO_POWER_DOWN define in if the target can not wake up from sleep
38 1 Anthony Rowe
  // because it has no asynchronously clocked
39 1 Anthony Rowe
40 1 Anthony Rowe
  #define NRK_MAX_TASKS 2
41 1 Anthony Rowe
  // Max number of tasks in your application
42 1 Anthony Rowe
43 1 Anthony Rowe
  #define NRK_N_SYS_TASKS 1
44 1 Anthony Rowe
  // Number of system tasks. You need at least the idle task
45 1 Anthony Rowe
46 1 Anthony Rowe
 
47 1 Anthony Rowe
  #define NRK_TASK_IDLE_STK_SIZE 64
48 1 Anthony Rowe
  // Idle task stack size min=32
49 1 Anthony Rowe
  #define NRK_APP_STACKSIZE 128
50 1 Anthony Rowe
  // Used as a default for application tasks
51 1 Anthony Rowe
  #define NRK_KERNEL_STACKSIZE 128
52 1 Anthony Rowe
  // Size of kernel stack
53 1 Anthony Rowe
  #define NRK_MAX_RESOURCE_CNT 1
54 1 Anthony Rowe
}}}
55 1 Anthony Rowe
56 1 Anthony Rowe
A sample nrk_cfg.h that configures the static parameters for a particular
57 1 Anthony Rowe
project. This includes stack sizes, number of resources, error handling etc.
58 1 Anthony Rowe
Make sure tomake clean when you change any parameters in header files
59 1 Anthony Rowe
or moved from another project directory.
60 2 Anthony Rowe
61 2 Anthony Rowe
| [wiki:nrk-api Contents] | [wiki:nrk-api-time-management Time Management] |