Purpose: Simple application example with 2 threads communicating 5-byte buffers through a Mail event-object.
Dependencies: IHM_V2
Fork of mbed-os-example-mbed5-blinky by

Purpose: Simple application example with 2 threads communicating 5-byte buffers through a Mail event-object. Target: L432KC / Nboard (from IUT-Cachan) Tested: YES (2019-01-09) Author: Jacques-Olivier Klein - IUT de CACHAN Date: 2018-02-10 rev. 2019-01-09 OS_STACK_SIZE=4096 Libraries: mbed-os rev5345:c966348(03jan2019) + IHMV2 (from IUT-Cachan) rev6:ad91067
Revision 27:da71f99ce831, committed 2018-02-10
- Comitter:
- jacquesolivierklein
- Date:
- Sat Feb 10 22:10:15 2018 +0000
- Parent:
- 26:0b45eb26bd42
- Child:
- 28:9a6aff2af525
- Commit message:
- initial
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IHM_V1.lib Sat Feb 10 22:10:15 2018 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/NBoard/code/IHM_V1/#a9e51ac904e2
--- a/README.md Wed Feb 15 10:00:05 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -# Getting started with Blinky on mbed OS - -This is a very simple guide, reviewing the steps required to get Blinky working on an mbed OS platform. - -Please install [mbed CLI](https://github.com/ARMmbed/mbed-cli#installing-mbed-cli). - -## Get the example application! - -From the command line, import the example: - -``` -mbed import mbed-os-example-blinky -cd mbed-os-example-blinky -``` - -### Now compile - -Invoke `mbed compile` specifying the name of your platform and your favorite toolchain (`GCC_ARM`, `ARM`, `IAR`). For example, for the ARM Compiler 5: - -``` -mbed compile -m K64F -t ARM -``` - -Your PC may take a few minutes to compile your code. At the end you should get the following result: - -``` -[snip] -+----------------------------+-------+-------+------+ -| Module | .text | .data | .bss | -+----------------------------+-------+-------+------+ -| Misc | 13939 | 24 | 1372 | -| core/hal | 16993 | 96 | 296 | -| core/rtos | 7384 | 92 | 4204 | -| features/FEATURE_IPV4 | 80 | 0 | 176 | -| frameworks/greentea-client | 1830 | 60 | 44 | -| frameworks/utest | 2392 | 512 | 292 | -| Subtotals | 42618 | 784 | 6384 | -+----------------------------+-------+-------+------+ -Allocated Heap: unknown -Allocated Stack: unknown -Total Static RAM memory (data + bss): 7168 bytes -Total RAM memory (data + bss + heap + stack): 7168 bytes -Total Flash memory (text + data + misc): 43402 bytes -Image: .\.build\K64F\ARM\mbed-os-example-blinky.bin -``` - -### Program your board - -1. Connect your mbed device to the computer over USB. -1. Copy the binary file to the mbed device . -1. Press the reset button to start the program. - -You should see the LED of your platform turning on and off. - -Congratulations if you managed to complete this test! - -## Export the project to Keil MDK and debug your application - -From the command line, run the following command: - -``` -mbed export -m K64F -i uvision -``` - -To debug the application: - -1. Start uVision. -1. Import the uVision project generated earlier. -1. Compile your application and generate an `.axf` file. -1. Make sure uVision is configured to debug over CMSIS-DAP (From the Project menu > Options for Target '...' > Debug tab > Use CMSIS-DAP Debugger). -1. Set breakpoints and start a debug session. - - - -## Troubleshooting - -1. Make sure `mbed-cli` is working correctly and its version is `>1.0.0` - - ``` - mbed --version - ``` - - If not, you can update it easily: - - ``` - pip install mbed-cli --upgrade - ``` - -2. If using Keil MDK, make sure you have a license installed. [MDK-Lite](http://www.keil.com/arm/mdk.asp) has a 32KB restriction on code size.
--- a/main.cpp Wed Feb 15 10:00:05 2017 +0000
+++ b/main.cpp Sat Feb 10 22:10:15 2018 +0000
@@ -1,13 +1,82 @@
+// Title: mbed-os-mail-5-Bytes-tx-rx
+// Author: Jacques-Olivier Klein - IUT de CACHAN
+// Date: 2018-02-10
+
#include "mbed.h"
+#include "IHM.h"
+
+#define MY_MAIL_BUFFER_SIZE 5
+#define MY_MAIL_NBER_OF_BUFFER 4
-DigitalOut led1(LED1);
+typedef struct{
+ char message [MY_MAIL_BUFFER_SIZE] ;
+} Mail_Buffer_T;
+
+IHM ihm;
+
+DigitalOut L0 (PB_3) ; // led L0
+DigitalOut L1 (PA_7) ; // led L1
+DigitalOut L2 (PA_6) ; // led L2
+
+void TxMail ();
+void RxMail ();
+
+Mail<Mail_Buffer_T, MY_MAIL_NBER_OF_BUFFER> my_mail_box;
-// main() runs in its own thread in the OS
-// (note the calls to wait below for delays)
-int main() {
- while (true) {
- led1 = !led1;
- wait(0.5);
+Ticker my_timer;
+Thread thread2;
+Thread thread3;
+Thread thread_Semaphore;
+Thread thread_rx_q(osPriorityNormal,DEFAULT_STACK_SIZE );
+Thread Thread_TxMail;
+Thread Thread_RxMail(osPriorityNormal,500);
+EventQueue the_event_queue;
+
+Semaphore mysemaphore(0);
+
+int main(void)
+{ ihm.LCD_clear();
+ ihm.LCD_printf("Mail-5B-tx-rx-%s %s",__DATE__,__TIME__);
+ printf("mbed-os-mail-5-Bytes-tx-rx-%s %s\n\r",__DATE__,__TIME__);
+ printf("DEFAULT_STACK_SIZE:%d\n\r", DEFAULT_STACK_SIZE);
+
+ Thread_TxMail.start(TxMail);
+ Thread_RxMail.start(RxMail);
+
+ while(1){
+ Thread::wait(3000);
+ L0=!L0;
+ printf("M [pid-%d]Main \n\r",Thread::gettid());
}
}
+void TxMail (){
+ Mail_Buffer_T * p_buffer;
+ char c = '!';
+ int i;
+ while(1){
+ p_buffer = (Mail_Buffer_T *) my_mail_box.alloc();
+ for(i=0;i<MY_MAIL_BUFFER_SIZE-1;i++){
+ p_buffer->message[i]=c++;
+ if (c=='}')c='!';
+ }
+ p_buffer->message[MY_MAIL_BUFFER_SIZE-1]=0;
+ printf(" T [pid-%d]TxMail:<%s>\n\r",Thread::gettid(),p_buffer->message);
+ my_mail_box.put(p_buffer);
+ L1 = ! L1;
+ Thread::wait(1000);
+ }
+}
+
+void RxMail (){
+ Mail_Buffer_T * p_mail_buffer;
+ Mail_Buffer_T local_buffer;
+ while(1){
+ osEvent evt = my_mail_box.get();
+ L2 = ! L2;
+ p_mail_buffer = (Mail_Buffer_T *)evt.value.p;
+ memcpy ( &local_buffer,p_mail_buffer, MY_MAIL_BUFFER_SIZE);
+ my_mail_box.free(p_mail_buffer);
+ printf(" R[pid-%d]RxMail:<%s>\n\r",Thread::gettid(),local_buffer.message);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/readme.txt Sat Feb 10 22:10:15 2018 +0000 @@ -0,0 +1,11 @@ +Title : mbed-os-mail-5-Bytes-tx-rx + +Purpose: Simple application example with 2 threads +communicating 5-byte buffers through a Mail event-object. +Target: L432KC / Nboard (from IUT-Cachan) +Tested: yes +Author: Jacques-Olivier Klein - IUT de CACHAN +Date: 2018-02-10 +DEFAULT_STACK_SIZE=2048 +Libraries: mbed-os rev2741:bcf7085(26feb-2017) + IHMV1 (from IUT-Cachan) rev4:a9e51ac +
