⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vector_table.c

📁 摩托罗拉MMC2107在ucosII的移植代码
💻 C
字号:
/*******************************************************************************
 File Name:           vector_table.c                Current Release Level: 0.1

 Compiler:            Metrowerks Compiler for Motorola M-CORE (Cmcore.exe)

 Target Device:       MMC2107

 Documentation:       MMC2107/D  Rev 2        MMC2107 Technical Data
                      MCORERM/AD              M*CORE Meference Manual

 Description:         Define an array of 128 constant pointers to interrupt
                      service routines.  (A full set of default ISR's are
                      provided in file isr_stubs.c)

                      The vector base register must contain the address of this
                      array.  Usually this will be at the bottom of the memory
                      map.  If your code relocates this array to RAM, it must
                      reside on a 1024-byte boundary, because the VBR's lowest
                      ten bits are wired to zero.  The reset vector cannot be
                      relocated, because the VBR is cleared on reset.

 ------------------------------------------------------------------------------

 Author:              Brian LaPonsey
                      Motorola, East Kilbride, Scotland

 First Release:       31May2001
 Last Edit Date:      31May2001

 Update History:
 Rev Date          Author       Description of Change
 --- -----------   ------------ -----------------------------------------------
 0.1 31-May-2001   B LaPonsey   Initial release
 0.2 06-Jun-2001   E Styger     Modified macro to fix pointer arithmetic
 
*******************************************************************************/

/* Includes, Exports and External References **********************************/

#include "isr_stubs.h"      /* prototypes for ISR stub routines */
#include "inttypes.h"       /* ANSI C9x integer typedefs */
#include "includes.h"

/* Macro Definitions **********************************************************/

/* Macro "set_low_bit" takes an even address and forces it to be odd by
   setting the least significant bit in the address.  This will generate a
   Non-Standard Conversion warning, because we are casting a function pointer 
   to an object pointer, and then back again.  This is why that message (C1805)
   is disabled.

   ISR addresses are always even numbers because the MCore has a fixed 16-bit
   instruction set.  If the address is forced to be odd by setting the
   low-order bit, then that ISR will use the alternate registers when its
   exception occurs, because the low-order bit is copied to the PSR(AF).      */

#define set_low_bit(addr) ((void(*const)(void)) ((uint8_t *) (addr) + 1))

extern asm void _start(void);

/* Compiler directives ********************************************************/


/* Vector Table Initialization ************************************************/

void (*const __vector_table[128])(void) = {
  &_start,                  /*   0 0x000  Reset vector */
  &misaligned_access,       /*   1 0x004  Misaligned Access */
  &access_error,            /*   2 0x008  Access Error */
  &divide_by_zero,          /*   3 0x00C  Divide by Zero */
  &illegal_instruction,     /*   4 0x010  Illegal Instruction */
  &privilege_violation,     /*   5 0x014  Privilege Violation */
  &trace_exception,         /*   6 0x018  Trace Exception */
  &breakpoint_exception,    /*   7 0x01C  Breakpoint Exception */
  &unrecoverable_error,     /*   8 0x020  Unrecoverable Error */
  &soft_reset,              /*   9 0x024  Soft Reset */
  &normal_autovector_interrupt,   /*  10 0x028  Normal Autovector Interrupt */
  set_low_bit(&fast_autovector_interrupt),  /*  11 0x02C  Fast Interrupt Autovector */
  &hardware_accelerator,    /*  12 0x030  Hardware Accelerator */
  NULL,                     /*  13 0x034  Unused exception space */
  NULL,                     /*  14 0x038  Unused exception space */
  NULL,                     /*  15 0x03C  Unused exception space */
  &OSCtxSw,                 /*  16 0x040  Trap #0 Context Switch function */
  &trap1,                   /*  17 0x044  Trap #1 */
  &trap2,                   /*  18 0x048  Trap #2 */
  &trap3,                   /*  19 0x04C  Trap #3 */
  NULL,                     /*  20 0x050  Unused exception space */
  NULL,                     /*  21 0x054  Unused exception space */
  NULL,                     /*  22 0x058  Unused exception space */
  NULL,                     /*  23 0x05C  Unused exception space */
  NULL,                     /*  24 0x060  Unused exception space */
  NULL,                     /*  25 0x064  Unused exception space */
  NULL,                     /*  26 0x068  Unused exception space */
  NULL,                     /*  27 0x06C  Unused exception space */
  NULL,                     /*  28 0x070  Unused exception space */
  NULL,                     /*  29 0x074  Unused exception space */
  NULL,                     /*  30 0x078  Unused exception space */
  NULL,                     /*  31 0x07C  Unused exception space */
  &vectored_normal_p0,      /*  32 0x080  Reserved for vectored controller */
  &vectored_normal_p1,      /*  33 0x084  Reserved for vectored controller */
  &vectored_normal_p2,      /*  34 0x088  Reserved for vectored controller */
  &vectored_normal_p3,      /*  35 0x08C  Reserved for vectored controller */
  &vectored_normal_p4,      /*  36 0x090  Reserved for vectored controller */
  &vectored_normal_p5,      /*  37 0x094  Reserved for vectored controller */
  &vectored_normal_p6,      /*  38 0x098  Reserved for vectored controller */
  &vectored_normal_p7,      /*  39 0x09C  Reserved for vectored controller */
  &vectored_normal_p8,      /*  40 0x0A0  Reserved for vectored controller */
  &vectored_normal_p9,      /*  41 0x0A4  Reserved for vectored controller */
  &vectored_normal_p10,     /*  42 0x0A8  Reserved for vectored controller */
  &vectored_normal_p11,     /*  43 0x0AC  Reserved for vectored controller */
  &vectored_normal_p12,     /*  44 0x0B0  Reserved for vectored controller */
  &vectored_normal_p13,     /*  45 0x0B4  Reserved for vectored controller */
  &vectored_normal_p14,     /*  46 0x0B8  Reserved for vectored controller */
  &vectored_normal_p15,     /*  47 0x0BC  Reserved for vectored controller */
  &vectored_normal_p16,     /*  48 0x0C0  Reserved for vectored controller */
  &vectored_normal_p17,     /*  49 0x0C4  Reserved for vectored controller */
  &vectored_normal_p18,     /*  50 0x0C8  Reserved for vectored controller */
  &vectored_normal_p19,     /*  51 0x0CC  Reserved for vectored controller */
  &vectored_normal_p20,     /*  52 0x0D0  Reserved for vectored controller */
  &vectored_normal_p21,     /*  53 0x0D4  Reserved for vectored controller */
  &vectored_normal_p22,     /*  54 0x0D8  Reserved for vectored controller */
  &vectored_normal_p23,     /*  55 0x0DC  Reserved for vectored controller */
  &vectored_normal_p24,     /*  56 0x0E0  Reserved for vectored controller */
  &vectored_normal_p25,     /*  57 0x0E4  Reserved for vectored controller */
  &vectored_normal_p26,     /*  58 0x0E8  Reserved for vectored controller */
  &vectored_normal_p27,     /*  59 0x0EC  Reserved for vectored controller */
  &vectored_normal_p28,     /*  60 0x0F0  Reserved for vectored controller */
  &vectored_normal_p29,     /*  61 0x0F4  Reserved for vectored controller */
  &vectored_normal_p30,     /*  62 0x0F8  Reserved for vectored controller */
  &vectored_normal_p31,     /*  63 0x0FC  Reserved for vectored controller */
  &vectored_fast_p0,        /*  64 0x100  Reserved for vectored controller */
  &vectored_fast_p1,        /*  65 0x104  Reserved for vectored controller */
  &vectored_fast_p2,        /*  66 0x108  Reserved for vectored controller */
  &vectored_fast_p3,        /*  67 0x10C  Reserved for vectored controller */
  &vectored_fast_p4,        /*  68 0x110  Reserved for vectored controller */
  &vectored_fast_p5,        /*  69 0x114  Reserved for vectored controller */
  &vectored_fast_p6,        /*  70 0x118  Reserved for vectored controller */
  &vectored_fast_p7,        /*  71 0x11C  Reserved for vectored controller */
  &vectored_fast_p8,        /*  72 0x120  Reserved for vectored controller */
  &vectored_fast_p9,        /*  73 0x124  Reserved for vectored controller */
  &vectored_fast_p10,       /*  74 0x128  Reserved for vectored controller */
  &vectored_fast_p11,       /*  75 0x12C  Reserved for vectored controller */
  &vectored_fast_p12,       /*  76 0x130  Reserved for vectored controller */
  &vectored_fast_p13,       /*  77 0x134  Reserved for vectored controller */
  &vectored_fast_p14,       /*  78 0x138  Reserved for vectored controller */
  &vectored_fast_p15,       /*  79 0x13C  Reserved for vectored controller */
  &vectored_fast_p16,       /*  80 0x140  Reserved for vectored controller */
  &vectored_fast_p17,       /*  81 0x144  Reserved for vectored controller */
  &vectored_fast_p18,       /*  82 0x148  Reserved for vectored controller */
  &vectored_fast_p19,       /*  83 0x14C  Reserved for vectored controller */
  &vectored_fast_p20,       /*  84 0x150  Reserved for vectored controller */
  &vectored_fast_p21,       /*  85 0x154  Reserved for vectored controller */
  &vectored_fast_p22,       /*  86 0x158  Reserved for vectored controller */
  &vectored_fast_p23,       /*  87 0x15C  Reserved for vectored controller */
  &vectored_fast_p24,       /*  88 0x160  Reserved for vectored controller */
  &vectored_fast_p25,       /*  89 0x164  Reserved for vectored controller */
  &vectored_fast_p26,       /*  90 0x168  Reserved for vectored controller */
  &vectored_fast_p27,       /*  91 0x16C  Reserved for vectored controller */
  &vectored_fast_p28,       /*  92 0x170  Reserved for vectored controller */
  &vectored_fast_p29,       /*  93 0x174  Reserved for vectored controller */
  &OSTickISR,               /*  94 0x178  OS Tick function */
  &vectored_fast_p31,       /*  95 0x17C  Reserved for vectored controller */
  NULL,                     /*  96 0x180  Unused exception space */
  NULL,                     /*  97 0x184  Unused exception space */
  NULL,                     /*  98 0x188  Unused exception space */
  NULL,                     /*  99 0x18C  Unused exception space */
  NULL,                     /* 100 0x190  Unused exception space */
  NULL,                     /* 101 0x194  Unused exception space */
  NULL,                     /* 102 0x198  Unused exception space */
  NULL,                     /* 103 0x19C  Unused exception space */
  NULL,                     /* 104 0x1A0  Unused exception space */
  NULL,                     /* 105 0x1A4  Unused exception space */
  NULL,                     /* 106 0x1A8  Unused exception space */
  NULL,                     /* 107 0x1AC  Unused exception space */
  NULL,                     /* 108 0x1B0  Unused exception space */
  NULL,                     /* 109 0x1B4  Unused exception space */
  NULL,                     /* 100 0x1B8  Unused exception space */
  NULL,                     /* 111 0x1BC  Unused exception space */
  NULL,                     /* 112 0x1C0  Unused exception space */
  NULL,                     /* 113 0x1C4  Unused exception space */
  NULL,                     /* 114 0x1C8  Unused exception space */
  NULL,                     /* 115 0x1CC  Unused exception space */
  NULL,                     /* 116 0x1D0  Unused exception space */
  NULL,                     /* 117 0x1D4  Unused exception space */
  NULL,                     /* 118 0x1D8  Unused exception space */
  NULL,                     /* 119 0x1DC  Unused exception space */
  NULL,                     /* 110 0x1E0  Unused exception space */
  NULL,                     /* 121 0x1E4  Unused exception space */
  NULL,                     /* 122 0x1E8  Unused exception space */
  NULL,                     /* 123 0x1EC  Unused exception space */
  NULL,                     /* 124 0x1F0  Unused exception space */
  NULL,                     /* 125 0x1F4  Unused exception space */
  NULL,                     /* 126 0x1F8  Unused exception space */
  NULL                      /* 127 0x1FC  Unused exception space */
};

/*******************************************************************************
* Motorola reserves the right to make changes without further notice to any    *
* product herein to improve reliability, function, or design.  Motorola does   *
* not assume any liability arising out of the application or use of any        *
* product, circuit, or software described herein; neither does it convey any   *
* license under its patent rights nor the rights of others.  Motorola products *
* are not designed, intended, or authorized for use as components in systems   *
* intended for surgical implant into the body, or other applications intended  *
* to support life, or for any other application in which the failure of the    *
* Motorola product could create a situation where personal injury or death may *
* occur.  Should Buyer purchase or use Motorola products for any such intended *
* or unauthorized application, Buyer shall indemnify and hold Motorola and its *
* officers, employees, subsidiaries, affiliates, and distributors harmless     *
* against all claims, costs, damages, and expenses, and reasonable attorney    *
* fees arising out of, directly or indirectly, any claim of personal injury or *
* death associated with such unintended or unauthorized use, even if such      *
* claim alleges that Motorola was negligent regarding the design or            *
* manufacture of the part.                                                     *
*                                                                              *
* Motorola and the Motorola logo are registered trademarks of Motorola Ltd.    *
*******************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -