AN3264 How to Use the SAMA5D2 Watchdog Under ®

Introduction

This application note describes how to get started using the SAMA5D2 Watchdog under Linux. The Watchdog timer can be used to detect and recover from system malfunctions. The basic principle is that once the Watchdog timer is kicked off, a periodic system reboot countdown begins, then the application needs to clear the Watchdog timer within a suitable time to avoid an immediate system reset by the Watchdog. The for the SAMA5D2 Watchdog has been released in the Microchip Linux BSP. It is easy to access this driver via the watchdog command in the Linux console simply by launching the Watchdog command in a suitable place (in the init.d scripts). Refer to the section Hands-On to add new init.d scripts for Watchdog.

Reference Documents

Title Reference Available SAMA5D2 Series Datasheet DS60001476 https://www.microchip.com/design-centers/32-bit-mpus SAMA5D27 SOM1 Kit1 User Guide DS50002667 https://www.microchip.com/DevelopmentTools/ProductDetails/ PartNO/ATSAMA5D27-SOM1-EK1

Prerequisites

• Hardware – PC – SAMA5D27 SOM1 Evaluation Kit (Part Number: ATSAMA5D27-SOM1-EK1) – SDCard • Software This demo runs on the AT91 Linux platform built by Buildroot. The first step is to set up the AT91 Buildroot development environment. Refer to the web site: http://www.at91.com/linux4sam/bin/view/Linux4SAM/BuildRoot

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 1 AN3264

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 2 AN3264

Table of Contents

Introduction...... 1

Reference Documents...... 1

Prerequisites...... 1

1. Hardware Design...... 4

2. Software Design...... 5 2.1. Device Tree...... 5 2.2. Kernel...... 5 2.3. Rootfs...... 6

3. Hands-On...... 7

4. Revision History...... 9 4.1. Rev. A - 09/2019...... 9

The Microchip Website...... 10

Product Change Notification Service...... 10

Customer Support...... 10

Microchip Devices Code Protection Feature...... 10

Legal Notice...... 10

Trademarks...... 11

Quality Management System...... 11

Worldwide Sales and Service...... 12

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 3 AN3264 Hardware Design

1. Hardware Design The SAMA5D2 MPU integrates a Watchdog with the characteristics listed below: • 12-bit Key-protected Programmable Counter • Watchdog Clock is Independent from Processor Clock • Provides Reset or Signals to the System • Counter May Be Stopped while the Processor is in Debug State or in Idle Mode Figure 1-1. Watchdog Timer Block Diagram

write WDT_MR WDT_MR

WDV WDT_CR

WDRSTT reload 1 0

12-bit Down Counter

WDT_MR reload WDD Current SLCK Value 1/128

<= WDD WDT_MR WDRSTEN = 0 wdt_fault (to Reset Controller) set

WDUNF wdt_int set reset WDERR read WDT_SR reset WDFIEN or reset WDT_MR

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 4 AN3264 Software Design

2. Software Design The Microchip Linux platform was built using Buildroot with the following configuration: atmel_sama5d27_som1_ek_mmc_dev_defconfig All necessary functions for the Watchdog have been selected in this configuration, but with the default setting, the watchdog is not enabled. We can launch and feed it with the BusyBox Watchdog command.

2.1 Device Tree • Action: no need to change • Location: buildroot-at91/output/build/linux-linux4sam_6.0/arch/arm/boot/dts • Sources: – sama5d2.dtsi – at91-sama5d27_som1_ek.dts

Device tree for Watchdog in sama5d2.dtsi: watchdog@f8048040 { compatible = "atmel,sama5d4-wdt"; // specify which driver will be used for this watchdog //device reg = <0xf8048040 0x10>; // watchdog base address is 0xf8048040, size of register block //is 0x10 = <4 IRQ_TYPE_LEVEL_HIGH 7>; // PID of watchdog is 4, high level triggered, //priority is 7 clocks = <&clk32k>; // definition for watchdog clock source status = "disabled"; // default disabled, and will be replaced with “okay” };

clk32k: sckc@f8048050 { compatible = "atmel,sama5d4-sckc"; // specify which driver will be used for this slow //clock device reg = <0xf8048050 0x4>; // slow clock controller base address is 0xf8048050, size of //register block is 0x4

clocks = <&slow_xtal>; // two clock sources for slow clock controller, external 32.768KHz //crystal or internal 64KHz RC // here we use the external 32.768 kHz crystal oscillator. #clock-cells = <0>; };

Device tree for Watchdog in at91-sama5d27_som1_ek.dts: watchdog@f8048040 { //atmel,watchdog-type = "software"; // with this property, a watchdog interrupt will be //asserted instead of reset chip, then system could //be reset in interrupt service routine synchronization //atmel,idle-halt; // with this property, the watchdog stops when the system is in //idle state //atmel,dbg-halt; // with this property, the watchdog stops when the processor is in //debug state status = "okay"; // here we set status of watchdog to “okay”, enable watchdog device };

2.2 Kernel • Action: no need to change • Location: buildroot-at91/output/build/linux-linux4sam_6.0/ • Defconfig: sama5_defconfig • Driver files: drivers/watchdog/sama5d4_wdt.c

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 5 AN3264 Software Design

Check the kernel configuration for the Watchdog function: user@at91:~/buildroot-at91$ make linux-menuconfig

Device Drivers > Watchdog Timer Support > Atmel SAMA5D4 Watchdog Timer With the default setting, the Atmel Watchdog driver is selected.

2.3 Rootfs • Action: no need to change • Location: buildroot-at91/output/images/rootfs.tar The following device node is used to access the Watchdog driver in userspace: • /dev/watchdog

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 6 AN3264 Hands-On

3. Hands-On Once all the Watchdog functions have been selected in the configuration as described in the previous sections, then the Watchdog can be launched and fed with the BusyBox Watchdog command.

Usage of the Watchdog command: # watchdog BusyBox v1.27.2 (2019-04-26 11:28:56 CST) multi-call binary.

Usage: watchdog [-t N[ms]] [-T N[ms]] [-F] DEV

Periodically write to watchdog device DEV

-T N Reboot after N seconds if not reset (default 60) -t N Reset every N seconds (default 30) -F Run in foreground

Use 500ms to specify period in milliseconds

1. Execute the following command to launch the Watchdog manually. Set the reboot time as 10 seconds and the reset time as 5 seconds. The Watchdog command feeds the Watchdog device automatically. # watchdog -T 10 -t 5 /dev/watchdog 2. An alternative is to add an init script for the Watchdog: the Watchdog is then launched and fed automatically after system boot-up. Configure Buildroot and select the feature Install the watchdog daemon startup script: user@at91:~/buildroot-at91$ make menuconfig

3. Rebuild Buildroot with the following command: user@at91:~/buildroot-at91$ make A new init script of the Watchdog is generated as S15watchdog in /etc/init.d:

user@at91:~/buildroot-at91$ cat output/target/etc/init.d/S15watchdog #!/bin/sh # # Start watchdog # case "$1" in start) echo "Starting watchdog..." watchdog -t 5 /dev/watchdog ;; stop) ;; restart|reload) ;; *)

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 7 AN3264 Hands-On

echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $?

How to Verify the Watchdog Reboot Function 1. With the default setting, the BusyBox Watchdog command runs in the background. Do not try to kill it to verify the Watchdog reboot function. With the following source code, the Watchdog is disabled before the task exits: buildroot-at91/output/build/busybox-1.27.2/miscutils/watchdog.c We can use the -F option to make the BusyBox Watchdog command run in the foreground, and use Ctrl + z to suspend to the system. In this case, the Watchdog device is enabled but is no longer fed. After a few seconds (max 16s), the chip is reset by the Watchdog device. 1.1. Use killall to kill the Watchdog command which is running in background; and then execute it in foreground: # killall watchdog # watchdog -t 5 /dev/watchdog -F watchdog: WDIOC_SETTIMEOUT: Invalid argument ^Z[1]+ Stopped watchdog -t 5 /dev/watchdog -F

1.2. Input Ctrl + Z from the Linux command line.

# RomBOOT

AT91Bootstrap 3.8.11 (Fri Apr 26 11:49:16 CST 2019)

SD/MMC: Image: Read file u-boot.bin to 0x23f00000 MMC: ADMA supported SD: Card Capacity: High or Extended SD: Specification Version 3.0X SD/MMC: Done to load image

2. Another option is to put the system into Sleep mode. The system reboots within seconds of entering Sleep mode. Note: If the property “atmel,idle-halt” of the Watchdog is enabled in the device tree, the system does not reboot after entering Sleep mode. With the default settings, this property is not enabled.

# echo mem > /sys/power/state PM: suspend entry (deep) PM: Syncing filesystems ... done. Freezing processes ... (elapsed 0.000 seconds) done. OOM killer disabled. Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. Suspending console(s) (use no_console_suspend to debug) RomBOOT

AT91Bootstrap 3.8.11 (Fri Apr 26 11:49:16 CST 2019)

SD/MMC: Image: Read file u-boot.bin to 0x23f00000 MMC: ADMA supported SD: Card Capacity: High or Extended SD: Specification Version 3.0X SD/MMC: Done to load image

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 8 AN3264 Revision History

4. Revision History

4.1 Rev. A - 09/2019

First issue.

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 9 AN3264

The Microchip Website

Microchip provides online support via our website at http://www.microchip.com/. This website is used to make files and information easily available to customers. Some of the content available includes: • Product Support – Data sheets and errata, application notes and sample programs, design resources, user’s guides and hardware support documents, latest software releases and archived software • General Technical Support – Frequently Asked Questions (FAQs), technical support requests, online discussion groups, Microchip design partner program member listing • Business of Microchip – Product selector and ordering guides, latest Microchip press releases, listing of seminars and events, listings of Microchip sales offices, distributors and factory representatives

Product Change Notification Service

Microchip’s product change notification service helps keep customers current on Microchip products. Subscribers will receive email notification whenever there are changes, updates, revisions or errata related to a specified product family or development tool of interest. To register, go to http://www.microchip.com/pcn and follow the registration instructions.

Customer Support

Users of Microchip products can receive assistance through several channels: • Distributor or Representative • Local Sales Office • Embedded Solutions Engineer (ESE) • Technical Support Customers should contact their distributor, representative or ESE for support. Local sales offices are also available to help customers. A listing of sales offices and locations is included in this document. Technical support is available through the website at: http://www.microchip.com/support

Microchip Devices Code Protection Feature

Note the following details of the code protection feature on Microchip devices: • Microchip products meet the specification contained in their particular Microchip Data Sheet. • Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions. • There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property. • Microchip is willing to work with the customer who is concerned about the integrity of their code. • Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.” Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.

Legal Notice

Information contained in this publication regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 10 AN3264

your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights unless otherwise stated.

Trademarks

The Microchip name and logo, the Microchip logo, Adaptec, AnyRate, AVR, AVR logo, AVR Freaks, BesTime, BitCloud, chipKIT, chipKIT logo, CryptoMemory, CryptoRF, dsPIC, FlashFlex, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer, LANCheck, LinkMD, maXStylus, maXTouch, MediaLB, megaAVR, Microsemi, Microsemi logo, MOST, MOST logo, MPLAB, OptoLyzer, PackeTime, PIC, picoPower, PICSTART, PIC32 logo, PolarFire, Prochip Designer, QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST Logo, SuperFlash, Symmetricom, SyncServer, Tachyon, TempTrackr, TimeSource, tinyAVR, UNI/O, Vectron, and XMEGA are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. APT, ClockWorks, The Embedded Control Solutions Company, EtherSynch, FlashTec, Hyper Speed Control, HyperLight Load, IntelliMOS, Libero, motorBench, mTouch, Powermite 3, Precision Edge, ProASIC, ProASIC Plus, ProASIC Plus logo, Quiet-Wire, SmartFusion, SyncWorld, Temux, TimeCesium, TimeHub, TimePictra, TimeProvider, Vite, WinPath, and ZL are registered trademarks of Microchip Technology Incorporated in the U.S.A. Adjacent Key Suppression, AKS, Analog-for-the-Digital Age, Any Capacitor, AnyIn, AnyOut, BlueSky, BodyCom, CodeGuard, CryptoAuthentication, CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, Dynamic Average Matching, DAM, ECAN, EtherGREEN, In-Circuit Serial Programming, ICSP, INICnet, Inter-Chip Connectivity, JitterBlocker, KleerNet, KleerNet logo, memBrain, Mindi, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, PowerSmart, PureSilicon, QMatrix, REAL ICE, Ripple Blocker, SAM-ICE, Serial Quad I/O, SMART-I.S., SQI, SuperSwitcher, SuperSwitcher II, Total Endurance, TSHARC, USBCheck, VariSense, ViewSpan, WiperLock, Wireless DNA, and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. SQTP is a service mark of Microchip Technology Incorporated in the U.S.A. The Adaptec logo, Frequency on Demand, Silicon Storage Technology, and Symmcom are registered trademarks of Microchip Technology Inc. in other countries. GestIC is a registered trademark of Microchip Technology Germany II GmbH & Co. KG, a subsidiary of Microchip Technology Inc., in other countries. All other trademarks mentioned herein are property of their respective companies. © 2019, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. ISBN: 978-1-5224-5082-5 AMBA, Arm, Arm7, Arm7TDMI, Arm9, Arm11, Artisan, big.LITTLE, Cordio, CoreLink, CoreSight, Cortex, DesignStart, DynamIQ, Jazelle, Keil, Mali, Mbed, Mbed Enabled, NEON, POP, RealView, SecurCore, Socrates, Thumb, TrustZone, ULINK, ULINK2, ULINK-ME, ULINK-PLUS, ULINKpro, µVision, Versatile are trademarks or registered trademarks of Arm Limited (or its subsidiaries) in the US and/or elsewhere.

Quality Management System

For information regarding Microchip’s Quality Management Systems, please visit http://www.microchip.com/quality.

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 11 Worldwide Sales and Service

AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE Corporate Office Australia - Sydney India - Bangalore Austria - Wels 2355 West Chandler Blvd. Tel: 61-2-9868-6733 Tel: 91-80-3090-4444 Tel: 43-7242-2244-39 Chandler, AZ 85224-6199 China - Beijing India - New Delhi Fax: 43-7242-2244-393 Tel: 480-792-7200 Tel: 86-10-8569-7000 Tel: 91-11-4160-8631 Denmark - Copenhagen Fax: 480-792-7277 China - Chengdu India - Pune Tel: 45-4450-2828 Technical Support: Tel: 86-28-8665-5511 Tel: 91-20-4121-0141 Fax: 45-4485-2829 http://www.microchip.com/support China - Chongqing Japan - Osaka Finland - Espoo Web Address: Tel: 86-23-8980-9588 Tel: 81-6-6152-7160 Tel: 358-9-4520-820 http://www.microchip.com China - Dongguan Japan - Tokyo France - Paris Atlanta Tel: 86-769-8702-9880 Tel: 81-3-6880- 3770 Tel: 33-1-69-53-63-20 Duluth, GA China - Guangzhou Korea - Daegu Fax: 33-1-69-30-90-79 Tel: 678-957-9614 Tel: 86-20-8755-8029 Tel: 82-53-744-4301 Germany - Garching Fax: 678-957-1455 China - Hangzhou Korea - Seoul Tel: 49-8931-9700 Austin, TX Tel: 86-571-8792-8115 Tel: 82-2-554-7200 Germany - Haan Tel: 512-257-3370 China - Hong Kong SAR Malaysia - Kuala Lumpur Tel: 49-2129-3766400 Boston Tel: 852-2943-5100 Tel: 60-3-7651-7906 Germany - Heilbronn Westborough, MA China - Nanjing Malaysia - Penang Tel: 49-7131-72400 Tel: 774-760-0087 Tel: 86-25-8473-2460 Tel: 60-4-227-8870 Germany - Karlsruhe Fax: 774-760-0088 China - Qingdao Philippines - Manila Tel: 49-721-625370 Chicago Tel: 86-532-8502-7355 Tel: 63-2-634-9065 Germany - Munich Itasca, IL China - Shanghai Singapore Tel: 49-89-627-144-0 Tel: 630-285-0071 Tel: 86-21-3326-8000 Tel: 65-6334-8870 Fax: 49-89-627-144-44 Fax: 630-285-0075 China - Shenyang Taiwan - Hsin Chu Germany - Rosenheim Dallas Tel: 86-24-2334-2829 Tel: 886-3-577-8366 Tel: 49-8031-354-560 Addison, TX China - Shenzhen Taiwan - Kaohsiung Israel - Ra’anana Tel: 972-818-7423 Tel: 86-755-8864-2200 Tel: 886-7-213-7830 Tel: 972-9-744-7705 Fax: 972-818-2924 China - Suzhou Taiwan - Taipei Italy - Milan Detroit Tel: 86-186-6233-1526 Tel: 886-2-2508-8600 Tel: 39-0331-742611 Novi, MI China - Wuhan Thailand - Bangkok Fax: 39-0331-466781 Tel: 248-848-4000 Tel: 86-27-5980-5300 Tel: 66-2-694-1351 Italy - Padova Houston, TX China - Xian Vietnam - Ho Chi Minh Tel: 39-049-7625286 Tel: 281-894-5983 Tel: 86-29-8833-7252 Tel: 84-28-5448-2100 Netherlands - Drunen Indianapolis China - Xiamen Tel: 31-416-690399 Noblesville, IN Tel: 86-592-2388138 Fax: 31-416-690340 Tel: 317-773-8323 China - Zhuhai Norway - Trondheim Fax: 317-773-5453 Tel: 86-756-3210040 Tel: 47-72884388 Tel: 317-536-2380 Poland - Warsaw Los Angeles Tel: 48-22-3325737 Mission Viejo, CA Romania - Bucharest Tel: 949-462-9523 Tel: 40-21-407-87-50 Fax: 949-462-9608 Spain - Madrid Tel: 951-273-7800 Tel: 34-91-708-08-90 Raleigh, NC Fax: 34-91-708-08-91 Tel: 919-844-7510 Sweden - Gothenberg New York, NY Tel: 46-31-704-60-40 Tel: 631-435-6000 Sweden - Stockholm San Jose, CA Tel: 46-8-5090-4654 Tel: 408-735-9110 UK - Wokingham Tel: 408-436-4270 Tel: 44-118-921-5800 Canada - Toronto Fax: 44-118-921-5820 Tel: 905-695-1980 Fax: 905-695-2078

© 2019 Microchip Technology Inc. Application Note DS00003264A-page 12