• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ chDbgPanic函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中chDbgPanic函数的典型用法代码示例。如果您正苦于以下问题:C++ chDbgPanic函数的具体用法?C++ chDbgPanic怎么用?C++ chDbgPanic使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了chDbgPanic函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: __block_api_write

/**
 * Fills eeprom area with pattern, than read it back and compare
 */
static void __block_api_write(uint8_t pattern, uint32_t len, uint8_t misaligment){
  uint32_t i = 0;
  uint32_t status = 0;
  uint32_t pos = 0;

  /* fill buffer with pattern */
  for (i = 0; i < len; i++)
    referencebuf[i] = pattern;

  /* move to begin of test area */
  chFileStreamSeek(&EfsTest, TestAreaStart + misaligment);
  pos = chFileStreamGetPosition(&EfsTest);
  if (pos != TestAreaStart + misaligment)
    chDbgPanic("file seek error");

  /* write */
  status = chFileStreamWrite(&EfsTest, referencebuf, len);
  if (status < len)
    chDbgPanic("write failed");

  /* check */
  pos = chFileStreamGetPosition(&EfsTest);
  if (pos != len + TestAreaStart + misaligment)
    chDbgPanic("file seek error");
  chFileStreamSeek(&EfsTest, pos - len);
  status = chFileStreamRead(&EfsTest, checkbuf, len);
  if (status < len)
    chDbgPanic("veryfication failed");
  if (memcmp(referencebuf, checkbuf, len) != 0)
    chDbgPanic("veryfication failed");
}
开发者ID:barthess,项目名称:eeprom_burn,代码行数:34,代码来源:eeprom_testsuit.c


示例2: pattern_fill

/**
 * Fills eeprom area with pattern, than read it back and compare
 */
static void pattern_fill(EepromFileStream *EfsTest, uint8_t pattern){
  uint32_t i = 0;
  uint32_t status = 0;
  uint32_t pos = 0;
  uint32_t len = chFileStreamGetSize(EfsTest);

  /* fill buffer with pattern */
  for (i = 0; i < len; i++)
    referencebuf[i] = pattern;

  /* move to begin of test area */
  pos = 0;
  chFileStreamSeek(EfsTest, pos);
  if (pos != chFileStreamGetPosition(EfsTest))
    chDbgPanic("file seek error");

  /* write */
  status = chFileStreamWrite(EfsTest, referencebuf, len);
  if (status != len)
    chDbgPanic("write failed");

  /* check */
  pos = chFileStreamGetPosition(EfsTest);
  if (pos != len)
    chDbgPanic("writing error");

  pos = 0;
  chFileStreamSeek(EfsTest, pos);
  status = chFileStreamRead(EfsTest, checkbuf, len);
  if (status != len)
    chDbgPanic("reading back failed");
  if (memcmp(referencebuf, checkbuf, len) != 0)
    chDbgPanic("veryfication failed");
}
开发者ID:barthess,项目名称:24aa,代码行数:37,代码来源:eeprom_testsuit.c


示例3: MicrosdInit

void MicrosdInit(void){

  /*
   * Initializes the MMC driver to work with SPI.
   */
  palSetPadMode(IOPORT1, PIOA_SPI0_NSS, PAL_MODE_OUTPUT_PUSHPULL);
  palSetPad(IOPORT1, PIOA_SPI0_NSS);

  microsd_writer_tp = chThdCreateStatic(
      MmcWriterThreadWA,
      sizeof(MmcWriterThreadWA),
      MMC_THREAD_PRIO,
      MmcWriterThread,
      NULL);
  if (microsd_writer_tp == NULL)
    chDbgPanic("Can not allocate memory");

  microsd_reader_cc_tp = chThdCreateStatic(
      MmcReaderCcThreadWA,
      sizeof(MmcReaderCcThreadWA),
      MMC_THREAD_PRIO,
      MmcReaderCcThread,
      &SDGSM);
  if (microsd_reader_cc_tp == NULL)
      chDbgPanic("Can not allocate memory");

  microsd_reader_dm_tp = chThdCreateStatic(
      MmcReaderDmThreadWA,
      sizeof(MmcReaderDmThreadWA),
      MMC_THREAD_PRIO,
      MmcReaderDmThread,
      &SDDM);
  if (microsd_reader_dm_tp == NULL)
      chDbgPanic("Can not allocate memory");
}
开发者ID:barthess,项目名称:volat3,代码行数:35,代码来源:microsd.c


示例4: test_wtapper_write_byte

static void test_wtapper_write_byte(uint8_t pattern, uint32_t pos){
  uint8_t u8result;
  uint8_t u8 = pattern;

  chFileStreamSeek(&EfsTest, pos);
  if (EepromWriteByte(&EfsTest, u8) != sizeof(u8))
    chDbgPanic("write failed");
  chFileStreamSeek(&EfsTest, chFileStreamGetPosition(&EfsTest) - sizeof(u8));
  u8result = EepromReadByte(&EfsTest);
  if (u8 != u8result)
    chDbgPanic("veryfication failed");
}
开发者ID:barthess,项目名称:eeprom_burn,代码行数:12,代码来源:eeprom_testsuit.c


示例5: test_wtapper_write_halfword

static void test_wtapper_write_halfword(uint8_t pattern, uint32_t pos){
  uint16_t u16result;
  uint16_t u16 = 0;
  u16 |= pattern << 8 | pattern;

  chFileStreamSeek(&EfsTest, pos);
  if (EepromWriteHalfword(&EfsTest, u16) != sizeof(u16))
    chDbgPanic("write failed");
  chFileStreamSeek(&EfsTest, chFileStreamGetPosition(&EfsTest) - sizeof(u16));
  u16result = EepromReadHalfword(&EfsTest);
  if (u16 != u16result)
    chDbgPanic("veryfication failed");
}
开发者ID:barthess,项目名称:eeprom_burn,代码行数:13,代码来源:eeprom_testsuit.c


示例6: test_wtapper_write_word

static void test_wtapper_write_word(uint8_t pattern, uint32_t pos){
  uint32_t u32result;
  uint32_t u32 = 0;
  u32 |= pattern << 24 | pattern << 16 | pattern << 8 | pattern;

  chFileStreamSeek(&EfsTest, pos);
  if (EepromWriteWord(&EfsTest, u32) != sizeof(u32))
    chDbgPanic("write failed");
  chFileStreamSeek(&EfsTest, chFileStreamGetPosition(&EfsTest) - sizeof(u32));
  u32result = EepromReadWord(&EfsTest);
  if (u32 != u32result)
    chDbgPanic("veryfication failed");
}
开发者ID:barthess,项目名称:eeprom_burn,代码行数:13,代码来源:eeprom_testsuit.c


示例7: eeprom_testsuit

void eeprom_testsuit(void){
  int8_t i = 0;
  int8_t j = 0;
  int32_t n = 0;

  /* backup data from test area */
  chFileStreamSeek(&EfsTest, TestAreaStart);
  if (chFileStreamRead(&EfsTest, backupbuf, TEST_AREA_SIZE) < TEST_AREA_SIZE)
    chDbgPanic("backuping failed");

  /* first check the whole test area */
  test_api_all(TEST_AREA_SIZE, 0);

  for (i = -2; i < 3; i++){
    for (j = 0; j < 3; j++){
      /* large block tests */
      n = EEPROM_PAGE_SIZE;
      while (n < (TEST_AREA_SIZE - 3 * EEPROM_PAGE_SIZE)){
        test_api_all(n + i,  j);
        test_api_all(n + i,  EEPROM_PAGE_SIZE - 1 - j);
        n *= EEPROM_PAGE_SIZE;
      }
      /* small block tests */
      for (n = 2; n < 7; n++){
        test_api_all(n + i,     j);
        test_api_all(n + i,     EEPROM_PAGE_SIZE - 1 - j);
        test_api_all(n*10 + i,  j);
        test_api_all(n*10 + i,  EEPROM_PAGE_SIZE - 1 - j);
      }
    }
  }

  /* wrapper fucntions test */
  test_wrapper_write_all_patterns(TestAreaStart);
  test_wrapper_write_all_patterns(TestAreaStart + 1);
  for (i = -4; i < 5; i++)
    test_wrapper_write_all_patterns(TestAreaStart + EEPROM_PAGE_SIZE + i);
  test_wrapper_write_all_patterns(TestAreaFinish - 5);

  /* personally check end of test area */
  test_wtapper_write_byte    (0x55, TestAreaFinish - 1);
  test_wtapper_write_halfword(0xAA, TestAreaFinish - 2);
  test_wtapper_write_word    (0xA5, TestAreaFinish - 4);

  /* roll back data from backup */
  chFileStreamSeek(&EfsTest, TestAreaStart);
  if (chFileStreamWrite(&EfsTest, backupbuf, TEST_AREA_SIZE) < TEST_AREA_SIZE)
    chDbgPanic("rolling back failed");
}
开发者ID:barthess,项目名称:eeprom_burn,代码行数:49,代码来源:eeprom_testsuit.c


示例8: i2c_lld_serve_interrupt

/**
 * @brief   I2C shared ISR code.
 *
 * @param[in] i2cp      pointer to the @p I2CDriver object
 *
 * @notapi
 */
static void i2c_lld_serve_interrupt(I2CDriver *i2cp) {

  uint32_t sr;
  sr = AT91C_BASE_TWI->TWI_SR;
  /* this masking doing in official Atmel driver. Is it needed ??? */
  sr &= AT91C_BASE_TWI->TWI_IMR;

  if (sr & AT91C_TWI_NACK){
    i2cp->errors |= I2CD_ACK_FAILURE;
    wakeup_isr(i2cp, RDY_RESET);
    return;
  }
  if (sr & AT91C_TWI_RXRDY){
    _i2c_lld_serve_rx_interrupt(i2cp);
  }
  else if (sr & AT91C_TWI_TXRDY){
    _i2c_lld_serve_tx_interrupt(i2cp);
  }
  else if (sr & AT91C_TWI_TXCOMP){
    AT91C_BASE_TWI->TWI_IDR = AT91C_TWI_TXCOMP;
    wakeup_isr(i2cp, RDY_OK);
  }
  else
    chDbgPanic("Invalid value");
}
开发者ID:AntidotRepository,项目名称:Quadrirotor,代码行数:32,代码来源:i2c_lld.c


示例9: ControllerInit

void ControllerInit(void){

  uint32_t *sysid;

  /* initial mavlink values */
  param_registry.valueSearch("SYS_ID",  &sysid);

  mavlink_system_struct.sysid  = *sysid;
  mavlink_system_struct.compid = MAV_COMP_ID_ALL;
  mavlink_system_struct.state  = MAV_STATE_BOOT;
  mavlink_system_struct.mode   = MAV_MODE_PREFLIGHT;
  mavlink_system_struct.type   = MAV_TYPE_FIXED_WING;

  /**/
  switch (mavlink_system_struct.type){
  case MAV_TYPE_GROUND_ROVER:
    mav_dispatcher.start(NORMALPRIO);
    cmd_executor.start(NORMALPRIO);
    break;

  case MAV_TYPE_FIXED_WING:
    mav_dispatcher.start(NORMALPRIO);
    cmd_executor.start(NORMALPRIO);
    break;

  default:
    chDbgPanic("This mode is unsupported");
    break;
  }
}
开发者ID:Smolyarov,项目名称:u2,代码行数:30,代码来源:controller.cpp


示例10: switch

/**
 * Updates calibration data.
 */
void LSM303calibrator::update(const float *data, uint32_t still_msk){
  switch(state){
  case LSM303_CAL_SLEEP:
    /* nothing to do */
    return;
    break;

  case LSM303_CAL_WAIT_NEXT:
    if ((chTimeNow() - last_point_timestamp) < WAIT_NEXT_TIMEOUT){
      red_blink_mb.post((msg_t)slowblink, TIME_IMMEDIATE);
      return;
    }
    else{
      /* time is out */
      chSysLock();
      sample = 0;
      point = 0;
      state = LSM303_CAL_SLEEP;
      chSysUnlock();
      mavlink_dbg_print(MAV_SEVERITY_INFO, "MAG: wait next point time out");
      mavlink_system_struct.state = MAV_STATE_STANDBY;
    }
    break;

  case LSM303_CAL_COLLECTING:
    collecting(data, still_msk);
    break;

  default:
    chDbgPanic("unhandled case");
    break;
  }
}
开发者ID:barthess,项目名称:u,代码行数:36,代码来源:lsm303_cal.cpp


示例11: dbg_check_leave_isr

/**
 * @brief   Guard code for @p CH_IRQ_EPILOGUE().
 *
 * @notapi
 */
void dbg_check_leave_isr(void) {

  port_lock_from_isr();
  if ((dbg_isr_cnt <= 0) || (dbg_lock_cnt != 0))
    chDbgPanic("SV#9");
  dbg_isr_cnt--;
  port_unlock_from_isr();
}
开发者ID:DroneBuster,项目名称:lpc_gsm,代码行数:13,代码来源:chdebug.c


示例12: dbg_check_enter_isr

/**
 * @brief   Guard code for @p CH_IRQ_PROLOGUE().
 *
 * @notapi
 */
void dbg_check_enter_isr(void) {

  port_lock_from_isr();
  if ((dbg_isr_cnt < 0) || (dbg_lock_cnt != 0))
    chDbgPanic("SV#8");
  dbg_isr_cnt++;
  port_unlock_from_isr();
}
开发者ID:DroneBuster,项目名称:lpc_gsm,代码行数:13,代码来源:chdebug.c


示例13: PowerKeeperThread

static msg_t PowerKeeperThread(void *arg){
  chRegSetThreadName("PowerKeeper");
  (void)arg;

  uint32_t batcap = 0;  /* battery capacitance in A*mS */
  uint32_t batfill = 0; /* battery filling in A*mS */
  int32_t i = -1;

  /* get current battery capacitance from parameter structure */
  i = _key_index_search("BAT_cap");
  if (i == -1)
    chDbgPanic("key not found");
  else
    batcap = 3600 * ((uint32_t)floorf(global_data[i].value));

  /* get battery fill in percents and calculate fill in A*mS*/
  i = _key_index_search("BAT_fill");
  if (i == -1)
    chDbgPanic("key not found");
  else
    batfill = (batcap * (uint32_t)floorf(global_data[i].value)) / 100;


  systime_t time = chTimeNow();     // T0
  while (TRUE) {
    time += MS2ST(PWR_CHECK_PERIOD);              // Next deadline

    raw_data.main_current = samples[ADC_CURRENT_SENS_OFFSET];
    raw_data.main_voltage = samples[ADC_MAIN_SUPPLY_OFFSET];
    raw_data.secondary_voltage = samples[ADC_6V_SUPPLY_OFFSET];

    comp_data.main_current = get_comp_main_current(raw_data.main_current);
    comp_data.secondary_voltage = get_comp_secondary_voltage(raw_data.secondary_voltage);

    batfill -= (comp_data.main_current * PWR_CHECK_PERIOD) / 1000;

    mavlink_sys_status_struct.battery_remaining = (batfill * 100) / batcap;
    mavlink_sys_status_struct.current_battery   = (uint16_t)(comp_data.main_current / 10);
    mavlink_sys_status_struct.voltage_battery   = comp_data.secondary_voltage;

    chThdSleepUntil(time);
  }
  return 0;
}
开发者ID:mcu786,项目名称:u,代码行数:44,代码来源:adc_local.c


示例14: lockAnyContext

// todo: make this a macro? always inline?
efitime_t Overflow64Counter::get() {
#if EFI_PROD_CODE
	bool alreadyLocked = lockAnyContext();
	efitime_t localH = state.highBits;
	uint32_t localLow = state.lowBits;

	uint32_t value = GET_TIMESTAMP();

	if (value < localLow) {
		// new value less than previous value means there was an overflow in that 32 bit counter
		localH += 0x100000000LL;
	}

	efitime_t result = localH + value;

	if (!alreadyLocked) {
		unlockAnyContext();
	}
	return result;
#else

	/**
	 * this method is lock-free and thread-safe, that's because the 'update' method
	 * is atomic with a critical zone requirement.
	 *
	 * http://stackoverflow.com/questions/5162673/how-to-read-two-32bit-counters-as-a-64bit-integer-without-race-condition
	 */
	efitime_t localH;
	uint32_t localLow;
	int counter = 0;
	while (true) {
		localH = state.highBits;
		localLow = state.lowBits;
		efitime_t localH2 = state.highBits;
		if (localH == localH2)
			break;
#if EFI_PROD_CODE || defined(__DOXYGEN__)
		if (counter++ == 10000)
			chDbgPanic("lock-free frozen");
#endif /* EFI_PROD_CODE */
	}
	/**
	 * We need to take current counter after making a local 64 bit snapshot
	 */
	uint32_t value = GET_TIMESTAMP();

	if (value < localLow) {
		// new value less than previous value means there was an overflow in that 32 bit counter
		localH += 0x100000000LL;
	}

	return localH + value;
#endif
}
开发者ID:jon-weisz,项目名称:rusefi,代码行数:55,代码来源:efilib2.cpp


示例15: __burn

void __burn(BaseSequentialStream *chp, uint8_t pattern){
  volatile uint32_t status = 0;
  uint32_t eeprom_cycle;

  eeprom_cycle = BKP->DR1;
  eeprom_cycle = eeprom_cycle << 16;
  eeprom_cycle += BKP->DR2;

  if (BKP->DR3 == 1){
    //chprintf(chp, "EEPROM exhausted at %u try\n", eeprom_cycle);
    return;
  }

  /* fill memory buffer and write it to eeprom */
  memset(databuf, pattern, sizeof(databuf));
  chFileStreamSeek(&EepromFile, 0);
  status = chFileStreamWrite(&EepromFile, databuf, EEPROM_SIZE);
  if (status != sizeof(databuf))
    chDbgPanic("");

  /* read eeprom to test buffer */
  chFileStreamSeek(&EepromFile, 0);
  chFileStreamRead(&EepromFile, testbuf, EEPROM_SIZE);
  if (status != sizeof(databuf))
    chDbgPanic("");

  /* compare 2 buffers. Non zero value denotes bad sector in eeprom */
  status = memcmp(databuf, testbuf, EEPROM_SIZE);
  if (status != 0){
    BKP->DR3 = 1; /* bad sector(s) appeared */
    return;
  }

  /* Print note to console and increment cycle counter */
  //chprintf(chp, "EEPROM burn %u \n", eeprom_cycle);
  eeprom_cycle++;
  BKP->DR2 = eeprom_cycle & 0xFFFF;
  BKP->DR1 = (eeprom_cycle >> 16) & 0xFFFF;

  palTogglePad(IOPORT3, GPIOC_LED);
}
开发者ID:barthess,项目名称:eeprom_burn,代码行数:41,代码来源:main.c


示例16: SpawnMavlinkThreads

/**
 * Create telemetry link threads
 */
void SpawnMavlinkThreads(void *sdp) {

    linkout_tp = chThdCreateStatic(LinkOutThreadWA,
                                   sizeof(LinkOutThreadWA),
                                   LINK_THREADS_PRIO,
                                   LinkOutThread,
                                   sdp);

    if (linkout_tp == NULL)
        chDbgPanic("Can not allocate memory");

    linkin_tp = chThdCreateStatic(LinkInThreadWA,
                                  sizeof(LinkInThreadWA),
                                  LINK_THREADS_PRIO,
                                  LinkInThread,
                                  sdp);
    if (linkin_tp == NULL)
        chDbgPanic("Can not allocate memory");

    setGlobalFlag(GlobalFlags.tlm_link_ready);
}
开发者ID:barthess,项目名称:u,代码行数:24,代码来源:link.cpp


示例17: eepromtest_clicmd

Thread* eepromtest_clicmd(int argc, const char * const * argv, SerialDriver *sdp){
  (void)argc;
  (void)argv;

  Thread *eeprom_tp = chThdCreateFromHeap(&ThdHeap,
                                  sizeof(EepromTestThreadWA),
                                  NORMALPRIO,
                                  EepromTestThread,
                                  sdp);
  if (eeprom_tp == NULL)
    chDbgPanic("Can not allocate memory");
  return eeprom_tp;
}
开发者ID:barthess,项目名称:24aa,代码行数:13,代码来源:eeprom_testsuit.c


示例18: CanInitLocal

Thread* CanInitLocal(void){
  canInit();
  canStart(&CAND1, &cancfg);

  can_tp = chThdCreateFromHeap(
      &ThdHeap,
      sizeof(CanTxThreadWA),
      LINK_THREADS_PRIO - 2,
      CanTxThread,
      NULL);

  if (can_tp == NULL)
    chDbgPanic("Can not allocate memory");

  return can_tp;
}
开发者ID:barthess,项目名称:volat3,代码行数:16,代码来源:can_local.c


示例19: register_handler

	void register_handler(const Message::ID id, MessageHandler&& handler) {
		if( map_[toUType(id)] != nullptr ) {
			chDbgPanic("MsgDblReg");
		}
		map_[toUType(id)] = std::move(handler);
	}
开发者ID:TimofonicJunkRoom,项目名称:portapack-hackrf,代码行数:6,代码来源:message.hpp


示例20: __cxa_pure_virtual

 void __cxa_pure_virtual() { chDbgPanic("Pure virtual function call."); }
开发者ID:barthess,项目名称:u,代码行数:1,代码来源:gcc_stubs.cpp



注:本文中的chDbgPanic函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ chEvtRegister函数代码示例发布时间:2022-05-30
下一篇:
C++ chDbgCheckClassI函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap