Electoday 2025

ไมโครคอนโทรลเลอร์ => ARM Processors => Topic started by: TaoTao on March 18, 2016, 09:54:19 PM

Title: Coocox เวลา Debug จับแมลง.. หลายๆ ครั้ง มันขึ้น pulstack error อ่ะครับ
Post by: TaoTao on March 18, 2016, 09:54:19 PM
หลายๆ ครั้งที่ Debug หลังจาก กดปุ่ม แมลงทับๆ แว้ว
มันชอบขึ้นว่า error pulstack 0x100000008 อะไรนี่แหล่ะ

ตอนนี้ มั่วๆ แก้ที่ไฟล์ startup_md.c
เพิ่มจากเดิม 100 เป็น 400 เลย

บทมันจะเป็น ก็เป็นเรื่อยๆ ดีบักไม่ได้
คราวที่ไม่เป็น ก็ไม่เป็น

สรุป มันมีทางแก้ไหมครับ

แล้วบางที ตอนดีบัก
มันก็เด้งมา เข้า Default Haddler ที่ไฟล์ startup_md.c
ไม่รู้ว่าเป็นเพราะอะไร
ทั้งที่ ปิด interrupt ไปแล้ว
มันเกิดเพราะอะไรอ่ะครับ

ขอบคุณล่วงหน้าครับ
8)
Title: Re: Coocox เวลา Debug จับแมลง.. หลายๆ ครั้ง มันขึ้น pulstack error อ่ะครับ
Post by: dec on March 20, 2016, 07:34:13 PM
error pulstack นี่ผมก็ยังไม่เคยเจอครับ

ส่วนเด้งเข้า Default Handler ลองเช็คพวก Fault Handler ทั้งหลายดูครับ ประกาศ Function Interrupt ให้มันต่างหาก แล้วใส่ while(1); ไว้ บางทีถ้ามัน Detect เจอว่ามีความผิดพลาดเกิดขึ้นมันจะเด้งไปพวก Fault Handler ครับ
Title: Re: Coocox เวลา Debug จับแมลง.. หลายๆ ครั้ง มันขึ้น pulstack error อ่ะครับ
Post by: tha on March 24, 2016, 10:23:40 AM
คงต้องตรวจจับดูว่ามันเป็น hard fault, MemManage, Bus fault
ผมเคยตรวจจับ register bas fault ดังนั้

/**
  * @brief  This function handles Bus Fault exception.
  * @param  None
  * @retval None
  */
void BusFault_Handler(void)
{
   bus = SCB->CFSR;
   /* Go to infinite loop when Bus Fault exception occurs */
  while (1)
  {
  }
}

ดีบักดูรีจีสเตอร์บิต SCB->CFSR ว่า error เพราะอะไร มีไฟล์แนบมาด้วย
ในถามตอบนี้ผมก็เคยทำนะลองค้นดู ผมหาไม่เจอแล้ว โปรเจค Oscilloscope อะไรนี่แหละ