Nrk-api-static-configuration

Version 9 (Anthony Rowe, 02/09/2012 11:27 am)

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