1    /*
     2     * Copyright (c) 2013, Texas Instruments Incorporated
     3     * All rights reserved.
     4     *
     5     * Redistribution and use in source and binary forms, with or without
     6     * modification, are permitted provided that the following conditions
     7     * are met:
     8     *
     9     * *  Redistributions of source code must retain the above copyright
    10     *    notice, this list of conditions and the following disclaimer.
    11     *
    12     * *  Redistributions in binary form must reproduce the above copyright
    13     *    notice, this list of conditions and the following disclaimer in the
    14     *    documentation and/or other materials provided with the distribution.
    15     *
    16     * *  Neither the name of Texas Instruments Incorporated nor the names of
    17     *    its contributors may be used to endorse or promote products derived
    18     *    from this software without specific prior written permission.
    19     *
    20     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    21     * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    22     * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    23     * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
    24     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    25     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    26     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
    27     * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    28     * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
    29     * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
    30     * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    31     * */
    32    
    33    /*
    34     *  ======== Boot.xdc ========
    35     */
    36    
    37    package ti.catalog.arm.cortexm4.tiva.l;
    38    
    39    import xdc.rov.ViewInfo;
    40    import xdc.runtime.Assert;
    41    
    42    /*!
    43     *  ======== Boot ========
    44     *  Tiva Low power Embedded device Boot Support.
    45     *
    46     *  The Boot module supports boot initialization for the Tiva low power devices.
    47     *  A special boot init function is created based on the configuration
    48     *  settings for this module.  This function is hooked into the
    49     *  xdc.runtime.Startup.firstFxns[] array and called very early at boot time.
    50     *
    51     *  The code to support the boot module is placed in a separate section
    52     *  named `".text:.bootCodeSection"` to allow placement of this section in
    53     *  the linker .cmd file if necessary. This section is a subsection of the
    54     *  `".text"` section so this code will be placed into the .text section unless
    55     *  explicitly placed, either through
    56     *  `{@link xdc.cfg.Program#sectMap Program.sectMap}` or through a linker
    57     *  command file.
    58     */
    59    @Template("./Boot.xdt")
    60    module Boot
    61    {
    62        metaonly struct ModuleView {
    63            Bool    configureClocks;
    64            Bool    disableWatchdog;
    65        }
    66    
    67        @Facet
    68        metaonly config ViewInfo.Instance rovViewInfo =
    69            ViewInfo.create({
    70                viewMap: [
    71                [
    72                    'Module',
    73                    {
    74                        type: ViewInfo.MODULE,
    75                        viewInitFxn: 'viewInitModule',
    76                        structName: 'ModuleView'
    77                    }
    78                ],
    79                ]
    80            });
    81    
    82    
    83        /*!
    84         *  Clock configuration flag, default is false.
    85         *
    86         *  Set to true to automatically configure the clocks.
    87         */
    88        metaonly config Bool configureClocks = false;
    89    
    90        /*!
    91         *  Watchdog disable configuration flag, default is true.
    92         *
    93         *  Set to false to disable the disabling of the watchdog.
    94         */
    95        metaonly config Bool disableWatchdog = true;
    96    
    97        /*!
    98         *  @_nodoc
    99         *  ======== registerFreqListener ========
   100         *  Register a module to be notified whenever the frequency changes.
   101         *
   102         *  The registered module must have a function named 'fireFrequencyUpdate'
   103         *  which takes the new frequency as an argument.
   104         */
   105        function registerFreqListener();
   106    
   107    internal:
   108    
   109        /*
   110         *  ======== init ========
   111         *  Generated entry point for clock and watchdog initialization.
   112         *
   113         *  Installed as a Startup.firstFxn.
   114         */
   115        Void init();
   116    
   117        /*!
   118         *  computed cpu frequency based on clock settings
   119         */
   120        metaonly config UInt computedCpuFrequency;
   121    
   122    };