element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
RoadTests & Reviews
  • Products
  • More
RoadTests & Reviews
Review Blogs Exploring another RSL10-SENSE Board Example
  • Blogs
  • RoadTest Forum
  • Documents
  • RoadTests
  • Reviews
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join RoadTests & Reviews to participate - click to join for free!
  • Share
  • More
  • Cancel
  • Author Author: BigG
  • Date Created: 10 Nov 2019 4:49 PM Date Created
  • Views 2675 views
  • Likes 7 likes
  • Comments 10 comments
Related
Recommended
  • rsl10-sense-db-gevk
  • rsl10-sense-gevk

Exploring another RSL10-SENSE Board Example

BigG
BigG
10 Nov 2019

  • 1.0     Introduction
  • 2.0    The "On−board Sensor Tests" Example
    • 2.1     Loading project into IDE
    • 2.2     Flashing the RSL10-SENSE board
    • 2.3     Executing the project
    • 2.3     Reviewing the project configuration settings
      • 2.3.1     sense_production_tests.rteconfig
      • 2.3.2     The “RTE” folder
  • 3.0    Experimentation
    • 3.1    Looking at the ISO15963 Tag (via N24RF64 EEPROM)
    • 3.2    Looking at the DMIC

 

 

1.0     Introduction

 

Following my recent RSL10-SENSE-GEVK road test, I got myself a J-Link Lite CortexM debugger and so I decided to create a blog documenting my “noob” experiences as I dive into the deep end and explore some of the other examples available in the RSL10-SENSE SDK.


I will start by unpacking the other example mentioned in the User Guide (EVBUM2614), which is On−board Sensor Tests. This example enables microphone functionality and returns sensors data into the Eclipse, or Segger J-Link RTT Viewer, console.

 

I then had a quick look at the other examples provided in the CMSIS Pack and noticed that they appear to be subsets of this example, as in, they would only use one sensor type etc. So I'm not reviewing other examples here. As such, I will tweak various bits of code and see what happens. You will see in the demo video below, I started by delaying the LED colour changes for better visuals on video (except that I forgot my desktop lamp would mask the blue light). Anyhow...

 

So, that sort of thing.

 

 

2.0    The "On−board Sensor Tests" Example

 

2.1     Loading project into IDE

 

The procedure is fairly standardised, so we follow instructions as per user guide, starting with selecting our example via the CMSIS Packs perspective.

 

image

 

Then, as before, we right-click on mouse and copy the project into our workspace.

 

image

 

 

Then, once the project is loaded in the Project Explorer folder we can choose our build configuration. This time we use the DEBUG option.

 

image

 

 

Once the build is done, the code is ready to be flashed to the board.

 

But before we do that, I found that the Readme.html file included in the project is essential reading. For a start, it provides a nice overview of what this example does.

 

image

 

2.2     Flashing the RSL10-SENSE board

 

I soldered a 10-pin header onto my RSL10−SENSE−GEVK board to allow me to use the Segger J-Link Lite CortexM debugger.

 

To flash this board, we follow the User Manual instructions:

 

[1] Connect the J-Link Debugger SWD ribbon cable to the board as shown in the picture.

 

image

 

[2] Make sure the CR2032 battery is inserted into the board –  alternatively, you can power using 3V3, or less, via the pinout (but then make sure to remove the battery beforehand), as shown here. Powering the board is a mandatory step as it creates the voltage reference for SWD logic signals. In my opinion, when developing code, it is better to power without battery.

 

 

 

image

 

[3] Go to IDE's top menu and select Run → Debug Configurations...

 

image

 

[4] We can now click the "Debug" button.

 

This will usually trigger a dialog popup asking us to confirm a perspective switch when we click "Yes". If you've run debugger before this request (assuming you did not select the "Remember my decision") will happen after the debugger launched and before the "resume" option comes up.

 

image

 

Launching debugger can sometimes take awhile. You can watch progress on bottom right of screen.

 

image

 

2.3     Executing the project

 

When perspective has changed, you then click on "Resume (F8)" to execute the code on the board.

 

image

 

To view the debugger output we need to launch the terminal console.

 

This is where I found the documentation to be a little confusing. For a start, the project readme.html instructions differs somewhat from the User Guide instructions. Anyhow, I suspect that part of the problem is my lack of experience using the Segger debugger.

 

Here is a video demo capturing my experiences executing this program and running through the various tests.

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

 

2.3     Reviewing the project configuration settings

 

Before I start experimenting with the code, I thought it worthwhile having a look at some of the project configuration settings that are described at the back of the EVBUM2614-D User Guide.

 

2.3.1     sense_production_tests.rteconfig

 

According to the User Guide, the *.rteconfig file lists the software components within the CMSIS pack.


So for this project we have:

 

{gallery:autoplay=false} rteconfig

image

image

 

As you may have noticed, many of the Descriptions given are hyperlinked. So, if we click on one of those links it opens up further documentation.


Let's look at some of those links, starting with the one provided in the User Guide for the Device BDK:

image

 

 

The document is divided into a number of bookmarks or subsections, namely: Modules, Macros, Functions, and Variables. Then, on the left, there are plenty of drill down options available. The items listed on the left are the same as those shown in the Modules section.

 

So, for example, if we clicked on “COMPONENTS”, we get the following:

image

 

Then if we drill down further, into say the I2C Eeprom Library we get this page, which then also has a number of subsections (as shown on the top right), etc.:

image

 

So, the documentation looks pretty good once you get familiar with it.

 

 

However, one thing I found was that the Search box does not seem to work. I tried putting in the term “INMP522” and it returned “No Matches” even though that term was listed on the page I was on.

 

image

 

 

2.3.2     The “RTE” folder

 

The User Guide also mentions that System settings can be configured directly from within the CMSIS pack via the RTE folder. It mentions that “Each example is equipped with basic system

configuration that covers three main categories”. Let's try and make sense of this.

 

First, we know from the User Guide that each system configuration starts with “RTE_”.

image

 

Then, we can use the CMSIS configuration wizard (right click on the header file), to display the configuration table.

 

There are also configuration options found in the Device->RSL10 folder. This key one here is the GPIO configuration:

image

 

The one that does not appear to provide configuration settings options is “RTE_Components.h”

image

 

And that is basically it, regarding what I know about documentation and configuration settings via the IDE.

 

It's time to experiment...

 

 

image

3.0    Experimentation

 

3.1    Looking at the ISO15963 Tag (via N24RF64 EEPROM)

 

The code snippets found within main.c for the N24RF64 EEPROM is as follows:

 

#define EEPROM_I2C_ADDR       (0x50)
#define EEPROM_PAGE_SIZE      (4)

int32_t eeprom_status = -1;
I2CEeprom eeprom;
const uint8_t eeprom_ref[]  = "This is for my Element14 blog";
const uint8_t eeprom_ref_length = sizeof(eeprom_ref);

int main(void)
{

   int32_t retval = 0;

   /** DO R/W test for N24RF64 EEPROM memory. */
   retval = I2CEeprom_Initialize(EEPROM_I2C_ADDR, EEPROM_PAGE_SIZE, &eeprom);
   if (retval == I2C_EEPROM_OK) {
     retval = I2CEeprom_Write(0, (uint8_t*)eeprom_ref, eeprom_ref_length, &eeprom);
     if (retval == I2C_EEPROM_OK) {
       uint8_t eeprom_readback[sizeof(eeprom_ref)];

       retval = I2CEeprom_Read(0, eeprom_readback, eeprom_ref_length, &eeprom);
       if (retval == I2C_EEPROM_OK) {
          if (memcmp(eeprom_ref, eeprom_readback, eeprom_ref_length) == 0) {
             memset(eeprom_readback, 0, eeprom_ref_length);
             I2CEeprom_Write(0, eeprom_readback, eeprom_ref_length, &eeprom);
             eeprom_status = 0;
          }
          else eeprom_status = 4;
       }
       else eeprom_status = 3;
     }
     else eeprom_status = 2;
   }
   else eeprom_status = 1;

   uint32_t timestamp = 0;
   while (1) {
     /* Execute any events that have occurred & refresh Watchdog timer. */
     BDK_Schedule();
     /* Print status information every second */
     if (HAL_TIME_ELAPSED_SINCE(timestamp) >= 1000) {
        timestamp = HAL_Time();
        printf("N24RF64 read back test: %s\r\n\n", eeprom_status == 0 ? COLORIZE("OK", GREEN) : COLORIZE("ERROR", RED));
     }
   }
}


However, because the EEPROM is not formatted for NDEF or NCI Tag, I could read the information when I presented the RSL10-SENSE antenna to my PN7150 NFC controller. This is the output I get:

 

image

 

When reading via a phone app we also get the relevant information as per the PN7150 controller:

image

 

 

As such, if I wanted to read any NFC data, I would need to modify this code. I was thinking that probably the easier method, or at least the method I would start with, would be NDEF and I will be looking at my previous blog for guidance:

Decoding different NDEF message types via NXP's NTAG I2C Plus and an Arduino MKR

 

To start I think I would need to configure the EEPROM correct to match the spec:

 

 

3.2    Looking at the DMIC

 

Let's extract out the code:

 

#define AUDIO_DMIC0_GAIN 0x800
#define AUDIO_DMIC1_GAIN 0x800
#define AUDIO_OD_GAIN 0x800

 
#define AUDIO_CONFIG (OD_AUDIOSLOWCLK | \
 DMIC_AUDIOCLK | \
 DECIMATE_BY_64 | \
 OD_UNDERRUN_PROTECT_ENABLE | \
 OD_DATA_MSB_ALIGNED | \
 DMIC0_DATA_LSB_ALIGNED | \
 DMIC1_DATA_LSB_ALIGNED | \
 OD_DMA_REQ_DISABLE | \
 DMIC0_DMA_REQ_DISABLE | \
 DMIC1_DMA_REQ_DISABLE | \
 OD_INT_GEN_DISABLE | \
 DMIC0_INT_GEN_ENABLE | \
 DMIC1_INT_GEN_DISABLE | \
 OD_DISABLE | \
 DMIC0_ENABLE | \
 DMIC1_DISABLE)

 
int32_t dmic_value = 0;
int32_t dmic_max = 0;
int32_t dmic_min = INT32_MAX;

 
int main(void)
{
 int32_t retval = 0;
 /** Configure DMIC input to test INMP522 microphone. */

 
 /* Configure AUDIOCLK to 2 MHz and AUDIOSLOWCLK to 1 MHz. */
 CLK->DIV_CFG1 &= ~(AUDIOCLK_PRESCALE_64 | AUDIOSLOWCLK_PRESCALE_4);
 CLK->DIV_CFG1 |= AUDIOCLK_PRESCALE_4 | AUDIOSLOWCLK_PRESCALE_2;

 
 /* Configure OD, DMIC0 and DMIC1 */
 Sys_Audio_Set_Config(AUDIO_CONFIG);

 
 Sys_Audio_Set_DMICConfig(DMIC0_DCRM_CUTOFF_20HZ | DMIC1_DCRM_CUTOFF_20HZ |
 DMIC1_DELAY_DISABLE | DMIC0_FALLING_EDGE |
 DMIC1_RISING_EDGE, 0);

 
 Sys_Audio_DMICDIOConfig(DIO_6X_DRIVE | DIO_LPF_DISABLE | DIO_NO_PULL,
 10, 6, DIO_MODE_AUDIOCLK);

 
 /* Configure Gains for DMIC0, DMIC1 and OD */
 AUDIO->DMIC0_GAIN = AUDIO_DMIC0_GAIN;
 NVIC_EnableIRQ(DMIC_OUT_OD_IN_IRQn);

 
 uint32_t timestamp = 0;
 while (1)
 {
 /* Execute any events that have occurred & refresh Watchdog timer. */
 BDK_Schedule();

 
 /* Print status information every second */
 if (HAL_TIME_ELAPSED_SINCE(timestamp) >= 1000)

 
 {
 timestamp = HAL_Time();

 
 printf("INMP522: Use J-Scope to see waveform\r\n");
 printf("INMP522: dmic_min=" COLORIZE("%ld", YELLOW) ", dmic_max=" COLORIZE("%ld", YELLOW) "\r\n", dmic_min, dmic_max);
 }

 
 SYS_WAIT_FOR_INTERRUPT;
 }

 
 return 0;
}

 

 
void DMIC_OUT_OD_IN_IRQHandler(void)
{
 dmic_value = (int32_t)AUDIO->DMIC0_DATA;

 
 if (dmic_max < dmic_value)
 {
 dmic_max = dmic_value;
 }
 else
 {
 if (dmic_min > dmic_value)
 {
 dmic_min = dmic_value;
 }
 }
}

 

When trying to understand the DMIC code, I found the Adafruit learning guide for their I2S mems microphone breakout to be very informative, especially for someone who has never experimented with digital microphones before. Here they mention the Arduino Serial Plotter and show a time series chart which looks pretty similar to the one we get via J-Scope. It also makes mention of a very interesting Arduino library called ArduinoSound. This library provides code for plotting frequency (ftt) and has code for a clap detector and a whistle detector. I certainly plan to experiment here.

 

... And experiment I did.

 

Having digested the Adafruit learning guide, I decided to add in a Sound Pressure Level calculation, this time in dB's, and then I also took these measurements and added in some more logic to determine if a clap or loud knock is detected, which is similar to the Arduino clap detector example found in the ArduinoSound library.

 

To calculate Sound Pressure Level we need to know the amplitude, which can be determined with the minimum and maximum values of a sample of values.

 

If you look at the original code (as shown above) you will notice that there are two variables dmic_min and dmic_max. In the above video you would have seen that these are shown in the Segger RTT Viewer terminal view. I have a screen shot of that view here:

 

image

 

But, I noticed something odd with the max value. It always shows a max value as the maximum value of an INT16 data type and this value never changes. Then another thing I noticed is that the min and max values are never reset during runtime in the code, so it just provides us with a man/max for the period the device is powered on, which is not what we need for determining a dynamic sound pressure level.

 

We can make simple modification though.

 

printf("INMP522: dmic_min=" COLORIZE("%ld", YELLOW) ", dmic_max=" COLORIZE("%ld", YELLOW) "\r\n", dmic_min, dmic_max);
 dmic_min = 0;
 dmic_max = 0;

 

By resetting the values after the print statement we will get a min and max value for every second the printf is updated. I worked out that the sample rate via the interrupt is approximately 30kHz.

 

Anyway, you will notice that I set them at a zero value. The reason for this is that I when using J-Scope to monitor these values we can get spurious values because of the way J-Scope extracts the value at a specified frequency. I managed to capture this in another test I did. We will get back to that test.

image

So, by resetting the min and max we get much better results - so, it appears to me that the spurious values are caused at device power up, for some reason.
image
However, the issue here is that I could not readily normalise all 30,000 values as per the Adafruit code logic. So, I chose a sampling method to capture 128 values per second. Hence every 234 increments in the interrupt routine I update a value and this is rolled through in my cicular array, so that my 128 value buffer is updated approximately every 8ms. Code logic is as follows:

void DMIC_OUT_OD_IN_IRQHandler(void)
{
    dmic_value = (int32_t)AUDIO->DMIC0_DATA;
    if (dmic_max < dmic_value) dmic_max = dmic_value;
    if (dmic_min > dmic_value) dmic_min = dmic_value;

    if (dmic_smplCntr >= DMIC_SAMPLEINT) {
        if (dmic_arrCntr < DMIC_ARRAYSIZE) {
            dmic_array[dmic_arrCntr] = dmic_value;
            dmic_arrCntr++;
            if (dmic_arrCntr == DMIC_ARRAYSIZE) {
                if (!dmicBuffull) dmicBuffull = true;
                dmic_arrCntr = 0;
            }
        }
    }
    else dmic_smplCntr++;

}


Now I can normalise and determine a sample min and max value. Then once we have those values we can calculate the sound pressure level using the formula

SPL_dB = 20.0 x log10(max - min). Note that this is a float or double. For J-Scope I wanted an integer so I mulitply this value by 10 to get better precision. In the code shown you will also notice some logic to handle clap detection and a clap counter. More on that later.

 

        if (dmic_smplCntr >= DMIC_SAMPLEINT) {
            // Calculate Sound Pressure Level...
            if (dmicBuffull) {
                    meanval = 0;
                    for (x = 0; x < DMIC_ARRAYSIZE; x++) {
                         meanval += dmic_array[x];
                    }
                    meanval /= DMIC_ARRAYSIZE;
                    // Normalise the values
                    for (x = 0; x < DMIC_ARRAYSIZE; x++) {
                         dmic_array[x] -= meanval;
                    }
                    // Now determine Min and Max values
                    for (x = 0; x < DMIC_ARRAYSIZE; x++) {
                         if (dmic_smplMax < dmic_array[x]) dmic_smplMax = dmic_array[x];
                         if (dmic_smplMin > dmic_array[x]) dmic_smplMin = dmic_array[x];
                    }
                    if (prevDMICupdated) prev_dB10val = dmic_dB10val;
                    dmic_dB10val = (int16_t)(200.0 * log10((dmic_smplMax-dmic_smplMin)));
                    if (prevDMICupdated) {
                         prev_SPLdelta = dmic_SPLdelta;
                         dmic_SPLdelta = dmic_dB10val - prev_dB10val;
                         if (dmic_SPLdelta > DMIC_CLAPTHRESHOLD) {
                              if (!checkClapDelta) checkClapDelta = true;
                              else checkClapDelta = false;
                         }
                         else {
                              if (checkClapDelta) {
                                   checkClapDelta = false;
                                   if ((prev_SPLdelta - dmic_SPLdelta) > prev_SPLdelta) clapCounter++;
                              }
                         }
                    }
                    // reset the values
                    dmic_smplMax = 0;
                    dmic_smplMin = INT32_MAX;
            }

             dmic_smplCntr = 0;
        }

 

I created another video capturing the output from the Sound Pressure Level measurements. Note that this video is via my phone as camera, as the laptop struggles to video capture and use J-Scope sampling at 10us at the same time:

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

Then I create another video to shows the clap detection in action:

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

Finally, I created a music test video to see what my all my parameters we doing using J-Scope. It was here that I spotted some anomolies with using this technique (as shown in that chart for the min and max values). But anyhow, the great thing with J-Scope is that you can export the data. I have created some charts from this data.

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

 

{gallery:autoplay=false} J-Scope

image

image

image

image

 

So, hopefully you agree, from this audio analytics that there is plenty of scope for further experimentation.

 

To be continued...

 

  • Sign in to reply

Top Comments

  • three-phase
    three-phase over 6 years ago +2
    Good start - good luck with the rest of the experiments and learning. Kind regards.
  • newbie101
    newbie101 over 5 years ago +1
    Great Road Test! I am just learning about the RSL10-Sense and this article was very helpful. I hope you keep experimenting and sharing your work. I was wondering if the RSL10 and microphone had an easy…
  • BigG
    BigG over 5 years ago in reply to newbie101 +1
    Thanks for the nice comment. Yes, I was planning to try out FFT at some stage. It was something I was thinking about doing in the new year.
  • vilaksh01
    vilaksh01 over 5 years ago in reply to BigG

    Could you please help by making a tutorial for Rsl10 fft?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • BigG
    BigG over 5 years ago in reply to newbie101

    Thanks for the nice comment.

     

    Yes, I was planning to try out FFT at some stage. It was something I was thinking about doing in the new year.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • newbie101
    newbie101 over 5 years ago

    Great Road Test!

    I am just learning about the RSL10-Sense and this article was very helpful. I hope you keep experimenting and sharing your work.

    I was wondering if the RSL10 and microphone had an easy to use FFT like the Arduino library. I would like to analyze a bandpass between 700 Hz to 1400 Hz and measure a power output average over a 5 second interval. This could be used to detect average noise in an environment and the create a task. Any guidance would be appreciated!

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • stevesmythe
    stevesmythe over 6 years ago in reply to BigG

    This might help.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • BigG
    BigG over 6 years ago in reply to stevesmythe

    I've done a bit of digging and found a file "JLinkDevices.xml" listed in the ON_Semiconductor/PACK/ONSemiconductor/RSL10\3.1.575\configuration folder in my Users directory.

     

    This file looks to have the vital information needed to create an openOCD config file.

     

    <DataBase>  
      <Device>
        <ChipInfo Vendor="ON Semiconductor" Name="RSL10" Core="JLINK_CORE_CORTEX_M3_R2P1" WorkRAMAddr="0x20000000" WorkRAMSize="0x6000" JLinkScriptFile="Devices/ONSemiconductor/RSL10/ONSemiconductor_RSL10.JLinkScript"/>
        <FlashBankInfo Name="Main Flash" BaseAddr="0x00100000" MaxSize="0x5F000" Loader="Devices/ONSemiconductor/RSL10/ONSemiconductor_RSL10_Main_Flash.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
        <FlashBankInfo Name="NVR Flash"  BaseAddr="0x00080000" MaxSize="0x1800"  Loader="Devices/ONSemiconductor/RSL10/ONSemiconductor_RSL10_NVR_Flash.elf"  LoaderType="FLASH_ALGO_TYPE_OPEN" />
      </Device>
    </DataBase>

     

    I then remembered that Cypress ModusToolbox uses OpenOCD so searching on my computer I found a config file (shown below).

     

    # CYW20819A1 kit
    
    adapter_khz 10000
    
    # default adapter
    source [find interface/ftdi/olimex-arm-usb-tiny-h.cfg]
    source [find interface/ftdi/olimex-arm-jtag-swd.cfg]
    
    set CHIPNAME CYW20819A1
    source [find target/swj-dp.tcl]
    
    if { [info exists CHIPNAME] } {
        set  _CHIPNAME $CHIPNAME
    } else {
        set  _CHIPNAME CYW20819A1
    }
    
    # Main CPU DAP
    if { [info exists DAP_TAPID] } {
        set _DAP_TAPID $DAP_TAPID
    } else {
        set _DAP_TAPID 0x2ba01477
    }
    
    global TARGET
    set TARGET $_CHIPNAME.cpu
    swj_newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf
    dap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu
    
    # Cortex M4 with FPU
    target create $TARGET cortex_m -endian little -dap $_CHIPNAME.dap
    
    cortex_m reset_config sysresetreq
    
    gdb_breakpoint_override hard

     

    So somehow I just need to transpose the RSL10 info into a config file similar to this one and then include the file reference in the Eclipse Debugger config options. Not sure exactly the detail though and if there is anything else needed.

     

    Any ideas / suggestions...

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube