Kenji Arai
/
Mutex_lock_failed_on_os_5_10
Mutex lock failed error is happened on OS5.10.x(Works fine on OS5.9.7)
main.cpp@0:f865905db3ad, 2018-10-20 (annotated)
- Committer:
- kenjiArai
- Date:
- Sat Oct 20 07:53:59 2018 +0000
- Revision:
- 0:f865905db3ad
Error Message: Mutex lock failed on OS5.10.x
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:f865905db3ad | 1 | /* |
kenjiArai | 0:f865905db3ad | 2 | * MUTEX ERROR reproduce program on OS5.10.x |
kenjiArai | 0:f865905db3ad | 3 | * by Kenji Arai / JH1PJL on October 20th, 2018 |
kenjiArai | 0:f865905db3ad | 4 | */ |
kenjiArai | 0:f865905db3ad | 5 | |
kenjiArai | 0:f865905db3ad | 6 | /* |
kenjiArai | 0:f865905db3ad | 7 | on 5.9.7/18 Sep 2018 -> works well |
kenjiArai | 0:f865905db3ad | 8 | on 5.10.0/3weeks, 3dyas a go -> Mutex lock failed, error=0x80020115 |
kenjiArai | 0:f865905db3ad | 9 | on 5.10.1/1weeks,1day ago -> Mutex lock failed, error=0x80020115 |
kenjiArai | 0:f865905db3ad | 10 | on 5.10.2/12hours, 12minutes ago -> Mutex lock failed, error=0x80020115 |
kenjiArai | 0:f865905db3ad | 11 | */ |
kenjiArai | 0:f865905db3ad | 12 | |
kenjiArai | 0:f865905db3ad | 13 | #include "mbed.h" |
kenjiArai | 0:f865905db3ad | 14 | |
kenjiArai | 0:f865905db3ad | 15 | // RUN ONLY ON mbed-os5.9.7 |
kenjiArai | 0:f865905db3ad | 16 | #if (MBED_MAJOR_VERSION == 5) &&\ |
kenjiArai | 0:f865905db3ad | 17 | (MBED_MINOR_VERSION == 10) |
kenjiArai | 0:f865905db3ad | 18 | // correct mbed-os version |
kenjiArai | 0:f865905db3ad | 19 | #else |
kenjiArai | 0:f865905db3ad | 20 | #warning "Not use Mbed-os5.10.x" |
kenjiArai | 0:f865905db3ad | 21 | #endif |
kenjiArai | 0:f865905db3ad | 22 | |
kenjiArai | 0:f865905db3ad | 23 | Serial pc(USBTX, USBRX); |
kenjiArai | 0:f865905db3ad | 24 | |
kenjiArai | 0:f865905db3ad | 25 | CircularBuffer<char, 1024> rxbuf; // PC receiving Buffer |
kenjiArai | 0:f865905db3ad | 26 | |
kenjiArai | 0:f865905db3ad | 27 | void rx_handler(void) |
kenjiArai | 0:f865905db3ad | 28 | { |
kenjiArai | 0:f865905db3ad | 29 | if (pc.readable()) { |
kenjiArai | 0:f865905db3ad | 30 | rxbuf.push(pc.getc()); |
kenjiArai | 0:f865905db3ad | 31 | } |
kenjiArai | 0:f865905db3ad | 32 | } |
kenjiArai | 0:f865905db3ad | 33 | |
kenjiArai | 0:f865905db3ad | 34 | int main() |
kenjiArai | 0:f865905db3ad | 35 | { |
kenjiArai | 0:f865905db3ad | 36 | char dt = 0; |
kenjiArai | 0:f865905db3ad | 37 | |
kenjiArai | 0:f865905db3ad | 38 | rxbuf.reset(); |
kenjiArai | 0:f865905db3ad | 39 | pc.attach(&rx_handler, Serial::RxIrq); |
kenjiArai | 0:f865905db3ad | 40 | while(true){ |
kenjiArai | 0:f865905db3ad | 41 | if (!rxbuf.empty()){ // wait receiving a character |
kenjiArai | 0:f865905db3ad | 42 | rxbuf.pop(dt); |
kenjiArai | 0:f865905db3ad | 43 | pc.putc(dt); |
kenjiArai | 0:f865905db3ad | 44 | } |
kenjiArai | 0:f865905db3ad | 45 | } |
kenjiArai | 0:f865905db3ad | 46 | } |
kenjiArai | 0:f865905db3ad | 47 |