(toppers-users 3063) [H8]E_CTX reported by `isig_tim()' in line 63 of `../jsp/systask/timer.c'. ȯ

¼ norichan1108 gmail.com
2010ǯ 2 12 () 22:21:08 JST


Ϥޤơ¼Ȥޤ

󡢻ˤH8/3069Toppers/JSPѤ֤ȤळȤȤʤޤ
֤ȤƤϥեåLCDȥꥢ̿ǥХĤʤǡ̾
ɽȤñʥץꥱǤ
ɽưǧǤǥХȤΥꥢ̿⤤餫ϤǤƤ
Ǥꥢ̿˥ե꡼ꡢE_CTXȤʤisig_tim()顼
֤ꤷƤޤʤʤޤޤ

E_CTX reported by `isig_tim()' in line 63 of `../jsp/systask/timer.c'.

¤֤ΤΤϷˤޤǤ˺¤ưž夲ʤФʤʤȤ⤢ꡢ
ΤޤToppers/JSPȤΤľȽǤʤФʤʤ
äƤޤ⤷H8ݡȤǤξ嵭θݤˤĤƲ󤬤
餴ޤǤ礦


줫顢äH8Υϡɥޥ˥奢ФḫȤ
t_cpu_lock()ǸƤФƤdisintμORCCCRI,UIե饰򥻥åȤ
ľcpulockե饰ꤷƤޤORC¹˳ߤ硢
H8ORCμ̿¹ԤƤʬ褦Ǥ
ʤȡCPUå֤dzߤäƤޤǽޤ
ʤΤǡdisintORCθNOPʤ̵ʽ줿ۤɤ褦˻פޤ

--Ѥ--
5.5.2ߤμդػߤƤ̿
ߤػߤƤ̿ˤϡLDCANDCORCXORC ̿᤬ޤ
׵᤬ȯȡߥȥ餬̤ͥȽꤷ塢CPU
Ƴߤ׵ᤷޤΤȤCPUߤػߤƤ̿¹ԤƤ
ϡ̿μ¹Ԥλ塢ɬ̿¹Ԥޤ
--Ѥޤ--


ʤ嵭ν(NOPɲ)ϼ긵Ǽºݤ˻ƸޤθݤβˤϤ
ޤǤ¾θΤȻפޤ


Ķ
ubuntu 8.04TLS(on VMWare)
gcc-3.4.3 ѥå(with-newlib disable-nls)
binutils-1.15 (disable-nld)
newlib-1.13.0
make 3.81

ǤꥢʬΥǤ
LCD䥭ϴϢ򤹤٤ƻ֤ǤƸޤ

oid rfid_task_main( VP_INT exinf )
{
  UB		buf[RECV_BUF_LEN];
  ER		result;
  RFID_MSG*	msg;
  int		i;
  int		cnt;
  int		l;
  T_SERIAL_RPOR	sts;

  if ((result = serial_opn_por(USER_PORTID)) == E_OK)
    {
      /* ݡե饰 */
      syscall(serial_ctl_por(USER_PORTID, 0));

      /* ߡơޥɤ˼դ褦ˤ */
      for (i=0; i<2; i++)
	{
	  /* ߡCR */
	  syslog(LOG_NOTICE, "Send:CR");
	  result = serial_wri_dat(USER_PORTID, DUMMY, sizeof(DUMMY)-1);

	  syslog(LOG_NOTICE,"result:%d",result);

	  if (result != sizeof(DUMMY)-1)
	    {
	      syslog(LOG_EMERG, "error serial_wri_dat() code=%d", result);
	    }
	
	  /* 100msԵ */
	  syscall(dly_tsk(100));

	  /* ХåեƤɤ߽Ф */
	  memset(buf, 0, sizeof(buf));
	  for (i=0;; i++)
	    {
	      result = serial_rea_dat(USER_PORTID, &buf[i], 1);
	      if (result == 1)
		{
		  if (buf[i] == '\r') break;
		}
	      else
		{
		  syslog(LOG_EMERG, "error serial_rea_dat() code=%d", result);
		}
	    }
	  syslog(LOG_NOTICE, "Recv:%s", buf);
	}

      /* ޥɥ⡼ɤ */
      syslog(LOG_NOTICE, "Send: %s", CMD_MODE);
      result = serial_wri_dat(USER_PORTID, CMD_MODE, sizeof(CMD_MODE)-1);
      if (result != sizeof(CMD_MODE)-1)
	{
	  syslog(LOG_EMERG, "error serial_wri_dat() code=%d", result);
	}
      syslog(LOG_NOTICE, "Send-");

      /*  */
      memset(buf, 0, sizeof(buf));
      for (i=0;; i++)
	{
	  result = serial_rea_dat(USER_PORTID, &buf[i], 1);
	  if (result == 1)
	    {
	      if (buf[i] == '\r') break;
	    }
	  else
	    {
	      syslog(LOG_EMERG, "error serial_rea_dat() code=%d", result);
	    }
	}
      syslog(LOG_NOTICE, "Recv:%s", buf);

      /* Mifare⡼ɤ */
      syslog(LOG_NOTICE, "Send: %s", MIFARE_MODE);
      result = serial_wri_dat(USER_PORTID, MIFARE_MODE, sizeof(MIFARE_MODE)-1);
      if (result != sizeof(MIFARE_MODE)-1)
	{
	  syslog(LOG_EMERG, "error serial_wri_dat() code=%d", result);
	}
      syslog(LOG_NOTICE, "Send-");

      /*  */
      memset(buf, 0, sizeof(buf));
      for (i=0;; i++)
	{
	  result = serial_rea_dat(USER_PORTID, &buf[i], 1);
	  if (result == 1)
	    {
	      if (buf[i] == '\r') break;
	    }
	  else
	    {
	      syslog(LOG_EMERG, "error serial_rea_dat() code=%d", result);
	    }	
	}
      syslog(LOG_NOTICE, "Recv:%s", buf);

      for (;;)
	{
	  /* 󥳥ޥɤ */
	  syslog(LOG_NOTICE, "Send: %s", MIFARE_SCAN);
	  result = serial_wri_dat(USER_PORTID, MIFARE_SCAN, sizeof(MIFARE_SCAN)-1);
	  if (result != sizeof(MIFARE_SCAN)-1)
	    {
	      syslog(LOG_EMERG, "error serial_wri_dat() code=%d", result);
	    }

	  syslog(LOG_NOTICE, "Send-");
	  /*  */
	  memset(buf, 0, sizeof(buf));
	  for (i=0;; i++)
	    {
	      result = serial_rea_dat(USER_PORTID, &buf[i], 1);
	      if (result == 1)
		{
		  if (buf[i] == '\r') break;
		}
	      else
		{
		  syslog(LOG_EMERG, "error serial_rea_dat() code=%d", result);
		}	
	    }
	  buf[i] = 0;
	  syslog(LOG_NOTICE, "Recv:%s", buf);

	  /* 0.5ô */
	  syscall(dly_tsk(500));
	}
    }
}