Analog.com Analog Dialogue Wiki English 简体中文
EngineerZone
EngineerZone
  • Log In
  • Site
  • Search
  • User
  • Support

    Popular Forums

    • RF and Microwave
    • Power Management
    • Video
    • FPGA Reference Designs
    • Precision ADCs
    • Linux Software Drivers
    • SigmaDSP Processors & SigmaStudio Dev. Tool

    Product Forums

    • A2B
    • Amplifiers
    • Analog Microcontrollers
    • Clock and Timing
    • Data Converters
    • Direct Digital Synthesis (DDS)
    • Energy Monitoring and Metering
    • Interface and Isolation
    • MEMS Inertial Sensors
    • Processors and DSP
    • Switches/Multiplexers
    • Temperature Sensors
    • Voltage References
    View All

    Application Forums

    • Audio
    • Automated Test Equipment (ATE)
    • Condition-Based Monitoring
    • Depth, Perception & Ranging Technologies
    • Embedded Vision Sensing Library
    • Motor Control Hardware Platforms
    • Optical Sensing
    • Precision Technology Signal Chains Library
    • Video
    • Wireless Sensor Networks Reference Library

    Design Center Forums

    • ACE Evaluation Software
    • ADEF System Platforms
    • Design Tools and Calculators
    • FPGA Reference Designs
    • Linux Software Drivers
    • Microcontroller no-OS Drivers
    • Reference Designs
    • Signal Chain Power (SCP)
    • Software Interface Tools
    • System Demonstration Platform (SDP) Support
  • Learn

    Highlighted Webinar

    How ADI is keeping up with security threats in retail, logistics and banking point of sale (POS) systems

    Recent Discussions

    • Csharp bindings for libm2k and calibrateFromContext function
    • ADALM-PLUTO maximum frequency
    • Issue running built programs on Pluto
    • Activity: Simple Op Amps, For ADALM1000 Fig. 1.3 Buffering example
    • ADALM-PLUTO [NETWORK] vs [USB_ETHERNET]

    Places

    • ADI Education Home
    • ADI Education China
    • ADI Education India
    • ADI Education Philippines
    • StudentZone (Analog Dialogue)
    • Virtual Classroom

    Latest Webinars

    • How ADI is keeping up with security threats in retail, logistics and banking point of sale (POS) systems
    • Multidimensional Simulations of Beamformers and other RF Integrated Circuits in Keysight SystemVue
    • Improve Smart Building Energy Efficiency with Industrial Ethernet Controlled Air Conditioning (HVAC) Systems
    • Sustainable Motion Control Solutions for High Performance Servo Drives
    • Audio Design Solutions for Augmented and Virtual Reality (AR/VR) Glasses
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quizzes: AQQ 236 about strange marking on airplane engines
    View All

    Places

    • Community Help
    • Logic Lounge

    Resources

    • EZ Code of Conduct
    • Getting Started Guide
    • ADI: Words Matter
    • Community Help Videos
    View All
  • Blogs

    Highlighted Blogs

    Why You Want to Authenticate Everything

     

    Can LTspice Break Physics?

    Latest Blogs

    • Crawl, Walk, And Run - The Journey To Create The Phaser
    • Hardware Holds The Key To Making Industrial Systems IEC 62443 Compliant
    • Behind the Scenes of DIYRadio Blogs: An Introduction
    • Empowering Surveillance Cameras To Capture A Scene Without Being Heard
    • Mastering The Metrics Makes Specifying Encoders Simpler
    Read All Blogs

    ADI Blogs

    • EZ Spotlight
    • The Engineering Mind
  • Partners

    Electronic Design Services - PartnerZone

    • Boston Engineering
    • Calian, Advanced Technologies
    • Colorado Engineering Inc. (DBA CAES AT&E)
    • Clockworks Signal Processing
    • Epiq Solutions
    • Fidus
    • PalmSens
    • Richardson RFPD
    • Tri-Star Design, Inc.
    • VadaTech
    • Vanteon
    • X-Microwave
    View All
CrossCore Embedded Studio and Add-ins
  • Processors and DSP
  • Software and Development Tools
  • CrossCore Embedded Studio and Add-ins
  • Cancel
CrossCore Embedded Studio and Add-ins
Documents [FAQ] : What is the best way of sharing global data between cores?
  • Blogs
  • Q&A
  • Docs/FAQs
  • Members
  • Tags
  • More
  • Cancel
  • FAQ
  • +a.b silicon into a x.y silicon target: FAQ
  • +accel_xxxx: FAQ
  • +ADC & DAC in audio application: FAQ
  • +Add version of application in loader file: FAQ
  • +Add-in license: FAQ
  • +ADI_SPI_TRANSCEIVER: FAQ
  • +adi_spu_Init() API: FAQ
  • +ADSO-BF609 EZkit: FAQ
  • +ADSP-21364: FAQ
  • +ADSP-214xx: FAQ
  • +ADSP-21569 Ez-kit: FAQ
  • +ADSP-21569: FAQ
  • +ADSP-BF609 EZKIT: FAQ
  • +ADSP-BF609: FAQ
  • +ADSP-BF707: FAQ
  • +ADSP-BF70x: FAQ
  • +ADSP-SC589: FAQ
  • +ADSP-SC58x: FAQ
  • +ADSP-SC598: FAQ
  • +ADSP-SC5xx: FAQ
  • +ADSP21489: FAQ
  • +ADSP215xx: FAQ
  • +alignment pragma: FAQ
  • +ARM CORE: FAQ
  • +ARM to Sharc: FAQ
  • +avoid when a project is getting build: FAQ
  • +BF-609 Evaluation board: FAQ
  • +BF518 Processor: FAQ
  • +BF703: FAQ
  • +BF706 EZ-KIT: FAQ
  • +BF706: FAQ
  • +BF706mini BSP project: FAQ
  • +BF707 SPI: FAQ
  • +C source file: FAQ
  • +C++ code: FAQ
  • +C-code ISRs: FAQ
  • +Callback function: FAQ
  • +Calling Library Functions: FAQ
  • +cc1138: FAQ
  • +CCES: FAQ's
  • +cldp: FAQ
  • +CLKIN: FAQ
  • +Code folding in CCES: FAQ
  • +Configuring the Loader, Linker and Archiver: FAQ
  • +connect to the Blackfin: FAQ
  • +CrossCore Embedded Studio STDIO: FAQ
  • +CROSSCORE: FAQ
  • +Data Member Alignment: FAQ
  • +Device Driver programming: FAQ
  • +Difference between Emulator and Simulator: FAQ
  • +disable prelinker: FAQ
  • +Embedded applications: FAQ
  • +EV-21569-SOM: FAQ
  • +EXTCLK_MODE: FAQ
  • +How to access stereo channels individually in the Audio_Passthrough_I2S example present in GUL BSP?
  • +How to avoid CORE0 and DEBUG: FAQ
  • +How to build a specific code from single source file for a specific core?
  • +How to convert long double into string: FAQ
  • +how to deassert Slave: FAQ
  • +How to do profiling: FAQ
  • +How to protect shared code/ data: FAQ
  • +How to resolve audio distortion issue: FAQ
  • +HW Accelerator and SW libraries: FAQ
  • +Interrupt Vector Table: FAQ
  • +LDF from C code: FAQ
  • +linker map file: FAQ
  • +List of Processors: FAQ
  • +Loader File: FAQ
  • +MCAPI package: FAQ
  • +node-locked license: FAQ
  • +non-blocking peek functions: FAQ
  • Optimization in ARM
  • +Optimizer in C/C++ compiler: FAQ
  • +PART_SPECIFIC_HEADERS: FAQ
  • +path variables: FAQ
  • +peripheral Error: FAQ
  • +PINT modules: FAQ
  • +PM bus: FAQ
  • +Project Explorer tree: FAQ
  • +PWM mode: FAQ
  • +quad SPI mode: FAQ
  • +RTOS for older Blackfin or older SHARC: FAQ
  • +SC-573 EZkit: FAQ
  • +SDRAM: FAQ
  • +SHARC 21469: FAQ
  • +SHARC0: FAQ
  • +SHARC: FAQ
  • -sharing global data between cores: FAQ
    • [FAQ] : What is the best way of sharing global data between cores?
  • +SigmaStudioForSHARC: FAQ
  • +SIMD code: FAQ
  • +SIMD: FAQ
  • +SPI core mode with callback: FAQ
  • +SPI flash: FAQ
  • +SPORT API: FAQ
  • +SPORT: FAQ
  • +SRCU bit: FAQ
  • +SSLDD 2.0 and SSLDD 3.0: FAQ
  • +SSLDD 3.0: FAQ
  • +SSLDD3.0: FAQ
  • +stack overflow: FAQ
  • +Static library & IP protection: FAQ
  • +suppress assembler preprocessor warning: FAQ
  • +system.svc: FAQ
  • +two PINT modules: FAQ
  • +TX and RX DMA Interrupts: FAQ
  • +U-Law and A-Law: FAQ
  • +UART Device Driver: FAQ
  • +UART ISR Callback: FAQ
  • +VisualDSP++: FAQ
  • +Wakeup processor from Hibernate: FAQ
  • +When callback occurs: FAQ
  • +word addressable program: FAQ
  • [FAQ] : Custom debug configurations in CCES
  • [FAQ] : Difference between ADZS-HPUSB and ADZS-USB ICE
  • [FAQ] : Does CCES have any API that can be used to build automation test platform with Python
  • [FAQ] : Does ICE-1000 supported ADSP-CM407F?
  • +[FAQ] : Driver example for Timer windowed watchdog period mode.
  • [FAQ] : Example code for SPORT slave trigger in ADSP-21569 Ezkit
  • [FAQ] : GUL-XP board with EZkit license
  • +[FAQ] : How to access darkmode appearance in CCES?
  • [FAQ] : How to obtain PCB library files for ADI processors
  • [FAQ] : How to pass arguments from command line in CCES runner
  • [FAQ] : How to use Device programmer in EVAL-ADICUP360 board
  • [FAQ] : Interrupt header files along with -char-size-32 switch in Sharc
  • [FAQ] : Is it possible to perform stepping into the code in CCES Runner.
  • [FAQ] : Is there a way to list symbols from library (*.dlb) file?
  • [FAQ] : Is there a way to mangle or remove internal symbols ?
  • [FAQ] : sizeof() built-in function in BF and Sharc processors
  • [FAQ] : Streaming Data input and output in CCES
  • [FAQ] : UART sample driver code for BF706mini
  • [FAQ] : “Peripherals view” in CCES
  • [FAQ]: Difference between Debug and Release configurations
  • [FAQ]: How to use "log10f_simd"
  • +µCOS-III Add-In: FAQ

[FAQ] : What is the best way of sharing global data between cores?

Question:

What is the best way of sharing global data between cores?

Answer:

The recommended way of sharing data between the 3 cores is to use MCAPI - it is officially supported in CCES and we supply documentation and examples to help you get started. Although it is possible to use other methods such as the SHARED_MEMORY method or the SHARC linker's RESOLVE command, these methods are not supported by the ARM tools

If you are determined to avoid MCAPI, then using the RESOLVE() command in your LDF is probably simpler than using SHARED_MEMORY{}. This allows you to create your data structure in (for example) the L2 memory for SHARC core 1 and then link against it when building the executable for SHARC core 2. For example, SHARC core 1 might contain C/C++ code like the following

section ("seg_l2_uncached") volatile int x;

And this variable can be declared as extern for core 2 (the section qualifier does not need to be repeated here):

extern volatile int x;

(Note that 'x' is declared as volatile since it can be changed by multiple programs.)
In the PROCESSOR command of the LDF for the core 2, the symbol can then be resolved to the definition in the DXE for the core 1:

  RESOLVE(x., "../../SharedMem_Core1/Debug/SharedMem_Core1.dxe")

As mentioned earlier, the ARM tools do not support RESOLVE, so will need to determine the address of the data structure and then use this address in your code. For example:

volatile int *x = (int *)0x20083000;

  • Share
  • History
  • More
  • Cancel
Related
Recommended
Social
Quick Links
  • About ADI
  • ADI Signals+
  • Analog Dialogue
  • Careers
  • Contact us
  • Investor Relations
  • News Room
  • Quality & Reliability
  • Sales & Distribution
  • Incubators
Languages
  • English
  • 简体中文
  • 日本語
Newsletter

Interested in the latest news and articles about ADI products, design tools, training and events? Subscribe today!

Sign Up
Analog Logo
©1995 - 2023 Analog Devices, Inc. All Rights Reserved
沪ICP备09046653号-1
  • Sitemap
  • Legal
  • Privacy & Security
  • Privacy Settings
EngineerZone Uses cookies to ensure you get the best experience in our community. For more information on cookies, please read our Privacy & Security Statement.