Skip to content
Browse files

arm: Musca B1: Migrate to eFlash

Musca B1 has 2 x 2MB embedded flash memories (eFlash). The flash
memories are connected to the AHB Master Expansion “Code Interface”.

Signed-off-by: Karl Zhang <>
  • Loading branch information...
karl-zh authored and galak committed Jun 11, 2019
1 parent 3a6b46e commit 26b1e07a99ff543321a7c314352b3b54d7e63245
@@ -256,7 +256,7 @@ The ARM Musca B1 test chip implements a Serial Configuration Control (SCC)
register. The purpose of this register is to allow individual control of
clocks, reset-signals and interrupts to peripherals, and pin-muxing.

QSPI boot memory
Boot memory
Normal Musca-B1 test chip boot operation is from 4MB eFlash by default, and
it offers the fastest boot method.
@@ -348,38 +348,28 @@ Follow the build steps for AN521 target while replacing the platform with
``-DTARGET_PLATFORM=MUSCA_B1`` and compiler (if required) with ``-DCOMPILER=GNUARM``

Copy over tfm as a library to the Zephyr project source and create a shortcut
for the secure veneers.

.. code-block:: bash
cp -r install/ $ZEPHYR_PROJECT/src/ext
cp $ZEPHYR_PROJECT/src/ext/install/export/tfm/veneers/s_veneers.o $ZEPHYR_PROJECT/src/ext
Build the Zephyr app in the usual way.
for the secure veneers and necessary header files. All files are in the install
folder after TF-M built.

Uploading an application to V2M Musca B1

Applications must be converted to Intel's hex format before being flashed to a
V2M Musca B1. An optional bootloader can be prepended to the image.
The QSPI flash base address alias is 0x0.

The QSPI flash base address alias is 0x0, and the eFlash base address alias is
The image offset is calculated by adding the flash offset to the
bootloader partition size.

A third-party tool (srecord) is used to generate the Intel formatted hex image. For more information
refer to the `Srecord Manual`_.
A third-party tool (srecord) is used to generate the Intel formatted hex image.
For more information refer to the `Srecord Manual`_.

.. code-block:: bash
srec_cat $BIN_BOOLOADER -Binary -offset $QSPI_FLASH_OFFSET $BIN_SNS -Binary -offset $IMAGE_OFFSET -o $HEX_FLASHABLE -Intel
# For a 64K bootloader IMAGE_OFFSET = $QSPI_FLASH_OFFSET + 0x10000
srec_cat $BIN_BOOLOADER -Binary -offset 0x0 $BIN_SNS -Binary -offset 0x10000 -o $HEX_FLASHABLE -Intel
srec_cat $BIN_BOOLOADER -Binary -offset $FLASH_OFFSET $BIN_SNS -Binary -offset $IMAGE_OFFSET -o $HEX_FLASHABLE -Intel
# For a 256K bootloader IMAGE_OFFSET = $QSPI_FLASH_OFFSET + 0x40000
srec_cat $BIN_BOOLOADER -Binary -offset 0x0 $BIN_SNS -Binary -offset 0x40000 -o $HEX_FLASHABLE -Intel
# For a 128K bootloader IMAGE_OFFSET = $FLASH_OFFSET + 0x20000
srec_cat $BIN_BOOLOADER -Binary -offset 0xA000000 $BIN_SNS -Binary -offset 0xA020000 -o $HEX_FLASHABLE -Intel
Connect the V2M Musca B1 to your host computer using the USB port. You should
see a USB connection exposing a Mass Storage (MUSCA_B) and a USB Serial Port.
@@ -39,9 +39,9 @@

flash0: flash@10000000 {
/* QSPI flash */
reg = <0x10000000 0x2000000>;
flash0: flash@1a000000 {
/* Embedded flash */
reg = <0x1a000000 0x200000>;

sram0: memory@30000000 {
@@ -39,9 +39,9 @@

flash0: flash@30400 {
/* QSPI flash */
reg = <0x00030400 0x1fcfc00>;
flash0: flash@0a060400 {
/* Embedded flash */
reg = <0x0a060400 0x19fc00>;

sram0: memory@20070000 {
@@ -7,4 +7,4 @@ toolchain:
- gnuarmemb
- xtools
ram: 64
flash: 32575
flash: 1663

0 comments on commit 26b1e07

Please sign in to comment.
You can’t perform that action at this time.