Change app examples to use counting semaphore

Adapt to Ethos-U driver changes

Change-Id: I5a10f9166f4d9ac32a1502409e1708ea62844944
diff --git a/applications/freertos/main.cpp b/applications/freertos/main.cpp
index d579944..712b9a4 100644
--- a/applications/freertos/main.cpp
+++ b/applications/freertos/main.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2022 Arm Limited. All rights reserved.
+ * SPDX-FileCopyrightText: Copyright 2019-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -167,7 +167,7 @@
 }
 
 void *ethosu_semaphore_create(void) {
-    SemaphoreHandle_t sem = xSemaphoreCreateBinary();
+    SemaphoreHandle_t sem = xSemaphoreCreateCounting(255, 0); // max, initial val
     if (sem == NULL) {
         printf("Error: Failed to create semaphore.\n");
     }
@@ -192,10 +192,8 @@
             return -1;
         }
     } else {
-        /* A FreeRTOS binary semaphore is fundamentally a queue that can only hold one item. If the queue is full,
-         * xSemaphoreGive will return a pdFALSE value. Ignoring the return value in here, as a semaphore give failure
-         * does not affect the application correctness. */
         if (xSemaphoreGive(handle) != pdTRUE) {
+            printf("Error: Failed to give semaphore.\n");
             // do nothing
         }
     }
diff --git a/applications/message_handler/lib/core_driver_mutex.cpp b/applications/message_handler/lib/core_driver_mutex.cpp
index bc043fa..d023ad2 100644
--- a/applications/message_handler/lib/core_driver_mutex.cpp
+++ b/applications/message_handler/lib/core_driver_mutex.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Arm Limited.
+ * SPDX-FileCopyrightText: Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -49,7 +49,7 @@
 }
 
 void *ethosu_semaphore_create(void) {
-    return xSemaphoreCreateBinary();
+    return xSemaphoreCreateCounting(255, 0);
 }
 
 int ethosu_semaphore_take(void *sem) {
@@ -69,11 +69,9 @@
             return -1;
         }
     } else {
-        /* A FreeRTOS binary semaphore is fundamentally a queue that can only hold one item. If the queue is full,
-         * xSemaphoreGive will return a pdFALSE value. Ignoring the return value in here, as a semaphore give failure
-         * does not affect the application correctness. */
         if (xSemaphoreGive(handle) != pdTRUE) {
-            // do nothing
+            printf("Error: Failed to give semaphore.\n");
+            return -1;
         }
     }
     return 0;