dra7xx: example for communication between hlos and rtos

example for hlos send cmd to rtos. Share message beteen hlos usecase and rtos usecase.

commit 06716a048f0870a0762782dcc93fd084f5920665
Author: xxx Zhang <>
Date:   Tue May 28 13:43:23 2019 +0800

    vsdk: add command for appctrol

diff --git a/apps/src/hlos/adas/src/usecases/disp_dist_src_display/chains_dispDistSrc_Display.c b/apps/src/hlos/adas/src/usecases/disp_dist_src_display/chains_dispDistSrc_Display.c
index 07640ac..cec7b38 100644
--- a/apps/src/hlos/adas/src/usecases/disp_dist_src_display/chains_dispDistSrc_Display.c
+++ b/apps/src/hlos/adas/src/usecases/disp_dist_src_display/chains_dispDistSrc_Display.c
@@ -227,6 +227,7 @@ Void chains_dispDistSrc_Display_StopAndDeleteApp(Chains_DispDistSrcDisplayAppObj
 Void Chains_dispDistSrc_Display(Chains_Ctrl *chainsCfg)
 {
     char ch = 'a';
+    char Command[10]={'0'}; 
     UInt32 done = FALSE;
     Chains_DispDistSrcDisplayAppObj chainsObj;
 
@@ -255,6 +256,13 @@ Void Chains_dispDistSrc_Display(Chains_Ctrl *chainsCfg)
                 chains_dispDistSrc_Display_printStatistics(&chainsObj.ucObj);
                 break;
             default:
+                 Command[0] = ch;
+                 System_linkControl(
+                                       chainsObj.ucObj.Display_m4LinkID,
+                                           SYSTEM_CMD_GET_CMD,
+                                       &Command[0],
+                                       10,
+                                       TRUE);
                 Vps_printf("\nUnsupported option '%c'. Please try again\n", ch);
                 break;
         }
diff --git a/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay.c b/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay.c
index fc9b3c0..fd37fdb 100644
--- a/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay.c
+++ b/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay.c
@@ -66,7 +66,7 @@ Limited License.
 #include "chains_nullSrcDecDisplay_priv.h"
 #include <src/include/chains_common.h>
 #include <src/include/chains_common_osal.h>
-
+#include <include/link_api/system.h>
 #define MAX_NUMBER_OF_CHANNELS    (1)
 #define ENCDEC_MAX_FRAME_WIDTH    (1280)
 #define ENCDEC_MAX_FRAME_HEIGHT   (720)
@@ -75,8 +75,8 @@ Limited License.
 #define EARLY_VIDEO_DATA_VIRT  0xA5000000
 #define EARLY_VIDEO_HDR_VIRT   0xA5c00000
 #define NUM_REPEAT_PLAYBACK 2
-
-static UInt32 xxx = 2;
+extern Uint32 GET_Message;
+static UInt32 xxx = 3;
 static Bool bVideoDone = FALSE;
 UInt32 FLAG  = 0;
 #ifdef IPUMM_INCLUDE
@@ -584,37 +584,62 @@ Void Chains_nullSrc_DecodeDisplay(Chains_Ctrl *chainsCfg)
   //  }
     done = FALSE;
     while( !done ){
-        switch ( FLAG  )
-        {
-        case 1:
-            xxx = 3; FLAG = 0;
-            bVideoDone = FALSE;
-            if(bVideoDone){};
-            break;
-        case 2:
-            xxx = 2;  FLAG = 0;
-            bVideoDone = FALSE;
-            break;
-        case 3:
-            FLAG = 0;
-            #ifdef IPUMM_INCLUDE
-            BspOsal_semPost(semEarlyVid);
-            #endif
-            break;
-        case 4:
-            FLAG = 0;
-            chainsObj.ucObj.NullSourcePrm.pauseLink=TRUE;
-            break;
-        case 5:
-            FLAG = 0;
-            chainsObj.ucObj.NullSourcePrm.pauseLink=FALSE;
-            break;
-        case 6:
-            FLAG = 0;
-            chains_nullSrcDecDisplay_StopAndDeleteApp(&chainsObj);
-            break;
-        default:
-            break;
+        if ( GET_Message > 0 ){
+            
+            
+            FLAG= GET_Message -0x30;
+            Vps_printf(">>>>> xxx:  %d %d  \n ",GET_Message, FLAG );
+            GET_Message = 0;
+            switch ( FLAG  )
+            {
+            case 1:
+                Vps_printf(">>>>> xxx:  1 nullsrc send dat \n");
+                xxx = 3; FLAG = 0;
+                bVideoDone = FALSE;
+                if(bVideoDone){};
+                break;
+            case 2:
+                Vps_printf(">>>>> xxx:  2 nullsrc stop dat \n");
+                xxx = 2;  FLAG = 0;
+                bVideoDone = FALSE;
+                break;
+            case 3:
+                Vps_printf(">>>>> xxx:  3 IPUMM startting \n");
+                FLAG = 0;
+                #ifdef IPUMM_INCLUDE
+                BspOsal_semPost(semEarlyVid);
+                #endif
+                break;
+            case 4:
+                Vps_printf(">>>>> xxx:  4 pause nullsrc \n");
+                FLAG = 0;
+                   /* Puase Null source */
+                    System_linkControl(
+                        chainsObj.ucObj.NullSourceLinkID,
+                        NULL_SRC_LINK_CMD_PAUSE,
+                        NULL,
+                        0,
+                        TRUE);
+                break;
+            case 5:
+                Vps_printf(">>>>> xxx:  5 resume nullsrc \n");
+                FLAG = 0;
+                   /* Resume Null source */
+                System_linkControl(
+                        chainsObj.ucObj.NullSourceLinkID,
+                        NULL_SRC_LINK_CMD_RESUME,
+                        NULL,
+                        0U,
+                        TRUE);
+                break;
+            case 6:
+                Vps_printf(">>>>> xxx:  6 stop chains. \n");
+                FLAG = 0;
+                chains_nullSrcDecDisplay_StopAndDeleteApp(&chainsObj);
+                break;
+            default:
+                break;
+            }
         }
         Task_sleep(sleepMs);
     }
diff --git a/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay_priv.h b/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay_priv.h
index 9e2c6f0..403af49 100644
--- a/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay_priv.h
+++ b/apps/src/rtos/usecases/null_src_dec_display/chains_nullSrcDecDisplay_priv.h
@@ -47,10 +47,10 @@ Limited License.
 
  DISCLAIMER.
 
- THIS SOFTWARE IS PROVIDED BY TI AND TI<92>S LICENSORS 'AS IS' AND ANY EXPRESS OR
+ THIS SOFTWARE IS PROVIDED BY TI AND TI�S LICENSORS 'AS IS' AND ANY EXPRESS OR
  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL TI AND TI<92>S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ IN NO EVENT SHALL TI AND TI�S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
diff --git a/links_fw/include/link_api/system_common.h b/links_fw/include/link_api/system_common.h
index e549870..9c7f13f 100644
--- a/links_fw/include/link_api/system_common.h
+++ b/links_fw/include/link_api/system_common.h
@@ -47,10 +47,10 @@ Limited License.
 
  DISCLAIMER.
 
- THIS SOFTWARE IS PROVIDED BY TI AND TI<92>S LICENSORS "AS IS" AND ANY EXPRESS OR
+ THIS SOFTWARE IS PROVIDED BY TI AND TI�S LICENSORS "AS IS" AND ANY EXPRESS OR
  IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL TI AND TI<92>S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ IN NO EVENT SHALL TI AND TI�S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
@@ -199,6 +199,7 @@ Limited License.
  */
 #define SYSTEM_CMD_GET_INFO                 (0x00000005U)
 
+#define SYSTEM_CMD_GET_CMD                  (0x00000006U)
 /**
  *******************************************************************************
  *
diff --git a/links_fw/src/rtos/links_ipu/display/displayLink_tsk.c b/links_fw/src/rtos/links_ipu/display/displayLink_tsk.c
index 33ce5da..06925c8 100644
--- a/links_fw/src/rtos/links_ipu/display/displayLink_tsk.c
+++ b/links_fw/src/rtos/links_ipu/display/displayLink_tsk.c
@@ -85,7 +85,7 @@ Limited License.
  *******************************************************************************
  */
 #include "displayLink_priv.h"
-
+Uint32 GET_Message = 0;
 /*******************************************************************************
  *                  Internal Function Declarations
  *******************************************************************************
@@ -201,7 +201,12 @@ Int32 DisplayLink_tskRun(DisplayLink_Obj *pObj, Utils_TskHndl *pTsk,
 
                 DisplayLink_drvProcessData(pObj);
                 break;
-
+            case SYSTEM_CMD_GET_CMD:
+                memcpy( &GET_Message,(char *)Utils_msgGetPrm(pRunMsg), 1);
+                    Vps_printf(">>>>>>: xxx: display link Get_message %c \n",&(GET_Message));
+                if(GET_Message ){};
+                                Utils_tskAckOrFreeMsg(pRunMsg, status);
+                break;
             case SYSTEM_CMD_DELETE:
                 *done = (Bool)TRUE;
                 *ackMsg = (Bool)TRUE;

转载于:https://www.cnblogs.com/widic/p/10942514.html

以下是重新表述后的内容: 单周期 MIPS CPU 的微程序地址转移逻辑设计:在单周期 MIPS CPU 架构中,微程序地址转移逻辑是关键部分。它负责根据当前微指令的执行情况以及 CPU 内部的各种状态信号,准确地计算出下一条微指令的地址。这一逻辑需要综合考虑指令类型、操作完成情况、是否发生异常等多种因素,以确保微程序能够按照正确的顺序和逻辑进行执行,从而实现 MIPS 指令的准确译码与控制。 MIPS 微程序 CPU 的设计:设计一款基于微程序控制的 MIPS CPU,其核心在于构建微程序控制器。该控制器通过存储微指令序列来实现对 CPU 各部件的控制。微指令中包含对数据通路操作的控制信号以及微程序地址转移信息。在设计过程中,需要精心设计微指令格式,使其能够高效地表示各种操作控制信息,同时合理安排微指令存储器的组织结构,确保微指令的快速读取与准确执行,从而实现 MIPS 指令集的完整功能。 MIPS 硬布线控制器的状态机设计:在采用硬布线控制方式的 MIPS CPU 中,状态机是控制器的核心组成部分。状态机根据输入的指令操作码、状态信号等信息,在不同的状态之间进行转换。每个状态对应着 CPU 在执行一条指令过程中的一个特定阶段,如取指、译码、执行、访存等。状态机的设计需要精确地定义各个状态的转换条件以及在每个状态下输出的控制信号,以确保 CPU 能够按照正确的时序和逻辑完成指令的执行过程。 多周期 MIPS 硬布线控制器 CPU 设计(排序程序):设计一款多周期 MIPS 硬布线控制器 CPU,用于运行排序程序。在这种设计中,CPU 的每个指令执行周期被划分为多个子周期,每个子周期完成指令执行过程中的一个特定操作。硬布线控制器根据指令操作码和当前周期状态,生成相应的控制信号来协调 CPU 数据通路的操作。针对排序程序的特点,需要优化控制器的设计,合理安排指令执行的周期划分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值