SAM4S Xplained


The SAM4S Xplained evaluation kit is a development platform to evaluate the Atmel SAM4S series microcontrollers.

SAM4S Xplained


  • ATSAM4S16C ARM Cortex-M4 Processor
  • 12 MHz crystal oscillator
  • internal 32.768 kHz crystal oscillator
  • IS66WV51216DALL 8 Mb SRAM
  • Micro-AB USB device
  • Micro-AB USB debug interface supporting SEGGER OB and Virtual COM Port and Data
  • One reset and one user pushbutton
  • 2 yellow user LEDs
  • IC pads for external flash chip

Supported Features

The sam4s_xplained board configuration supports the following hardware features:

Interface Controller Driver/Component
NVIC on-chip nested vector interrupt controller
SYSTICK on-chip systick
UART on-chip serial port
I2C on-chip i2c

Other hardware features are not currently supported by Zephyr.

The default configuration can be found in the Kconfig boards/arm/sam4s_xplained/sam4s_xplained_defconfig.

Connections and IOs

The SAM4S Xplained Online User Guide [1] has detailed information about board connections. Download the SAM4S Xplained Schematic [3] for more detail.

System Clock

The SAM4S MCU is configured to use the 12 MHz internal oscillator on the board with the on-chip PLL to generate an 84 MHz system clock.

Serial Port

The ATSAM4S16C MCU has 2 UARTs and 2 USARTs. One of the UARTs (UART0) is connected to the Segger J-Link OB chip (the AT91SAM3U4 is programmed to be Segger J-Link OB). Segger J-Link OB brings the UART out as a virtual COM port.

Programming and Debugging

The SAM4S Xplained board comes with Segger J-Link OB. This provides a debug interface to the SAM4S16C chip. You can use Ozone or JLink to communicate with the SAM4S16C.


  1. Build the Zephyr kernel and the Hello World sample application:

    # On Linux/macOS
    cd $ZEPHYR_BASE/samples/hello_world
    mkdir build && cd build
    # On Windows
    cd %ZEPHYR_BASE%\samples\hello_world
    mkdir build & cd build
    # Use cmake to configure a Ninja-based build system:
    cmake -GNinja -DBOARD=sam4s_xplained ..
    # Now run ninja on the generated build system:
  2. Connect the SAM4S Xplained board to your host computer using the USB debug port.

  3. Run your favorite terminal program to listen for output. Under Linux the terminal should be /dev/ttyACM0. For example:

    $ minicom -D /dev/ttyACM0 -o

    The -o option tells minicom not to send the modem initialization string. Connection should be configured as follows:

    • Speed: 115200
    • Data: 8 bits
    • Parity: None
    • Stop bits: 1
  4. Download JLink from the Segger JLink Downloads Page [2]. Go to the section “J-Link Software and Documentation Pack” and install the “J-Link Software and Documentation pack for Linux”.

  5. To flash an image open JLink and enter the following:

    JLink> device at91sam4s16c
    // Hit enter to accept JTAG as the default and the other default JTAG settings
    JLink> connect
    Device "ATSAM4S16C" selected.
    TotalIRLen = 4, IRPrint = 0x01
    AP-IDR: 0x24770011, Type: AHB-AP
    Found Cortex-M4 r0p1, Little endian.
    FPUnit: 6 code (BP) slots and 2 literal slots
    CoreSight components:
    ROMTbl 0 @ E00FF000
    ROMTbl 0 [0]: FFF0F000, CID: B105E00D, PID: 000BB000 SCS
    ROMTbl 0 [1]: FFF02000, CID: B105E00D, PID: 003BB002 DWT
    ROMTbl 0 [2]: FFF03000, CID: B105E00D, PID: 002BB003 FPB
    ROMTbl 0 [3]: FFF01000, CID: B105E00D, PID: 003BB001 ITM
    ROMTbl 0 [4]: FFF41000, CID: B105900D, PID: 000BB9A1 TPIU
    Found 1 JTAG device, Total IRLen = 4:
    #0 Id: 0x4BA00477, IRLen: 04, IRPrint: 0x1, CoreSight JTAG-DP (ARM)
    Cortex-M4 identified.
    JLink> loadbin <zephyr.bin>, 0x400000
    Downloading file [/home/justin/Zephyr/zephyr/samples/hello_world/outdir/zephyr.bin]...
    Comparing flash   [100%] Done.
    Erasing flash     [100%] Done.
    Programming flash [100%] Done.
    Verifying flash   [100%] Done.
    J-Link: Flash download: Flash programming performed for 2 ranges (21504 bytes)
    J-Link: Flash download: Total time needed: 0.549s (Prepare: 0.200s, Compare: 0.150s, Erase: 0.020s, Program: 0.094s, Verify: 0.001s, Restore: 0.081s)
    JLink> r
    JLink> go

    You should see “Hello World! arm” in your terminal.