Analog.com Analog Dialogue Wiki English 简体中文 日本語
EngineerZone
EngineerZone
  • Log In
  • Site
  • Search
  • User
  • Forums

    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

    Maximize the Benefits of High Bandwidth Current Sense Amplifiers for Space Constrained Applications

    Recent Discussions

    • Pluto is not receiving data
    • ADALM-pluto sampling frequency
    • ADALM PLUTO SDR
    • Bad FIT image format and MSD mounting errors in firmware built for Sidekiq Z2
    • set the sample rate to 30MHz or the maximum that usb2.0 allows

    Places

    • ADI Education Home
    • ADI Webinars
    • StudentZone (Analog Dialogue)
    • Video Annex
    • Virtual Classroom

    Latest Webinars

    • Maximize the Benefits of High Bandwidth Current Sense Amplifiers for Space Constrained Applications
    • Design Efficient Power Solutions for Battery-powered Applications
    • Shunt-based Energy Metering in High-Power Applications
    • Isolating GigaSpeed: Unlocking Data Integrity for USB and HDMI Communication
    • Extend Battery Life and Maximize Performance - Let Supervisors Do The Work
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quizzes AQQ244 about Wafer Processing Yield puzzle
    View All

    Places

    • Community Help
    • Logic Lounge
    • The Weekly Brew

    Resources

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

    Highlighted Blogs

    Join the Analog Devices IEEE Radar Challenge

     

    Seeing is Believing but Smart Surveillance Cameras Let You Speak and Listen Too!

    Latest Blogs

    • We are Celebrating a Milestone on EngineerZone: Meet Our 100K Member!
    • How to Raise the Resolution of an Optical Motor Encoder without Changing the Disk
    • The Changing Nature of Logistics and Retail Automation
    • Variable Speed Drive 101
    • How to Optimize Voltage Regulators for Powering an Audio Amplifier
    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
SigmaDSP Processors & SigmaStudio Dev. Tool
  • Processors and DSP
SigmaDSP Processors & SigmaStudio Dev. Tool
Documents Booting a SigmaDSP from a microcontroller with no C compiler
  • Forums
  • Members
  • Tags
  • More
  • Cancel
  • Documents
  • +AD193x: FAQ
  • +ADAU1401AEBZ: FAQ
  • +ADAU144x: FAQ
  • +ADAU1452: FAQ
  • +ADAU145x: FAQ
  • +ADAU1701: FAQ
  • +ADAU1701MINIZ- FAQ
  • +ADAU1761: FAQ
  • +ADAU1772: FAQ
  • +ADI: FAQ
  • +AN-951: FAQ
  • +bitwise logic: FAQ
  • +Compressor Table Format: FAQ
  • +Creating a simple balance crossfade control: FAQ
  • +Creating constant-dB envelope decay using an existing linear decay algorithm: FAQ
  • +Crossover with more than 3 bands: FAQ
  • +E2PROM: FAQ
  • +EEPROM: FAQ
  • +EVAL DAU144XEBZ: FAQ
  • +EVAL-ADAU1781Z: FAQ
  • +Excluding Cells from the Exported System Files: FAQ
  • +GPIO button: FAQ
  • +GPIOs or Aux ADCs: FAQ
  • +How do I execute a software safeload write?: FAQ
  • +IIR coefficient filter: FAQ
  • +IIR filter: FAQ
  • +Peak Full Range Compressor: FAQ
  • +Preserving "Ear-candy": FAQ
  • +Push Button Volume: FAQ
  • +self-boot EEPROM image: FAQ
  • +Sigma300 Family Products: FAQ
  • -SigmaDSP: FAQ
    • Booting a SigmaDSP from a microcontroller with no C compiler
    • Calculating Filter Coefficients to Store in a Microcontroller
    • Can I program multiple SigmaDSPs in parallel using one USBi?
    • Can I use SigmaDSP to decode MP3/WAV/AAC?
    • Can SigmaDSP do frequency-domain processing like FFT or pitch shift?
    • Creating a delay after startup
    • FAQ: Can I write C or assembly code for SigmaDSP in SigmaStudio?
    • FAQ: Can we bundle SigmaStudio with our product design?
    • FAQ: Developing custom algorithms and/or using 3rd party algorithms
    • FAQ: How can I estimate MIPS/Memory resource on SigmaDSP?
    • FAQ: What types of capacitors are good to use in the analog audio signal path?
    • FAQ:  Which SigmaDSP ICs support selfbooting from an EEPROM?
    • FAQ:  Why isn't a software/documentation CD included with my evaluation board?
    • How do I create the microcontroller code to interface to my SigmaDSP?
    • How do I start a timer after power-on, or when the input signal goes away?
    • How many instructions can be executed per sample in SigmaDSP?
    • Memory requirements for booting a SigmaDSP with a microcontroller
    • Monitoring average and instantaneous signal levels
    • Playing audio samples in SigmaDSP
    • SigmaDSP PCB Layout Best Practices
    • SigmaDSP Products and Evaluation Boards - ROHS and REACH Compliance
    • SigmaStudio 3.4 Released
    • Updating SigmaDSP Parameter with a Microcontroller
    • Using two SigmaDSP evaluation boards simultaneously with one USBi board
    • Welcome to the SIGMADSP Processors and SIGMASTUDIO Development tool community
    • What are the number formats for SigmaDSP?
    • What is the step size for audio delay in a SigmaDSP?
    • Where can I buy a SigmaDSP Evaluation Board or USBi (EVAL-ADUSB2EBZ)?
    • Which SPI Mode is used by SigmaDSP Devices?
  • +SigmaStudio: FAQ
  • +single precision VS double precision: FAQ
  • +Stimulus-Probe Capability and Limitations: FAQ
  • +Stopwatch to Count Successive Samples: FAQ
  • +Toolbox into the schematic tab: FAQ
  • +USB communications between the PC and SigmaDSP: FAQ
  • +Using Hierarchy Boards to create re-usable code: FAQ

Booting a SigmaDSP from a microcontroller with no C compiler

My microcontroller does not have a C compiler. How do I use a microcontroller to boot my SigmaDSP in assembly?

_________________________________________________________________

In SigmaStudio, a number of things are downloaded to the target hardware when the user clicks the "Link-Compile-Download" button:

  • Program RAM
  • Parameter RAM
  • Non-Modulo Data RAM
  • Hardware Control Registers

That might not sound like much, but for a simple ADAU1781 program like this...

(screenshot of basic ADAU1781 project)

...the data that is downloaded looks like THIS:

(screenshot of the Capture Window in SigmaStudio for the example project download)

These data downloads have to occur in the exact same sequence on your  microcontroller in order to get the SigmaDSP into the same operating  mode as it is when the code is downloaded via SigmaStudio. That's quite a bit of data.

Unfortunately, the data files generated in the project folder by default (hex_program_data.dat, for example) simply contain the program RAM and parameter RAM contents of the project. That will not suffice. You need to get all of the information shown above in order to make your hardware work properly. In other words, you need to emulate the exact write sequence shown in the capture window above.

There is a way to manually copy this information out to raw address + data files by right-clicking one line at a time, as shown here:

(manually exporting raw data)

However, as you can imagine, that's very time-consuming...

Luckily, there's an easier solution!

First, make sure your project is compiled by pressing the Link-Compile-Download button:

(Link-Compile-Download)

Now, click the button to its immediate right, labeled Export System Files:

(Export System Files)

This generates a huge amount of data in the form of C-compatible include files and raw data files, as you have seen. In the case of assembly programming, the C header files are pretty useless. However, the important files for the initialization download are these two files:

(NumBytes and TxBuffer files)

These two files contain all of the data you need to boot your chip. The file TxBuffer contains the I2C address and write data for every address in the download sequence shown above in the Capture Window.

For example, the first two lines of this file are as follows:

0x40, 0xEB,             /* (0) IC 1.Start Pulse */
0x0A,

If you refer to the Capture Window screenshot above, you'll see that the first register write is to address 0x40EB, and the data is 0x0A.

The next two lines in TxBuffer are as follows:

0x40, 0xF6,             /* (1) IC 1.Sound Engine Run */
0x00,

If you refer to the Capture Window screenshot above, you'll see that the second register write is to address 0x40F6, and the data is 0x00.

And so on....

The file NumBytes accompanies TxBuffer in that it shows how many bytes are included in each transaction. For the first two examples I showed above, there are 2 address bytes and 1 data byte. So, as one might expect, the first two lines of the NumBytes file are:

3,
3,

When you get down to the program and parameter RAM downloads, you'll see much larger numbers like:

702,
226,

The main idea is that you can parse these two files and easily create an I2C write function that will download all of the data in order. No C compiler required!

The NumBytes and TxBuffer files for my example project are attached for your reference.

This FAQ was generated from the following discussion: Loading the DSP via assembly language

Attachments:
0336.TxBuffer_IC_1.dat.zip
6644.NumBytes_IC_1.dat.zip
  • i2c
  • spi
  • microcontroller
  • assembly
  • sigmastudio
  • sigmadsp
  • 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
  • 简体中文
  • 日本語
myAnalog

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

Go to myAnalog
Analog Logo
©1995 - 2023 Analog Devices, Inc. All Rights Reserved
沪ICP备09046653号-1
  • Sitemap
  • Legal
  • Privacy & Security
  • Privacy Settings
  • Cookie Settings