This is the interface for MP (Multi-Processor).
More...
#include <MP.h>
|
int | begin (int subid) |
| Start communication with the other processor. More...
|
|
int | end (int subid) |
| End communication with the other processor. More...
|
|
int | Send (int8_t msgid, uint32_t msgdata, int subid) |
| Send any 32bit-data to the other processor. More...
|
|
int | Recv (int8_t *msgid, uint32_t *msgdata, int subid) |
| Receive any 32bit-data from the other processor. More...
|
|
int | Send (int8_t msgid, void *msgaddr, int subid) |
| Send the address of any message to the other processor. More...
|
|
int | Recv (int8_t *msgid, void *msgaddr, int subid) |
| Receive the address of any message from the other processor. More...
|
|
template<typename T > |
int | SendObject (T &t, int subid) |
| Send any object to the other processor. More...
|
|
template<typename T > |
int | RecvObject (T &t, int subid) |
| Receive any object from the other processor. More...
|
|
int | SendWaitComplete (int subid) |
| Wait for the object to be sent. More...
|
|
void | RecvTimeout (uint32_t timeout) |
| Set timeout of receiver. More...
|
|
uint32_t | GetRecvTimeout () |
| Get timeout of receiver. More...
|
|
uint32_t | Virt2Phys (void *virt) |
| Convert virtual address to physical address. More...
|
|
void | GetMemoryInfo (int &usedMem, int &freeMem, int &largestFreeMem) |
| Get memory information. More...
|
|
void | EnableConsole () |
| Enable console. More...
|
|
void | DisableConsole () |
| Disable console. More...
|
|
void * | AllocSharedMemory (size_t size) |
| Allocate memory from shared memory. More...
|
|
void | FreeSharedMemory (void *addr) |
| Free memory from shared memory. More...
|
|
This is the interface for MP (Multi-Processor).
◆ begin()
int MPClass::begin |
( |
int |
subid | ) |
|
Start communication with the other processor.
- Parameters
-
[in] | subid | - SubCore number(1~5) launched from MainCore. If core is SubCore, call without this argument. |
- Returns
- error code. It returns minus value on failure.
- Return values
-
-22(-EINVAL) | Invalid argument |
-2(-ENOENT) | No such SubCore program |
-116(-ETIMEDOUT) | No response of boot completion from SubCore |
MainCore boots the specified SubCore. On the other hand, the launched SubCore notifies MainCore to boot completion by calling this API.
◆ end()
int MPClass::end |
( |
int |
subid | ) |
|
End communication with the other processor.
- Parameters
-
[in] | subid | - SubCore number(1~5) finalized from MainCore. If core is SubCore, this API does nothing. |
- Returns
- error code. It returns minus value on failure.
- Return values
-
-22(-EINVAL) | Invalid argument |
-19(-ENODEV) | No such SubCore program |
MainCore finalizes the specified SubCore.
◆ Send() [1/2]
int MPClass::Send |
( |
int8_t |
msgid, |
|
|
uint32_t |
msgdata, |
|
|
int |
subid |
|
) |
| |
Send any 32bit-data to the other processor.
- Parameters
-
[in] | msgid | - user-defined message ID (0~127) It must be zero or positive value. |
[in] | msgdata | - user-defined message data (32bit) |
[in] | subid | - SubCore number(1~5) to send any message. If core is SubCore, send to MainCore by default. |
- Returns
- error code. It returns minus value on failure.
- Return values
-
-22(-EINVAL) | Invalid argument |
-19(-ENODEV) | No such SubCore program |
◆ Recv() [1/2]
int MPClass::Recv |
( |
int8_t * |
msgid, |
|
|
uint32_t * |
msgdata, |
|
|
int |
subid |
|
) |
| |
Receive any 32bit-data from the other processor.
- Parameters
-
[out] | msgid | - pointer to user-defined message ID |
[out] | msgdata | - pointer to user-defined message data (32bit) |
[in] | subid | - SubCore number(1~5) to receive any message. If core is SubCore, receive from MainCore by default. |
- Returns
- msgid or error code. It returns minus value on failure.
- Return values
-
-22(-EINVAL) | Invalid argument |
-19(-ENODEV) | No such SubCore program |
-116(-ETIMEDOUT) | Timeout to receive from other core |
◆ Send() [2/2]
int MPClass::Send |
( |
int8_t |
msgid, |
|
|
void * |
msgaddr, |
|
|
int |
subid |
|
) |
| |
Send the address of any message to the other processor.
- Parameters
-
[in] | msgid | - user-defined message ID (0~127) It must be zero or positive value. |
[in] | msgaddr | - pointer to user-defined message address |
[in] | subid | - SubCore number(1~5) to send any message. If core is SubCore, send to MainCore by default. |
- Returns
- error code. It returns minus value on failure.
- Return values
-
-22(-EINVAL) | Invalid argument |
-19(-ENODEV) | No such SubCore program |
◆ Recv() [2/2]
int MPClass::Recv |
( |
int8_t * |
msgid, |
|
|
void * |
msgaddr, |
|
|
int |
subid |
|
) |
| |
Receive the address of any message from the other processor.
- Parameters
-
[out] | msgid | - pointer to user-defined message ID |
[out] | msgaddr | - pointer to user-defined message address |
[in] | subid | - SubCore number(1~5) to receive any message. If core is SubCore, receive from MainCore by default. |
- Returns
- msgid or error code. It returns minus value on failure.
- Return values
-
-22(-EINVAL) | Invalid argument |
-19(-ENODEV) | No such SubCore program |
-116(-ETIMEDOUT) | Timeout to receive from other core |
◆ SendWaitComplete()
int MPClass::SendWaitComplete |
( |
int |
subid | ) |
|
Wait for the object to be sent.
- Parameters
-
[in] | subid | - SubCore number(1~5) to send any message. If core is SubCore, send to MainCore by default. |
- Returns
- error code. It returns minus value on failure.
- Return values
-
-22(-EINVAL) | Invalid argument |
-19(-ENODEV) | No such SubCore program |
-116(-ETIMEDOUT) | Timeout to receive from other core |
Please call after SendObject().
◆ RecvTimeout()
void MPClass::RecvTimeout |
( |
uint32_t |
timeout | ) |
|
Set timeout of receiver.
- Parameters
-
[in] | timeout | - waiting time [msec] for reception. If MP_RECV_BLOCKING is specified, wait forever to receive. If MP_RECV_POLLING is specified, polling the received data without blocking. |
◆ GetRecvTimeout()
uint32_t MPClass::GetRecvTimeout |
( |
| ) |
|
Get timeout of receiver.
- Returns
- timeout value
◆ Virt2Phys()
uint32_t MPClass::Virt2Phys |
( |
void * |
virt | ) |
|
Convert virtual address to physical address.
- Parameters
-
[in] | virt | - virtual address |
- Returns
- physical address
◆ GetMemoryInfo()
void MPClass::GetMemoryInfo |
( |
int & |
usedMem, |
|
|
int & |
freeMem, |
|
|
int & |
largestFreeMem |
|
) |
| |
Get memory information.
- Parameters
-
[out] | usedMem | - Total size of used memory [byte] |
[out] | freeMem | - Total size of free memory [byte] |
[out] | largestFreeMem | - Size of the largest continuous free memory [byte] |
◆ EnableConsole()
void MPClass::EnableConsole |
( |
| ) |
|
Enable console.
This core uses console
◆ DisableConsole()
void MPClass::DisableConsole |
( |
| ) |
|
Disable console.
This core does not use console
◆ AllocSharedMemory()
void * MPClass::AllocSharedMemory |
( |
size_t |
size | ) |
|
Allocate memory from shared memory.
- Parameters
-
[in] | size | - size. This is align up to 128KByte. |
- Returns
- memory allocated physical address If it fails to allocate memory, returns NULL.
◆ FreeSharedMemory()
void MPClass::FreeSharedMemory |
( |
void * |
addr | ) |
|
Free memory from shared memory.
- Parameters
-
The documentation for this class was generated from the following file: