Closed
Description
Describe the bug
Running thread examples from:
- https://github.com/maksimdrachov/zephyr-rtos-tutorial/blob/main/exercises/threads/thread-start/src/main.c
and - https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/lessons/lesson-7-multithreaded-applications/topic/exercise-1-7/
fail to out any data to serial monitor. Tried blink led as led as well but that didn't work.
Target board + cli verbose compilation output
Arduino Zephyr - GIGA...
Optional: attach the sketch
From item 1:
/* main.c - Hello World demo */
/*
* Copyright (c) 2012-2014 Wind River Systems, Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
/* size of stack area used by each thread */
#define STACKSIZE 1024
/* scheduling priority used by each thread */
#define PRIORITY 7
/* delay between greetings (in ms) */
#define SLEEPTIME 500
K_THREAD_STACK_DEFINE(threadA_stack_area, STACKSIZE);
static struct k_thread threadA_data;
/* threadA is a static thread that is spawned automatically */
void threadA(void *dummy1, void *dummy2, void *dummy3)
{
ARG_UNUSED(dummy1);
ARG_UNUSED(dummy2);
ARG_UNUSED(dummy3);
Serial.print("thread_a: thread started \n");
while (1)
{
Serial.print("thread_a: thread loop \n");
k_msleep(SLEEPTIME);
}
}
void setup() {
k_thread_create(&threadA_data, threadA_stack_area,
K_THREAD_STACK_SIZEOF(threadA_stack_area),
threadA, NULL, NULL, NULL,
PRIORITY, 0, K_FOREVER);
k_thread_name_set(&threadA_data, "thread_a");
k_thread_start(&threadA_data);
}
void loop() {
// put your main code here, to run repeatedly:
}
from item 2
/*
* Copyright (c) 2017 Linaro Limited
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "elapsedMillis.h"
elapsedMillis timer;
/* STEP 2 - Define stack size and scheduling priority used by each thread */
#define STACKSIZE 1024
#define THREAD0_PRIORITY 7
#define THREAD1_PRIORITY 7
void thread0(void)
{
while (1) {
/* STEP 3 - Call printk() to display a simple string "Hello, I am thread0" */
Serial.print("Hello, I am thread0\n");
/* STEP 6 - Make the thread yield */
// k_yield();
/* STEP 10 - Put the thread to sleep */
k_msleep(5);
/* Remember to comment out the line from STEP 6 */
}
}
void thread1(void)
{
while (1) {
/* STEP 3 - Call printk() to display a simple string "Hello, I am thread1" */
Serial.print("Hello, I am thread1\n");
/* STEP 8 - Make the thread yield */
// k_yield();
/* STEP 10 - Put the thread to sleep */
k_msleep(10);
/* Remember to comment out the line from STEP 8 */
}
}
/* STEP 4 - Define and initialize the two threads */
K_THREAD_DEFINE(thread0_id, STACKSIZE, thread0, NULL, NULL, NULL, THREAD0_PRIORITY, 0, 0);
K_THREAD_DEFINE(thread1_id, STACKSIZE, thread1, NULL, NULL, NULL, THREAD1_PRIORITY, 0, 0);
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
if(timer > 5000){
Serial.println("called from loop");
timer = 0;
}
}
Metadata
Metadata
Assignees
Labels
No labels