Ignore:
Timestamp:
Sep 25, 2020, 7:28:35 PM (4 years ago)
Author:
coas-nagasima
Message:

Azure IoT への送信内容を、検出したpersonとcarの数を送信するよう変更。
Azure IoT CentralからLEDのON/OFFが出来るよう更新。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub_riscv/trunk/asp_baseplatform/arch/riscv_gcc/prc_config.c

    r453 r459  
    7373        unsigned long mstatus = *(((uintptr_t*)p_excinf) + P_EXCINF_OFFSET_MSTATUS);
    7474        uintptr_t     pc      = *(((uintptr_t*)p_excinf) + P_EXCINF_OFFSET_PC);
     75        uintptr_t     sp0     = *(((uintptr_t*)p_excinf) + P_EXCONF_OFFSET_SP);
     76        uintptr_t     sp1     = *(((uintptr_t*)p_excinf) + P_EXCONF_OFFSET_SP + 1);
    7577        unsigned long excno   = mcause & MCAUSE_CAUSE;
     78        static int count = 0;
     79
     80        if (count == 0) {
     81                count++;
    7682
    7783        if((long)mcause < 0)
    7884                excno += TMAX_MACHNE_INTNO / 2;
    7985
    80         switch (excno) {
    81         case EXC_INSTRUCTION_ADDRESS_MISALIGNED:
    82                 syslog(LOG_EMERG, "\nUnregistered instruction address misaligned occurs.");
    83                 break;
    84         case EXC_INSTRUCTION_ADDRESS_FAULT:
    85                 syslog(LOG_EMERG, "\nUnregistered instruction address fault occurs.");
    86                 break;
    87         case EXC_ILLEGAL_INSTRUCTION:
    88                 syslog(LOG_EMERG, "\nUnregistered illegal instruction occurs.");
    89                 break;
    90         case EXC_BREAKPOINT:
    91                 syslog(LOG_EMERG, "\nUnregistered breakpoint occurs.");
    92                 break;
    93         case EXC_LOAD_ADDRESS_MISALIGNED:
    94                 syslog(LOG_EMERG, "\nUnregistered load address misaligned occurs.");
    95                 break;
    96         case EXC_LOAD_ADDRESS_FAULT:
    97                 syslog(LOG_EMERG, "\nUnregistered load address fault occurs.");
    98                 break;
    99         case EXC_STORE_AMO_ADDRESS_MISALIGNED:
    100                 syslog(LOG_EMERG, "\nUnregistered store AMO address misaligned occurs.");
    101                 break;
    102         case EXC_STORE_AMO_ACCESS_FAUT:
    103                 syslog(LOG_EMERG, "\nUnregistered store AMO access faut occurs.");
    104                 break;
    105         case EXC_ENVIRONMENT_CALL_FROM_MMODE:
    106                 syslog(LOG_EMERG, "\nUnregistered environment call from MMODE occurs.");
    107                 break;
    108         default:
    109                 syslog(LOG_EMERG, "\nUnregistered Interrupt occurs.");
    110                 break;
    111         }
    112 
    113         syslog(LOG_EMERG, "Excno = 0x%02X, PC = 0x%X, mstatus = 0x%X, p_excinf = 0x%X",
    114                    excno, pc, mstatus, p_excinf);
     86                switch (excno) {
     87                case EXC_INSTRUCTION_ADDRESS_MISALIGNED:
     88                                syslog_0(LOG_EMERG, "\nUnregistered instruction address misaligned occurs.");
     89                        break;
     90                case EXC_INSTRUCTION_ADDRESS_FAULT:
     91                                syslog_0(LOG_EMERG, "\nUnregistered instruction address fault occurs.");
     92                        break;
     93                case EXC_ILLEGAL_INSTRUCTION:
     94                                syslog_0(LOG_EMERG, "\nUnregistered illegal instruction occurs.");
     95                        break;
     96                case EXC_BREAKPOINT:
     97                                syslog_0(LOG_EMERG, "\nUnregistered breakpoint occurs.");
     98                        break;
     99                case EXC_LOAD_ADDRESS_MISALIGNED:
     100                                syslog_0(LOG_EMERG, "\nUnregistered load address misaligned occurs.");
     101                        break;
     102                case EXC_LOAD_ADDRESS_FAULT:
     103                                syslog_0(LOG_EMERG, "\nUnregistered load address fault occurs.");
     104                        break;
     105                case EXC_STORE_AMO_ADDRESS_MISALIGNED:
     106                                syslog_0(LOG_EMERG, "\nUnregistered store AMO address misaligned occurs.");
     107                        break;
     108                case EXC_STORE_AMO_ACCESS_FAUT:
     109                                syslog_0(LOG_EMERG, "\nUnregistered store AMO access faut occurs.");
     110                        break;
     111                case EXC_ENVIRONMENT_CALL_FROM_MMODE:
     112                                syslog_0(LOG_EMERG, "\nUnregistered environment call from MMODE occurs.");
     113                        break;
     114                default:
     115                                syslog_0(LOG_EMERG, "\nUnregistered Interrupt occurs.");
     116                        break;
     117                }
     118
     119                syslog_4(LOG_EMERG, "Excno = 0x%02X, PC = 0x%X, mstatus = 0x%X, p_excinf = 0x%X",
     120                        excno, pc, mstatus, p_excinf);
     121
     122                syslog_3(LOG_EMERG, "SP0 = 0x%X, SP1 = 0x%X, runtsk = 0x%X", sp0, sp1, p_runtsk->p_tinib->task);
     123
     124                unsigned int *addr = (((unsigned int *)p_excinf) + P_EXCONF_OFFSET_SP + 3);
     125                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     126                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     127                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     128                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     129                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     130                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     131                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     132                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     133                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     134                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     135                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X",10, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     136                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     137                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     138                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     139                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     140                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     141                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X",10, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     142
     143                addr = (unsigned int *)((sp0 + 15) / 16);
     144                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[-4], addr[-4], addr[-3], addr[-2], addr[-1]);
     145                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 0], addr[ 0], addr[ 1], addr[ 2], addr[ 3]);
     146                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 4], addr[ 4], addr[ 5], addr[ 6], addr[ 7]);
     147                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 8], addr[ 8], addr[ 9], addr[10], addr[11]);
     148                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[12], addr[12], addr[13], addr[14], addr[15]);
     149
     150                addr = (unsigned int *)((sp1 + 15) / 16);
     151                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[-4], addr[-4], addr[-3], addr[-2], addr[-1]);
     152                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 0], addr[ 0], addr[ 1], addr[ 2], addr[ 3]);
     153                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 4], addr[ 4], addr[ 5], addr[ 6], addr[ 7]);
     154                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 8], addr[ 8], addr[ 9], addr[10], addr[11]);
     155                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[12], addr[12], addr[13], addr[14], addr[15]);
     156        }
    115157
    116158        target_exit();
Note: See TracChangeset for help on using the changeset viewer.