imx6x muliticore

Document created by Joan Xie Employee on Dec 30, 2016
Version 1Show Document
  • View in full screen mode

i.MX 6 SoloX MCC

  • MCC is a library for lightweight communication between cores
  • Configured at compile time (mcc_config.h)
  • Current version (2.0) is not backward compatible
  • MCC works with shared memory area
  • Communication is performed through ‘send’ and ‘receive’ functions

Shared memory Cores communicate through shared memory


Core structures of the MCC  MCC_ENDPOINT

core

  • Identifies a processor core, A9 is 0 and M4 is 1.

node

  • In Linux, each process using MCC has its own node number. MQX has only one node number.

port

  • Any number of ports per node is allowed.
  • Value MCC_RESERVED_PORT_NUMBER is not allowed.

The number of endpoints in system is defined during compile time by macro MCC_ATTR_MAX_RECEIVE_ENDPOINTS.

 

MCC_BOOKEEPING_STRUCT Endpoint table I.

 

MCC API  Functions

  • Standard API

−int mcc_initialize(MCC_NODE);

−int mcc_destroy(MCC_NODE);

−int mcc_create_endpoint(MCC_ENDPOINT*, MCC_PORT);

−int mcc_destroy_endpoint(MCC_ENDPOINT*);

−int mcc_send(MCC_ENDPOINT*, MCC_ENDPOINT*, void*, MCC_MEM_SIZE, unsigned int);

−int mcc_recv(MCC_ENDPOINT*, MCC_ENDPOINT*, void*, MCC_MEM_SIZE, MCC_MEM_SIZE*, unsigned int);

−int mcc_msgs_available(MCC_ENDPOINT*, unsigned int*);

−int mcc_get_info(MCC_NODE, MCC_INFO_STRUCT*);

  • MCC_SEND_RECV_NOCOPY_API_ENABLED

−int mcc_get_buffer(void**, MCC_MEM_SIZE*, unsigned int);

−int mcc_send_nocopy(MCC_ENDPOINT*, MCC_ENDPOINT*, void*, MCC_MEM_SIZE);

−int mcc_recv_nocopy(MCC_ENDPOINT*, MCC_ENDPOINT*, void**, MCC_MEM_SIZE*, unsigned int);

−int mcc_free_buffer(void*);

1 person found this helpful

Attachments

    Outcomes