Post Go back to editing

ADuCM363 flash memory use case

I am using ADuCM363.

By referring to the example code and datasheet provided by your company, the writing and erasing of flash memory were confirmed through IAR.

However, it is stated that the memory can be used from 0x00000 to 0x1FFFF in the Disassembly provided during debugging by IAR.

(From 0x20000 to, it is marked with ----.)

The ADuCM363 datasheet says that it can use up to 256Kbyte, but I would appreciate it if you could tell me how to use it.

  • Hi Yoonsung,

    There are two different models of the ADuCM363. One has 128kB of flash memory and the other one has 256kB of flash.

    Can you please confirm the reference on the package?

    ADuCM363BCPZ128 has 128kB

    ADuCM363BCPZ256 has 256kB

    Kind regards,


  • Can you please confirm as well if you are using the CMSIS pack for the ADuCM363?

  • Hi. Rgrau

    I am using the ADuCM363BCPZ256, the same product as the picture above.

    Kind regards,

  • If you look at the current project options, you are not using the CMSIS pack separately.

  • When CMSIS of Library configuration is allowed among project options, it increases from 0x00000~0x1FFFF to 0x00000~0x3FFFF.

    However, it seems that 256kByte is not available.

  • When the CMSIS option is enabled, the memory state.
    please note.

  • The recommendation currently is to use CMSIS as it is a modern standard from ARM that allows for easier portability of code. When using CMSIS ensure that the CMSIS pack selected is the ADuCM363

    Do I understand correctly that you are trying to program more than 128kB and you are not able to?

    In the options for the project go to Linker and select override default and click on Edit

    There go to Memory Regions and configure IROM1 from 0x00000000 to 0x0003FFFF.

    I haven't created a quick start guide for CMSIS with the ADuCM362 in IAR, but if you need help to start creating a project, please look at User Guide for EVAL-ADuCM360 [Analog Devices Wiki]. Note that instead of selecting ADuCM360 you will need to select ADuCM363 as the device.

  • I want to store sensor data in flash memory rather than 128kB programming download.

    Currently, I can only use up to 64kB, but I want to use 256kB freely.

    1. As you sent, when I set up the project, "ADuCM363 Analog Devices:1" is not recognized in CMSIS-Pack.

    2. The linker changed the area of ​​IROM1, but it is not applied.
    (Executed without applying CMSIS-Pack. Proceed with device selection set to ADuCM360)

    3. User Guide for EVAL-ADuCM360 [Analog Devices Wiki]. I used the CMSIS-Pack manager by referring to the user guide.
    However, I select ADuCM363 to create the example, CMSIS-PACK in the project options is set to ADuCM360.
    (CMSIS-Pack has ADuCM363, but memory capacity is limited to 128kByte.)

    I am attaching a picture of the result of proceeding in the direction you indicated. Thank you for your reference.

  • I understand that you want to store data in the flash during run-time. Is that correct?

    In that case you need to use the Flash Controller, you can refer to the Flash Controller section of the ADuCM363 datasheet.

    The best starting point to write data into the flash is to use the CMSIS Flash example of the ADuCM360. This code can easily be ported to the ADuCM363. This example writes data on an address of the Flash, and following that it reads back the data. If the data has been written correctly the LED it turns on an LED connected to P1.3.

    1. Go to User Guide for EVAL-ADuCM360 [Analog Devices Wiki]
    2. In Step 4 instead of importing the RTD_Demo project, import the Flash Project
    3. Open the options for FlashSign.c and exclude from build 
    4. Similarly, open the options for FlashWrite.c and untick Exclude from build
    5. Now you need to change the device to ADuCM363. Open the CMSIS Manager in IAR and you will see a window like this:
    6. At the bottom-left, click on Device and you will see this:
    7. Click on Change and select ADuCM363 
    8. Click Save on the CMSIS Manager
    9. Open FlashWrite.c and comment line 33: include <ADuCM360.h>
    11. You should be able now to compile and program the part.

    Modifying the main() function of the example you can select in which location of the Flash you want to write your data in.

    As IAR doesn't erase the full Flash by default when reprogramming, I recommend doing a full erase of the Flash with JLink Commander or CM3WSD

    I hope you find this example useful.