OSDN Git Service

\e$B%A%1%C%H\e(B #30804 BlueTank\e$B8~$1%7%9%F%`%U%l!<%`%o!<%/$NDI2C\e(B
authorShinichiro Nakamura <shinta.main.jp@gmail.com>
Sun, 17 Feb 2013 08:52:08 +0000 (17:52 +0900)
committerShinichiro Nakamura <shinta.main.jp@gmail.com>
Sun, 17 Feb 2013 08:52:08 +0000 (17:52 +0900)
\e$B%G%#%9%W%l%$%?%9%/$H%7%9%F%`%?%9%/$N?w7A$rDI2C!#\e(B

\e$B0J2<$NLdBj$,$"$k$N$@$1$I!"$R$H$^$:%3%_%C%H$9$k;v$K$7$?!#\e(B
\e$B%A%1%C%H\e(B #30731 rcv_mbx\e$B$r8F$S=P$9$H\e(BSpurious Interrupt\e$B$,H/@8$9$k\e(B

\e$B85!9\e(BTOPPERS/ASP\e$B$GH~L#$7$/D:$$$F$$$?%U%l!<%`%o!<%/$r;}$C$F$-$F$$$k!#\e(B
\e$B$b$7$+$7$?$i2?$+4*0c$$$7$F$$$k$N$+$b!#\e(B

uzumeapp/kernel/config/blackfin/bsp_bluetank/Makefile.config
uzumeapp/kernel/uzume/bsp_bluetank.c
uzumeapp/kernel/uzume/bsp_bluetank.cfg
uzumeapp/kernel/uzume/bsp_bluetank/display_task.c
uzumeapp/kernel/uzume/bsp_bluetank/display_task.cfg
uzumeapp/kernel/uzume/bsp_bluetank/display_task.h
uzumeapp/kernel/uzume/bsp_bluetank/system_task.c [new file with mode: 0644]
uzumeapp/kernel/uzume/bsp_bluetank/system_task.cfg [new file with mode: 0644]
uzumeapp/kernel/uzume/bsp_bluetank/system_task.h [new file with mode: 0644]

index 32a0b02..7f83a38 100644 (file)
@@ -22,7 +22,7 @@ KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
 KERNEL_COBJS := $(KERNEL_COBJS) chip_config.o uart.o chip_debugboot.o chip_dump.o
 KERNEL_COBJS := $(KERNEL_COBJS) i2s_subsystem.o i2c_subsystem.o rotenc.o uzume_callback.o sgtl5000.o
 KERNEL_COBJS := $(KERNEL_COBJS) lcd.o bfin_util.o bsp_bluetank.o cmd_bluetank.o
-KERNEL_COBJS := $(KERNEL_COBJS) display_task.o
+KERNEL_COBJS := $(KERNEL_COBJS) display_task.o system_task.o
 KERNEL_COBJS := $(KERNEL_COBJS) ntlibc.o ntopt.o ntshell.o ntshell_task.o text_editor.o text_history.o vtrecv.o vtsend.o ntstdio.o
 
 #
index 8ca4d70..f2f948d 100644 (file)
@@ -10,7 +10,6 @@
 #include <cdefBF592-A.h>
 #include <bsp_bluetank.h>
 #include <rotenc.h>
-#include <lcd.h>
 
 void board_initialize(VP_INT exinf)
 {
@@ -21,10 +20,6 @@ void board_initialize(VP_INT exinf)
     // ADSP-BF592 PORTG設定
     // DR0PRI, RSCK0, RFS0, TD0PRI, TSCK0, TSF0をFERでイネーブルにする
     *pPORTG_FER = 0x00ee;
-
-    lcd_init();
-    lcd_clear();
-    lcd_puts("BlueTank");
 }
 
 /**
index ac00810..c66d03d 100644 (file)
@@ -3,6 +3,7 @@
 #include "rotenc.cfg"
 #include "ntshell_task.cfg"
 #include "display_task.cfg"
+#include "system_task.cfg"
 
 INCLUDE("\"bsp_bluetank.h\"");
 
index 5ebe47c..6dd6dea 100644 (file)
@@ -7,13 +7,55 @@
 
 #include <t_services.h>
 #include "display_task.h"
+#include "kernel_id.h"
+#include "lcd.h"
+
+#define DEBUG   (1)
+
+static void cmd_clear(display_clear_t *p)
+{
+    lcd_clear();
+}
 
 void display_task(VP_INT exinf)
 {
+    display_msg_t *msg;
+
     syslog(LOG_NOTICE, "Display Task");
-    while (1) {
+
+    lcd_init();
+    lcd_clear();
+    lcd_puts(">");
+
+    while(1) {
+#if DEBUG
+        if (rcv_mbx(MBX_DISPLAY, (T_MSG**)&msg) == E_OK) {
+            switch (msg->cmd) {
+                case DISPLAY_CMD_CLEAR:
+                    cmd_clear(&(msg->arg.clear));
+                    break;
+                default:
+                    break;
+            }
+            rel_mpf(MPF_DISPLAY, (VP)msg);
+        }
+#else
         tslp_tsk(1000);
-        syslog(LOG_NOTICE, "Display...");
+#endif
+    }
+}
+
+void display_clear(void)
+{
+#if DEBUG
+    VP vp;
+    if (get_mpf(MPF_DISPLAY, &vp) == E_OK) {
+        display_msg_t *msg = (display_msg_t *)vp;
+        msg->cmd = DISPLAY_CMD_CLEAR;
+        msg->arg.clear.dummy = 0;
+        snd_mbx(MBX_DISPLAY, vp);
     }
+#else
+#endif
 }
 
index 8998e76..ac5b406 100644 (file)
@@ -3,13 +3,15 @@
 
 INCLUDE("\"display_task.h\"");
 
-CRE_TSK( DISPLAY_TASK,
-            {
-                TA_HLNG|TA_ACT,             /* 初期状態からアクティブ */
-                0,                          /* タスク引数 */
-                display_task,               /* タスク本体 */
-                DISPLAY_TASK_PRIORITY,      /* タスク優先順位 */
-                DISPLAY_TASK_STACK_SIZE,    /* タスク・スタックサイズ */
-                NULL                        /* タスク・スタック。NULLならシステムが準備 */
-             });
+CRE_MPF(MPF_DISPLAY, {TA_TPRI, 2, 64, NULL});
+CRE_MBX(MBX_DISPLAY, {TA_NULL, TMAX_MPRI, NULL});
+CRE_TSK(DISPLAY_TASK,
+        {
+        TA_HLNG|TA_ACT,             /* 初期状態からアクティブ */
+        0,                          /* タスク引数 */
+        display_task,               /* タスク本体 */
+        DISPLAY_TASK_PRIORITY,      /* タスク優先順位 */
+        DISPLAY_TASK_STACK_SIZE,    /* タスク・スタックサイズ */
+        NULL                        /* タスク・スタック。NULLならシステムが準備 */
+        });
 
index 241d176..bfcd224 100644 (file)
 #include <s_services.h>
 
 #ifndef DISPLAY_TASK_PRIORITY
-#   define DISPLAY_TASK_PRIORITY    (7)
+#   define DISPLAY_TASK_PRIORITY    (6)
 #endif
 
 #ifndef DISPLAY_TASK_STACK_SIZE
 #   define DISPLAY_TASK_STACK_SIZE  (2048)
 #endif
 
+#define DISPLAY_CMD_CLEAR   0
+
+typedef struct {
+    unsigned char dummy;
+} display_clear_t;
+
+typedef struct {
+    T_MSG header;
+    unsigned char cmd;
+    union {
+        display_clear_t clear;
+    } arg;
+} display_msg_t;
+
 #ifndef _MACRO_ONLY
 void display_task(VP_INT exinf);
 #endif
diff --git a/uzumeapp/kernel/uzume/bsp_bluetank/system_task.c b/uzumeapp/kernel/uzume/bsp_bluetank/system_task.c
new file mode 100644 (file)
index 0000000..7aba798
--- /dev/null
@@ -0,0 +1,21 @@
+/**
+ * @file system_task.c
+ * @author Shinichiro Nakamura
+ * @brief
+ * @details
+ */
+
+#include <t_services.h>
+#include "system_task.h"
+#include "display_task.h"
+
+void system_task(VP_INT exinf)
+{
+    syslog(LOG_NOTICE, "System Task");
+    while(1) {
+        tslp_tsk(5000);
+        syslog(LOG_NOTICE, "display_clear()");
+        display_clear();
+    }
+}
+
diff --git a/uzumeapp/kernel/uzume/bsp_bluetank/system_task.cfg b/uzumeapp/kernel/uzume/bsp_bluetank/system_task.cfg
new file mode 100644 (file)
index 0000000..eb5ea10
--- /dev/null
@@ -0,0 +1,15 @@
+
+#define _MACRO_ONLY
+
+INCLUDE("\"system_task.h\"");
+
+CRE_TSK(SYSTEM_TASK,
+            {
+                TA_HLNG|TA_ACT,         /* 初期状態からアクティブ */
+                0,                      /* タスク引数 */
+                system_task,            /* タスク本体 */
+                SYSTEM_TASK_PRIORITY,   /* タスク優先順位 */
+                SYSTEM_TASK_STACK_SIZE, /* タスク・スタックサイズ */
+                NULL                    /* タスク・スタック。NULLならシステムが準備 */
+             });
+
diff --git a/uzumeapp/kernel/uzume/bsp_bluetank/system_task.h b/uzumeapp/kernel/uzume/bsp_bluetank/system_task.h
new file mode 100644 (file)
index 0000000..ccf874b
--- /dev/null
@@ -0,0 +1,27 @@
+/**
+ * @file system_task.h
+ * @author Shinichiro Nakamura
+ * @brief
+ * @details
+ */
+
+#ifndef SYSTEM_TASK_H
+#define SYSTEM_TASK_H
+
+#include <t_services.h>
+#include <s_services.h>
+
+#ifndef SYSTEM_TASK_PRIORITY
+#   define SYSTEM_TASK_PRIORITY    (7)
+#endif
+
+#ifndef SYSTEM_TASK_STACK_SIZE
+#   define SYSTEM_TASK_STACK_SIZE  (2048)
+#endif
+
+#ifndef _MACRO_ONLY
+void system_task(VP_INT exinf);
+#endif
+
+#endif
+