Kernel project main.c file implemented. Necessary libraries modified in cfg folder.
authorlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 17 May 2011 09:49:49 +0000 (09:49 +0000)
committerlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 17 May 2011 09:49:49 +0000 (09:49 +0000)
Signed-off-by: Andrea Scalise <andreascalo@gmail.com>
Signed-off-by: Matteo Silvestri <matteosilv@gmail.com>
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@4903 38d2e660-2303-0410-9eaa-f027e97ec537

boards/stm32VLDiscovery/templates/kernel/cfg/cfg_monitor.h
boards/stm32VLDiscovery/templates/kernel/cfg/cfg_proc.h
boards/stm32VLDiscovery/templates/kernel/cfg/cfg_sem.h
boards/stm32VLDiscovery/templates/kernel/cfg/cfg_ser.h
boards/stm32VLDiscovery/templates/kernel/cfg/cfg_signal.h
boards/stm32VLDiscovery/templates/kernel/main.c

index 78f222bfd3e8412c4a53031cbce2342b481dffc1..d0e24da428f6c4dc1f410ec276b799174f781c75 100644 (file)
@@ -42,6 +42,6 @@
  * Process monitor.
  * $WIZ$ type = "autoenabled"
  */
-#define CONFIG_KERN_MONITOR 0
+#define CONFIG_KERN_MONITOR 1
 
 #endif /*  CFG_MONITOR_H */
index 3c9439fb0b002097067e74d87e98ffb16ea57e89..e779ebe46a99a5c73cd0289ee92f4053a5e9e320 100644 (file)
@@ -43,7 +43,7 @@
  *
  * $WIZ$ type = "autoenabled"
  */
-#define CONFIG_KERN 0
+#define CONFIG_KERN 1
 
 /**
  * Kernel interrupt supervisor. WARNING: Experimental, still incomplete!
  * Priority-based scheduling policy.
  * $WIZ$ type = "boolean"
  */
-#define CONFIG_KERN_PRI 0
+#define CONFIG_KERN_PRI 1
 
 /**
  * Dynamic memory allocation for processes.
  * $WIZ$ type = "boolean"
  * $WIZ$ conditional_deps = "heap"
  */
-#define CONFIG_KERN_HEAP 0
+#define CONFIG_KERN_HEAP 1
 
 /**
  * Size of the dynamic memory pool used by processes.
  * $WIZ$ type = "int"
  * $WIZ$ min = 0
  */
-#define CONFIG_KERN_HEAP_SIZE 2048L
+#define CONFIG_KERN_HEAP_SIZE 1024L
 
 /**
  * Module logging level.
index 51811da430dc673eb60a2345fbd27202d6b88b82..905f0455e926600395b53fb9cb0645dece14d974 100644 (file)
@@ -42,6 +42,6 @@
  * Re-entrant mutual exclusion primitives.
  * $WIZ$ type = "autoenabled"
  */
-#define CONFIG_KERN_SEMAPHORES  0
+#define CONFIG_KERN_SEMAPHORES  1
 
 #endif /*  CFG_SEM_H */
index 91a10e0b2d8ade049eeb03b95150797d6728a29f..03e7b49dd0e4120625bf1a38d32915f6549b2ae7 100644 (file)
  * $WIZ$ type = "int"
  * $WIZ$ min = 0
  */
-#define CONFIG_SER_DEFBAUDRATE   0UL
+#define CONFIG_SER_DEFBAUDRATE   115200UL
 
 /// Enable strobe pin for debugging serial interrupt. $WIZ$ type = "boolean"
 #define CONFIG_SER_STROBE        0
index e48d86a6e43fea23f26963f45378a48f2772f569..ce5324ec10ea5086817a3f77e054e8fe38e3ac1e 100644 (file)
@@ -42,6 +42,6 @@
  * Inter-process signals.
  * $WIZ$ type = "autoenabled"
  */
-#define CONFIG_KERN_SIGNALS 0
+#define CONFIG_KERN_SIGNALS 1
 
 #endif /*  CFG_SIGNAL_H */
index c21b9a0ffab1db3aef91441d75493861763d002f..2ccb10b1d5447d20a957ed600d40039882e260b3 100644 (file)
@@ -1,7 +1,42 @@
-/* \brief Empty project.
+/**
+ * \file
+ * <!--
+ * This file is part of BeRTOS.
  *
- * This is a minimalist project, it just initializes the hardware of the
- * supported board and proposes an empty main.
+ * Bertos is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ * As a special exception, you may use this file as part of a free software
+ * library without restriction.  Specifically, if other files instantiate
+ * templates or use macros or inline functions from this file, or you compile
+ * this file and link it with other files to produce an executable, this
+ * file does not by itself cause the resulting executable to be covered by
+ * the GNU General Public License.  This exception does not however
+ * invalidate any other reasons why the executable file might be covered by
+ * the GNU General Public License.
+ *
+ * Copyright 2010 Develer S.r.l. (http://www.develer.com/)
+ *
+ * -->
+ *
+ * \author Andrea Righi <arighi@develer.com>
+ *
+ * \brief Kernel project.
+ *
+ * This is a minimalist kernel project: it just initializes the hardware and
+ * creates an independent process to blink an LED, while the main loop
+ * continues to monitor the stack utilization of all the processes.
  */
 
 #include "hw/hw_led.h"
@@ -12,6 +47,9 @@
 
 #include <drv/timer.h>
 
+#include <kern/proc.h>
+#include <kern/monitor.h>
+
 static void init(void)
 {
        /* Enable all the interrupts */
@@ -23,18 +61,44 @@ static void init(void)
        timer_init();
        /* Initialize LED driver */
        LED_INIT();
+
+       /*
+        * Kernel initialization: processes (allow to create and dispatch
+        * processes using proc_new()).
+        */
+       proc_init();
 }
 
+static void NORETURN led_process(void)
+{
+       int i;
+
+       /* Periodically blink the led (toggle each 100 ms) */
+       for (i = 0; ; i = !i)
+       {
+               if (i)
+                       LED_ON();
+               else
+                       LED_OFF();
+               timer_delay(100);
+       }
+}
 
 int main(void)
 {
+       /* Hardware initialization */
        init();
 
+       /* Create a new child process */
+       proc_new(led_process, NULL, KERN_MINSTACKSIZE * 2, NULL);
+
+       /*
+        * The main process is kept to periodically report the stack
+        * utilization of all the processes (1 probe per second).
+        */
        while (1)
        {
-               // your code goes here
+               monitor_report();
+               timer_delay(1000);
        }
-
-       return 0;
 }
-