SAMA7D65-Curiosity – Writing MPLAB® Harmony v3 Application and at91bootstrap to NAND Flash Memory Using SAM-BA® ISP

Last modified by Microchip on 2024/12/11 15:57

Introduction

In this training topic, you will write two binary images, harmony.bin (an MPLAB® Harmony v3 Software Framework Application) and boot.bin (second-stage bootloader, at91bootstrap) generated with header, to NAND Flash memory on the SAMA7D65-Curioisty Kit using the SAM-BA® In-System Programmer (ISP). Once the images are written, and upon reset, the SAMA7D65 will boot and run the application.

For this exercise, you will write the binaries that were created in the training topics and from the sample application:

Prerequisites

The following are prerequisites to complete this training:

​This training topic was developed with SAM-BA ISP v3.8.1.

Back to top

Hardware

For this training, you will use the SAMA7D65-Curiosity Kit.

SAMA7D65-Curiosity Kit

Set up the SAMA7D65-Curiosity as listed below to the host computer running the SAM-BA host application.

Jumpers

SD Memory Cards

  • Ensure no SD memory cards are plugged into SD card (J10) connector.

Power

Console Serial Communications

SAM-BA Host to Monitor Serial Communications

​Be certain that the SAM-BA host application has been added to the path.

​Be sure to observe RomBOOT on the console. Otherwise, the SAM-BA host application cannot talk to the monitor on the target.

​For more information on SAM-BA host applets, see the "SAM-BA ISP - Applets" page.

Back to top

NAND Flash Memory

The SAMA7D65-Curiosity has a 4 Gbit SLC NAND Flash memory (U8) (macronix MX30LF4G28AD) that can be used for booting the system.

The at91bootstrap (boot.bin) binary will be written to location 0x0 to 0x0003FFFF. The MPLAB Harmony v3 Software Framework application (harmony.bin) binary will be written to location 0x00040000 to 0x000FFFFF.

NAND Flash Memory Map

Back to top

Setup SAM-BA Host to Monitor Communications

In this section, you will establish SAM-BA host application communications with the target’s (SAMA7D65-Curiosity) SAM-BA monitor. Then you will use the SAM-BA host applet (nandflash) to erase and then write the boot.bin (at91bootstrap) and harmony.bin (MPLAB Harmony v3 Software Framework application) binary images to NAND Flash memory.

To communicate with the SAM-BA monitor on the target, you must have installed the SAM-BA host on a host computer and connect a Type-C USB cable to the USB-A port (J3) on the SAMA7D65-Curiosity.

Back to Top


Ensure there is no SD memory card inserted in slot J10.

Back to Top


Open the jumpers NAND BOOT (J36) and QSPI BOOT (J39).

This will disable booting from the onboard memories (NAND and NOR (QSPI) Flash memory).

Back to Top


Press START (SW3) and then press the RESET (SW4) push button.

Back to Top


Connect the NAND BOOT (J36)

The SAMA7D65-Curiosity will boot to the SAM-BA monitor and start communications with the SAM-BA host application.

If you have the Console Serial Communications established, you can observe ROMBoot on the Console (terminal emulator) indicating the SAM-BA monitor is running.

Back to top

Erase NAND Flash Memory

In this section, you will erase the contents of the NAND Flash Memory. This is a necessary step before writing data to NAND Flash memory.

​For more information on the SAM-BA applet nandflash, see the "SAM-BA ISP - Applets: Program External NAND Flash Memory" page.

​Ensure that no other bootable NVMs on the SAMA7D65-Curiosity contain a bootable image. Ensure there is no SD memory card plugged into J10 and no bootable image in NOR (QSPI) Flash (U9). For information on the default boot sequence of the SAMA7D65, see Section 21, "Boot Strategies" in the SAMA7D65 datasheet.

Back to Top

Erase the contents of the NAND Flash memory using the following SAM-BA host applet command:

$ sam-ba -p serial -b sama7d65-curiosity -a nandflash:::0xc2605007 -c erase

SAM-BA: nandflash erase beginning

SAM-BA: nandflash erase ending

Console: nandflash erase

NAND Flash boot procedures use Programmable Multi-bit Error Correcting Code (PMECC) to detect and correct errors during NAND Flash read operations. Note the PMECC value (listed as NAND header value above) for the SAMA7D65-Curiosity is 0xc2605007. For more information, refer to Section 21.1.9, "Detailed Memory Boot Procedures" and Section 23.18, "PMECC Controller Functional Description" in the SAMA7D65 datasheet.

Back to top

Generate boot.bin with header

Ensure you have build at91bootstrap as mentioned in SAMA7D65-Curiosity – Configure and Build at91bootstrap to Load an MPLAB® Harmony v3 Application from NAND Flash Memory 

In this section, you will generate at91bootstrap binary image boot.bin with header from below commands,

Open command prompt and change directory to the location of boot.bin:

<project_directory>\at91bootstrap\build\binaries\boot.bin

Back to Top


Now generate a bootable sama7d65 bootstrap image file named 'boot_img.bin' from a bootstrap binary file named 'boot.bin with SAM-BA

$ sam-ba -u gen_image:sama7d65:boot.bin:::

Back to Top


To display the data stored in the header of a bootstrap image file 'boot_img.bin'.

$ sam-ba -u parse_image:boot_img.bin

Back to Top

Rename and write boot.bin to NAND Flash Memory

In this section, you will rename and write the at91bootstrap binary image, boot.bin, to NAND Flash memory.

Change the directory to the location of boot_img.bin:

<project_directory>\at91bootstrap\build\binaries\boot_img.bin

Back to Top


Rename boot_img.bin to boot.bin

Back to Top


Write boot.bin to NAND Flash memory using the following SAM-BA applet command:

$ sam-ba -p serial -b sama7d65-curiosity -a nandflash:::0xc2605007 -c write:boot.bin

​The writeboot command modifies the relevant unused Arm® exception vector to store the size of the bootstrap binary, as required by the ROM Boot code during the boot process.

SAM-BA: nandflash writeboot

Console: nandflash writeboot

Back to Top

Write harmony.bin to NAND Flash Memory

In this section, you will write the MPLAB Harmony v3 Software Framework application binary image, harmony.bin, to NAND Flash memory.

Change the directory to the location of harmony.bin:

C:\Users\<user>\HarmonyProjects\csp_apps_sama7d65\apps\pio\pio_led_on_off_interrupt\sam_a7d65_curiosity.X\dist\default\production

Back to Top


Write harmony.bin to NAND Flash memory using the following sam-ba applet command:

$ sam-ba -p serial -b sama7d65-curiosity -a nandflash:::0xc2605007 -c write:harmony.bin:0x40000

The write command is write:<filename>:[<addr>] where <addr> is the Flash Offset for Demo App value in the at91bootstrap configuration (Kconfig). The value 0x40000 you took note of in the SAM9X60-EK – Configure and Build at91bootstrap to Load an MPLAB® Harmony v3 Application from NAND Flash Memory training page.

Linker for Production: ddram

SAM-BA: nandflash write

Console: nandflash write

Back to Top

Run MPLAB Harmony v3 Application on the Target

To run the application, press the RESET (SW4) push button. Observe the RGB LED (D11) flashes blue. You can also observe the at91bootstrap reading from the NAND Flash memory on the console.

Console: nand flash booting

Back to top

Summary

In this training, you wrote the binary files harmony.bin and boot.bin to NAND Flash memory on the SAMA7D65-Curiosity and ran the application on the target.

Back to top

Learn More

Back to top