Files
acquisition_module/XC88x_FLADDR.H
2025-07-05 08:00:04 +08:00

877 lines
30 KiB
C

//***************************************************************************
//* BootROM entries for XC88x-AA and AB Step *
//* Updated : 2006-03-14 *
//* Copyright: (c) 2006 Infineon Technologies AG *
//***************************************************************************
#ifndef __XC88x_FLADDR_H__
#define __XC88x_FLADDR_H__
// User Configuration //
#define XC88xAA 1 // Must be set to '1/0' (for AA step)
#define XC88xAB 0 // Must be set to '1/0' (set to '1' for AB step)
#define XC88xAC 0 // Must be set to '1/0' (Set to '1' for AC step)
#define USE_BANK 3 // Register Bank used during Program / Erase
// Default = 3
#define WORDLINE_BUFFER_ADDRESS 0x80 // Starting address of the Buffer in the IRAM
// This Buffer will be used to store data
// before it is being programmed to flash
#define USE_64BYTE_BUFFER 0 // If PFlash will be programmed, set this to '1'
// Programming PFLash will need 64Byte WordLine Buffer
// Else, default buffer size is set to 32byte.
#define USE_PFLERASE 1 // Set to '1' if PFlErase() routine is to be used.
// Set to '0' if not used, to save some code space.
#define USE_DLFERASE 1 // Set to '1' if DFlErase() routine is to be used.
// Set to '0' if not used, to save some code space.
// End of user configuration
//+----------------------------------------------+
//| ROM entries taken from manual |
//| and AppNote aboute programming the FLASH |
//| used in XC88x_FLHANDLER.ASM |
//+----------------------------------------------+
//====================================================================================
#if (XC88xAA || XC88xAB || XC88xAC) // Use the FSM to program / erase flash
#define FLASH_ERASE_BROM_ENTRY 0xDFF9 // Erase Flash Bank
#define FLASH_PROGRAM_BROM_ENTRY 0xDFF6 // Program Flash Bank.
#define FLASH_ERASE_ABORT_BROM_ENTRY 0xDFF3 // Abort the on going erase process
#define FLASH_READ_STATUS_BROM_ENTRY 0xDFF0 // Read Flash Status
#endif
#if (XC88xAA)
#define FLASH_PROTECT_BROM_ENTRY 0xDB06
#endif
#if (XC88xAB || XC88xAC)
#define FLASH_PROTECT_BROM_ENTRY 0xDFD8
#endif
//====================================================================================
//+-----------------------------------------+
//| General definitions of used sources |
//+-----------------------------------------+
// used buffer address in IRAM for Wordline erase/program
#if (XC88xAA || XC88xAB || XC88xAC)
#define MAGIC_MEMORY 0x36 // reserve magic memory from D:0x36 .. D:0x3E
#if (USE_64BYTE_BUFFER == 1)
#define BYTES_PER_WORDLINE 64 //
#else
#define BYTES_PER_WORDLINE 32 //
#endif
#define RESERVED_BYTES 0x08
#define PFLASH0 0 // PFlash 0
#define PFLASH1 1 // PFlash 1
#define PFLASH2 2 // PFlash 2
#define DFLASH0 3 // DFlash 0
#define DFLASH1 4 // DFlash 1
#endif
//+------------------------------------------------+
//| End of general definitions of used sources |
//+------------------------------------------------+
//************************************************************************************************
//* Definitions of Bank-, Sector- and Wordlineaddresses
//*
//************************************************************************************************
// Sectors of PFlash0 for erasing -- transferred in PFlErase() first parameter
// Sector.07/Sector.06/Sector.05/Sector.04/Sector.03/Sector.02/ Sector.01/ Sector.00 /
// ---------/---------/---------/---------/---------/Pfl0Sec02/ Pfl0Sec01/ Pfl0Sec00 /
// ---------/---------/---------/---------/---------/-256B-4WL/-256B--4WL/-7.5k-120WL/
// ---------/---------/---------/---------/---------/-0x1F00--/--0x1E00--/--0x0000----/
#define PFL0_SEC0 0x0001
#define PFL0_SEC1 0x0002
#define PFL0_SEC2 0x0004
// Sectors of PFlash1 for erasing -- transferred in PFlErase() Second parameter
// Sector.07/Sector.06/Sector.05/Sector.04/Sector.03/Sector.02/ Sector.01/ Sector.00 /
// ---------/---------/---------/---------/---------/Pfl1Sec02/ Pfl1Sec01/ Pfl1Sec00 /
// ---------/---------/---------/---------/---------/-256B-4WL/-256B--4WL/-7.5k-120WL/
// ---------/---------/---------/---------/---------/-0x3F00--/--0x3E00--/--0x2000----/
#define PFL1_SEC0 0x0001
#define PFL1_SEC1 0x0002
#define PFL1_SEC2 0x0004
// Sectors of PFlash2 for erasing -- transferred in PFlErase() Third parameter
// Sector.07/Sector.06/Sector.05/Sector.04/Sector.03/Sector.02/ Sector.01/ Sector.00 /
// ---------/---------/---------/---------/---------/Pfl2Sec02/ Pfl2Sec01/ Pfl2Sec00 /
// ---------/---------/---------/---------/---------/-256B-4WL/-256B--4WL/-7.5k-120WL/
// ---------/---------/---------/---------/---------/-0x5F00--/--0x5E00--/--0x4000----/
#define PFL2_SEC0 0x0001
#define PFL2_SEC1 0x0002
#define PFL2_SEC2 0x0004
// Sectors of DFlash 0 for erasing -- transfered in DFlErase() First parameter
// DFlash 0 address is also mirrorred to 0x7xxx
// Sector.15/Sector.14/Sector.13/Sector.12/Sector.11/Sector.10/Sector.09/Sector.08/
// ---------/---------/---------/---------/---------/---------/Dfl0Sec09/Dfl0Sec08/
// ---------/---------/---------/---------/---------/---------/-128-4WL-/-128-4WL-/
// ---------/---------/---------/---------/---------/---------/--0xAF80-/--0xAF00-/
// Sector.07/Sector.06/Sector.05/Sector.04/Sector.03/Sector.02/Sector.01/Sector.00/
// Dfl0Sec07/Dfl0Sec06/Dfl0Sec05/Dfl0Sec04/Dfl0Sec03/Dfl0Sec02/Dfl0Sec01/Dfl0Sec00/
// -128-4WL-/-128-4WL-/-256-8WL-/-256-8WL-/-512-16WL/-512-16WL/-1k--32WL/-1k--32WL/
// --0xAE80-/--0xAE00-/--0xAD00-/--0xAC00-/-0xAA00--/-0xA800--/--0xA400-/--0xA000-/
#define DFL0_SEC0 0x0001
#define DFL0_SEC1 0x0002
#define DFL0_SEC2 0x0004
#define DFL0_SEC3 0x0008
#define DFL0_SEC4 0x0010
#define DFL0_SEC5 0x0020
#define DFL0_SEC6 0x0040
#define DFL0_SEC7 0x0080
#define DFL0_SEC8 0x0100
#define DFL0_SEC9 0x0200
#define DFL0_SECALL 0x3FF
// Sectors of DFlash 1 for erasing -- transfered in DFlErase() Second parameter
// DFlash 1 address is also mirrorred to 0x6xxx
// Sector.15/Sector.14/Sector.13/Sector.12/Sector.11/Sector.10/Sector.09/Sector.08/
// ---------/---------/---------/---------/---------/---------/Dfl1Sec09/Dfl1Sec08/
// ---------/---------/---------/---------/---------/---------/-128-4WL-/-128-4WL-/
// ---------/---------/---------/---------/---------/---------/--0xAF80-/--0xAF00-/
// Sector.07/Sector.06/Sector.05/Sector.04/Sector.03/Sector.02/Sector.01/Sector.00/
// Dfl1Sec07/Dfl1Sec06/Dfl1Sec05/Dfl1Sec04/Dfl1Sec03/Dfl1Sec02/Dfl1Sec01/Dfl1Sec00/
// -128-4WL-/-128-4WL-/-256-8WL-/-256-8WL-/-512-16WL/-512-16WL/-1k--32WL/-1k--32WL/
// --0xAE80-/--0xAE00-/--0xAD00-/--0xAC00-/-0xAA00--/-0xA800--/--0xA400-/--0xA000-/
#define DFL1_SEC0 0x0001
#define DFL1_SEC1 0x0002
#define DFL1_SEC2 0x0004
#define DFL1_SEC3 0x0008
#define DFL1_SEC4 0x0010
#define DFL1_SEC5 0x0020
#define DFL1_SEC6 0x0040
#define DFL1_SEC7 0x0080
#define DFL1_SEC8 0x0100
#define DFL1_SEC9 0x0200
#define DFL1_SECALL 0x3FF
//###################################################################################
// WordLine startaddresses for Sectors in PFlas 0, each WL with 64bytes
// Sector 0 -- 7.5 kbytes -- 120 Wordlines
#define PFL0_SEC0_WL00 0x0000
#define PFL0_SEC0_WL01 0x0040
#define PFL0_SEC0_WL02 0x0080
#define PFL0_SEC0_WL03 0x00C0
#define PFL0_SEC0_WL04 0x0100
#define PFL0_SEC0_WL05 0x0140
#define PFL0_SEC0_WL06 0x0180
#define PFL0_SEC0_WL07 0x01C0
#define PFL0_SEC0_WL08 0x0200
#define PFL0_SEC0_WL09 0x0240
#define PFL0_SEC0_WL10 0x0280
#define PFL0_SEC0_WL11 0x02C0
#define PFL0_SEC0_WL12 0x0300
#define PFL0_SEC0_WL13 0x0340
#define PFL0_SEC0_WL14 0x0380
#define PFL0_SEC0_WL15 0x03C0
#define PFL0_SEC0_WL16 0x0400
#define PFL0_SEC0_WL17 0x0440
#define PFL0_SEC0_WL18 0x0480
#define PFL0_SEC0_WL19 0x04C0
#define PFL0_SEC0_WL20 0x0500
#define PFL0_SEC0_WL21 0x0540
#define PFL0_SEC0_WL22 0x0580
#define PFL0_SEC0_WL23 0x05C0
#define PFL0_SEC0_WL24 0x0600
#define PFL0_SEC0_WL25 0x0640
#define PFL0_SEC0_WL26 0x0680
#define PFL0_SEC0_WL27 0x06C0
#define PFL0_SEC0_WL28 0x0700
#define PFL0_SEC0_WL29 0x0740
#define PFL0_SEC0_WL30 0x0780
#define PFL0_SEC0_WL31 0x07C0
#define PFL0_SEC0_WL32 0x0800
#define PFL0_SEC0_WL33 0x0840
#define PFL0_SEC0_WL34 0x0880
#define PFL0_SEC0_WL35 0x08C0
#define PFL0_SEC0_WL36 0x0900
#define PFL0_SEC0_WL37 0x0940
#define PFL0_SEC0_WL38 0x0980
#define PFL0_SEC0_WL39 0x09C0
#define PFL0_SEC0_WL40 0x0A00
#define PFL0_SEC0_WL41 0x0A40
#define PFL0_SEC0_WL42 0x0A80
#define PFL0_SEC0_WL43 0x0AC0
#define PFL0_SEC0_WL44 0x0B00
#define PFL0_SEC0_WL45 0x0B40
#define PFL0_SEC0_WL46 0x0B80
#define PFL0_SEC0_WL47 0x0BC0
#define PFL0_SEC0_WL48 0x0C00
#define PFL0_SEC0_WL49 0x0C40
#define PFL0_SEC0_WL50 0x0C80
#define PFL0_SEC0_WL51 0x0CC0
#define PFL0_SEC0_WL52 0x0D00
#define PFL0_SEC0_WL53 0x0D40
#define PFL0_SEC0_WL54 0x0D80
#define PFL0_SEC0_WL55 0x0DC0
#define PFL0_SEC0_WL56 0x0E00
#define PFL0_SEC0_WL57 0x0E40
#define PFL0_SEC0_WL58 0x0E80
#define PFL0_SEC0_WL59 0x0EC0
#define PFL0_SEC0_WL60 0x0F00
#define PFL0_SEC0_WL61 0x0F40
#define PFL0_SEC0_WL62 0x0F80
#define PFL0_SEC0_WL63 0x0FC0
#define PFL0_SEC0_WL64 0x1000
#define PFL0_SEC0_WL65 0x1040
#define PFL0_SEC0_WL66 0x1080
#define PFL0_SEC0_WL67 0x10C0
#define PFL0_SEC0_WL68 0x1100
#define PFL0_SEC0_WL69 0x1140
#define PFL0_SEC0_WL70 0x1180
#define PFL0_SEC0_WL71 0x11C0
#define PFL0_SEC0_WL72 0x1200
#define PFL0_SEC0_WL73 0x1240
#define PFL0_SEC0_WL74 0x1280
#define PFL0_SEC0_WL75 0x12C0
#define PFL0_SEC0_WL76 0x1300
#define PFL0_SEC0_WL77 0x1340
#define PFL0_SEC0_WL78 0x1380
#define PFL0_SEC0_WL79 0x13C0
#define PFL0_SEC0_WL80 0x1400
#define PFL0_SEC0_WL81 0x1440
#define PFL0_SEC0_WL82 0x1480
#define PFL0_SEC0_WL83 0x14C0
#define PFL0_SEC0_WL84 0x1500
#define PFL0_SEC0_WL85 0x1540
#define PFL0_SEC0_WL86 0x1580
#define PFL0_SEC0_WL87 0x15C0
#define PFL0_SEC0_WL88 0x1600
#define PFL0_SEC0_WL89 0x1640
#define PFL0_SEC0_WL90 0x1680
#define PFL0_SEC0_WL91 0x16C0
#define PFL0_SEC0_WL92 0x1700
#define PFL0_SEC0_WL93 0x1740
#define PFL0_SEC0_WL94 0x1780
#define PFL0_SEC0_WL95 0x17C0
#define PFL0_SEC0_WL96 0x1800
#define PFL0_SEC0_WL97 0x1840
#define PFL0_SEC0_WL98 0x1880
#define PFL0_SEC0_WL99 0x18C0
#define PFL0_SEC0_WL100 0x1900
#define PFL0_SEC0_WL101 0x1940
#define PFL0_SEC0_WL102 0x1980
#define PFL0_SEC0_WL103 0x19C0
#define PFL0_SEC0_WL104 0x1A00
#define PFL0_SEC0_WL105 0x1A40
#define PFL0_SEC0_WL106 0x1A80
#define PFL0_SEC0_WL107 0x1AC0
#define PFL0_SEC0_WL108 0x1B00
#define PFL0_SEC0_WL109 0x1B40
#define PFL0_SEC0_WL110 0x1B80
#define PFL0_SEC0_WL111 0x1BC0
#define PFL0_SEC0_WL112 0x1C00
#define PFL0_SEC0_WL113 0x1C40
#define PFL0_SEC0_WL114 0x1C80
#define PFL0_SEC0_WL115 0x1CC0
#define PFL0_SEC0_WL116 0x1D00
#define PFL0_SEC0_WL117 0x1D40
#define PFL0_SEC0_WL118 0x1D80
#define PFL0_SEC0_WL119 0x1DC0
// Sector 1 -- 256 bytes -- 4 Wordlines
#define PFL0_SEC1_WL120 0x1E00
#define PFL0_SEC1_WL121 0x1E40
#define PFL0_SEC1_WL122 0x1E80
#define PFL0_SEC1_WL123 0x1EC0
// Sector 2 -- 256 bytes -- 4 Wordlines
#define PFL0_SEC2_WL124 0x1F00
#define PFL0_SEC2_WL125 0x1F40
#define PFL0_SEC2_WL126 0x1F80
#define PFL0_SEC2_WL127 0x1FC0
//###################################################################################
// WordLine startaddresses for Sectors in PFlash 1, each _WL with 64bytes
// Sector 0 -- 7.5 kbytes -- 120 Wordlines
#define PFL1_SEC0_WL00 0x2000
#define PFL1_SEC0_WL01 0x2040
#define PFL1_SEC0_WL02 0x2080
#define PFL1_SEC0_WL03 0x20C0
#define PFL1_SEC0_WL04 0x2100
#define PFL1_SEC0_WL05 0x2140
#define PFL1_SEC0_WL06 0x2180
#define PFL1_SEC0_WL07 0x21C0
#define PFL1_SEC0_WL08 0x2200
#define PFL1_SEC0_WL09 0x2240
#define PFL1_SEC0_WL10 0x2280
#define PFL1_SEC0_WL11 0x22C0
#define PFL1_SEC0_WL12 0x2300
#define PFL1_SEC0_WL13 0x2340
#define PFL1_SEC0_WL14 0x2380
#define PFL1_SEC0_WL15 0x23C0
#define PFL1_SEC0_WL16 0x2400
#define PFL1_SEC0_WL17 0x2440
#define PFL1_SEC0_WL18 0x2480
#define PFL1_SEC0_WL19 0x24C0
#define PFL1_SEC0_WL20 0x2500
#define PFL1_SEC0_WL21 0x2540
#define PFL1_SEC0_WL22 0x2580
#define PFL1_SEC0_WL23 0x25C0
#define PFL1_SEC0_WL24 0x2600
#define PFL1_SEC0_WL25 0x2640
#define PFL1_SEC0_WL26 0x2680
#define PFL1_SEC0_WL27 0x26C0
#define PFL1_SEC0_WL28 0x2700
#define PFL1_SEC0_WL29 0x2740
#define PFL1_SEC0_WL30 0x2780
#define PFL1_SEC0_WL31 0x27C0
#define PFL1_SEC0_WL32 0x2800
#define PFL1_SEC0_WL33 0x2840
#define PFL1_SEC0_WL34 0x2880
#define PFL1_SEC0_WL35 0x28C0
#define PFL1_SEC0_WL36 0x2900
#define PFL1_SEC0_WL37 0x2940
#define PFL1_SEC0_WL38 0x2980
#define PFL1_SEC0_WL39 0x29C0
#define PFL1_SEC0_WL40 0x2A00
#define PFL1_SEC0_WL41 0x2A40
#define PFL1_SEC0_WL42 0x2A80
#define PFL1_SEC0_WL43 0x2AC0
#define PFL1_SEC0_WL44 0x2B00
#define PFL1_SEC0_WL45 0x2B40
#define PFL1_SEC0_WL46 0x2B80
#define PFL1_SEC0_WL47 0x2BC0
#define PFL1_SEC0_WL48 0x2C00
#define PFL1_SEC0_WL49 0x2C40
#define PFL1_SEC0_WL50 0x2C80
#define PFL1_SEC0_WL51 0x2CC0
#define PFL1_SEC0_WL52 0x2D00
#define PFL1_SEC0_WL53 0x2D40
#define PFL1_SEC0_WL54 0x2D80
#define PFL1_SEC0_WL55 0x2DC0
#define PFL1_SEC0_WL56 0x2E00
#define PFL1_SEC0_WL57 0x2E40
#define PFL1_SEC0_WL58 0x2E80
#define PFL1_SEC0_WL59 0x2EC0
#define PFL1_SEC0_WL60 0x2F00
#define PFL1_SEC0_WL61 0x2F40
#define PFL1_SEC0_WL62 0x2F80
#define PFL1_SEC0_WL63 0x2FC0
#define PFL1_SEC0_WL64 0x3000
#define PFL1_SEC0_WL65 0x3040
#define PFL1_SEC0_WL66 0x3080
#define PFL1_SEC0_WL67 0x30C0
#define PFL1_SEC0_WL68 0x3100
#define PFL1_SEC0_WL69 0x3140
#define PFL1_SEC0_WL70 0x3180
#define PFL1_SEC0_WL71 0x31C0
#define PFL1_SEC0_WL72 0x3200
#define PFL1_SEC0_WL73 0x3240
#define PFL1_SEC0_WL74 0x3280
#define PFL1_SEC0_WL75 0x32C0
#define PFL1_SEC0_WL76 0x3300
#define PFL1_SEC0_WL77 0x3340
#define PFL1_SEC0_WL78 0x3380
#define PFL1_SEC0_WL79 0x33C0
#define PFL1_SEC0_WL80 0x3400
#define PFL1_SEC0_WL81 0x3440
#define PFL1_SEC0_WL82 0x3480
#define PFL1_SEC0_WL83 0x34C0
#define PFL1_SEC0_WL84 0x3500
#define PFL1_SEC0_WL85 0x3540
#define PFL1_SEC0_WL86 0x3580
#define PFL1_SEC0_WL87 0x35C0
#define PFL1_SEC0_WL88 0x3600
#define PFL1_SEC0_WL89 0x3640
#define PFL1_SEC0_WL90 0x3680
#define PFL1_SEC0_WL91 0x36C0
#define PFL1_SEC0_WL92 0x3700
#define PFL1_SEC0_WL93 0x3740
#define PFL1_SEC0_WL94 0x3780
#define PFL1_SEC0_WL95 0x37C0
#define PFL1_SEC0_WL96 0x3800
#define PFL1_SEC0_WL97 0x3840
#define PFL1_SEC0_WL98 0x3880
#define PFL1_SEC0_WL99 0x38C0
#define PFL1_SEC0_WL100 0x3900
#define PFL1_SEC0_WL101 0x3940
#define PFL1_SEC0_WL102 0x3980
#define PFL1_SEC0_WL103 0x39C0
#define PFL1_SEC0_WL104 0x3A00
#define PFL1_SEC0_WL105 0x3A40
#define PFL1_SEC0_WL106 0x3A80
#define PFL1_SEC0_WL107 0x3AC0
#define PFL1_SEC0_WL108 0x3B00
#define PFL1_SEC0_WL109 0x3B40
#define PFL1_SEC0_WL110 0x3B80
#define PFL1_SEC0_WL111 0x3BC0
#define PFL1_SEC0_WL112 0x3C00
#define PFL1_SEC0_WL113 0x3C40
#define PFL1_SEC0_WL114 0x3C80
#define PFL1_SEC0_WL115 0x3CC0
#define PFL1_SEC0_WL116 0x3D00
#define PFL1_SEC0_WL117 0x3D40
#define PFL1_SEC0_WL118 0x3D80
#define PFL1_SEC0_WL119 0x3DC0
// Sector 1 -- 256 bytes -- 4 Wordlines
#define PFL1_SEC1_WL120 0x3E00
#define PFL1_SEC1_WL121 0x3E40
#define PFL1_SEC1_WL122 0x3E80
#define PFL1_SEC1_WL123 0x3EC0
// Sector 2 -- 256 bytes -- 4 Wordlines
#define PFL1_SEC2_WL124 0x3F00
#define PFL1_SEC2_WL125 0x3F40
#define PFL1_SEC2_WL126 0x3F80
#define PFL1_SEC2_WL127 0x3FC0
//###################################################################################
// WordLine startaddresses for Sectors in PFlash 2, each WL with 64bytes
// Sector 0 -- 7.5 kbytes -- 120 Wordlines
#define PFL2_SEC0_WL00 0x4000
#define PFL2_SEC0_WL01 0x4040
#define PFL2_SEC0_WL02 0x4080
#define PFL2_SEC0_WL03 0x40C0
#define PFL2_SEC0_WL04 0x4100
#define PFL2_SEC0_WL05 0x4140
#define PFL2_SEC0_WL06 0x4180
#define PFL2_SEC0_WL07 0x41C0
#define PFL2_SEC0_WL08 0x4200
#define PFL2_SEC0_WL09 0x4240
#define PFL2_SEC0_WL10 0x4280
#define PFL2_SEC0_WL11 0x42C0
#define PFL2_SEC0_WL12 0x4300
#define PFL2_SEC0_WL13 0x4340
#define PFL2_SEC0_WL14 0x4380
#define PFL2_SEC0_WL15 0x43C0
#define PFL2_SEC0_WL16 0x4400
#define PFL2_SEC0_WL17 0x4440
#define PFL2_SEC0_WL18 0x4480
#define PFL2_SEC0_WL19 0x44C0
#define PFL2_SEC0_WL20 0x4500
#define PFL2_SEC0_WL21 0x4540
#define PFL2_SEC0_WL22 0x4580
#define PFL2_SEC0_WL23 0x45C0
#define PFL2_SEC0_WL24 0x4600
#define PFL2_SEC0_WL25 0x4640
#define PFL2_SEC0_WL26 0x4680
#define PFL2_SEC0_WL27 0x46C0
#define PFL2_SEC0_WL28 0x4700
#define PFL2_SEC0_WL29 0x4740
#define PFL2_SEC0_WL30 0x4780
#define PFL2_SEC0_WL31 0x47C0
#define PFL2_SEC0_WL32 0x4800
#define PFL2_SEC0_WL33 0x4840
#define PFL2_SEC0_WL34 0x4880
#define PFL2_SEC0_WL35 0x48C0
#define PFL2_SEC0_WL36 0x4900
#define PFL2_SEC0_WL37 0x4940
#define PFL2_SEC0_WL38 0x4980
#define PFL2_SEC0_WL39 0x49C0
#define PFL2_SEC0_WL40 0x4A00
#define PFL2_SEC0_WL41 0x4A40
#define PFL2_SEC0_WL42 0x4A80
#define PFL2_SEC0_WL43 0x4AC0
#define PFL2_SEC0_WL44 0x4B00
#define PFL2_SEC0_WL45 0x4B40
#define PFL2_SEC0_WL46 0x4B80
#define PFL2_SEC0_WL47 0x4BC0
#define PFL2_SEC0_WL48 0x4C00
#define PFL2_SEC0_WL49 0x4C40
#define PFL2_SEC0_WL50 0x4C80
#define PFL2_SEC0_WL51 0x4CC0
#define PFL2_SEC0_WL52 0x4D00
#define PFL2_SEC0_WL53 0x4D40
#define PFL2_SEC0_WL54 0x4D80
#define PFL2_SEC0_WL55 0x4DC0
#define PFL2_SEC0_WL56 0x4E00
#define PFL2_SEC0_WL57 0x4E40
#define PFL2_SEC0_WL58 0x4E80
#define PFL2_SEC0_WL59 0x4EC0
#define PFL2_SEC0_WL60 0x4F00
#define PFL2_SEC0_WL61 0x4F40
#define PFL2_SEC0_WL62 0x4F80
#define PFL2_SEC0_WL63 0x4FC0
#define PFL2_SEC0_WL64 0x5000
#define PFL2_SEC0_WL65 0x5040
#define PFL2_SEC0_WL66 0x5080
#define PFL2_SEC0_WL67 0x50C0
#define PFL2_SEC0_WL68 0x5100
#define PFL2_SEC0_WL69 0x5140
#define PFL2_SEC0_WL70 0x5180
#define PFL2_SEC0_WL71 0x51C0
#define PFL2_SEC0_WL72 0x5200
#define PFL2_SEC0_WL73 0x5240
#define PFL2_SEC0_WL74 0x5280
#define PFL2_SEC0_WL75 0x52C0
#define PFL2_SEC0_WL76 0x5300
#define PFL2_SEC0_WL77 0x5340
#define PFL2_SEC0_WL78 0x5380
#define PFL2_SEC0_WL79 0x53C0
#define PFL2_SEC0_WL80 0x5400
#define PFL2_SEC0_WL81 0x5440
#define PFL2_SEC0_WL82 0x5480
#define PFL2_SEC0_WL83 0x54C0
#define PFL2_SEC0_WL84 0x5500
#define PFL2_SEC0_WL85 0x5540
#define PFL2_SEC0_WL86 0x5580
#define PFL2_SEC0_WL87 0x55C0
#define PFL2_SEC0_WL88 0x5600
#define PFL2_SEC0_WL89 0x5640
#define PFL2_SEC0_WL90 0x5680
#define PFL2_SEC0_WL91 0x56C0
#define PFL2_SEC0_WL92 0x5700
#define PFL2_SEC0_WL93 0x5740
#define PFL2_SEC0_WL94 0x5780
#define PFL2_SEC0_WL95 0x57C0
#define PFL2_SEC0_WL96 0x5800
#define PFL2_SEC0_WL97 0x5840
#define PFL2_SEC0_WL98 0x5880
#define PFL2_SEC0_WL99 0x58C0
#define PFL2_SEC0_WL100 0x5900
#define PFL2_SEC0_WL101 0x5940
#define PFL2_SEC0_WL102 0x5980
#define PFL2_SEC0_WL103 0x59C0
#define PFL2_SEC0_WL104 0x5A00
#define PFL2_SEC0_WL105 0x5A40
#define PFL2_SEC0_WL106 0x5A80
#define PFL2_SEC0_WL107 0x5AC0
#define PFL2_SEC0_WL108 0x5B00
#define PFL2_SEC0_WL109 0x5B40
#define PFL2_SEC0_WL110 0x5B80
#define PFL2_SEC0_WL111 0x5BC0
#define PFL2_SEC0_WL112 0x5C00
#define PFL2_SEC0_WL113 0x5C40
#define PFL2_SEC0_WL114 0x5C80
#define PFL2_SEC0_WL115 0x5CC0
#define PFL2_SEC0_WL116 0x5D00
#define PFL2_SEC0_WL117 0x5D40
#define PFL2_SEC0_WL118 0x5D80
#define PFL2_SEC0_WL119 0x5DC0
// Sector 1 -- 256 bytes -- 4 Wordlines
#define PFL2_SEC1_WL120 0x5E00
#define PFL2_SEC1_WL121 0x5E40
#define PFL2_SEC1_WL122 0x5E80
#define PFL2_SEC1_WL123 0x5EC0
// Sector 2 -- 256 bytes -- 4 Wordlines
#define PFL2_SEC2_WL124 0x5F00
#define PFL2_SEC2_WL125 0x5F40
#define PFL2_SEC2_WL126 0x5F80
#define PFL2_SEC2_WL127 0x5FC0
//###################################################################################
// WordLine startaddresses for sectors in DFlash 0, each WL with 32bytes
// DFlash 0 address is also mirrorred to 0x7xxx
// Sector 0 -- 1024 bytes -- 32 Wordlines
#define DFL0_SEC0_WL00 0xA000
#define DFL0_SEC0_WL01 0xA020
#define DFL0_SEC0_WL02 0xA040
#define DFL0_SEC0_WL03 0xA060
#define DFL0_SEC0_WL04 0xA080
#define DFL0_SEC0_WL05 0xA0A0
#define DFL0_SEC0_WL06 0xA0C0
#define DFL0_SEC0_WL07 0xA0E0
#define DFL0_SEC0_WL08 0xA100
#define DFL0_SEC0_WL09 0xA120
#define DFL0_SEC0_WL10 0xA140
#define DFL0_SEC0_WL11 0xA160
#define DFL0_SEC0_WL12 0xA180
#define DFL0_SEC0_WL13 0xA1A0
#define DFL0_SEC0_WL14 0xA1C0
#define DFL0_SEC0_WL15 0xA1E0
#define DFL0_SEC0_WL16 0xA200
#define DFL0_SEC0_WL17 0xA220
#define DFL0_SEC0_WL18 0xA240
#define DFL0_SEC0_WL19 0xA260
#define DFL0_SEC0_WL20 0xA280
#define DFL0_SEC0_WL21 0xA2A0
#define DFL0_SEC0_WL22 0xA2C0
#define DFL0_SEC0_WL23 0xA2E0
#define DFL0_SEC0_WL24 0xA300
#define DFL0_SEC0_WL25 0xA320
#define DFL0_SEC0_WL26 0xA340
#define DFL0_SEC0_WL27 0xA360
#define DFL0_SEC0_WL28 0xA380
#define DFL0_SEC0_WL29 0xA3A0
#define DFL0_SEC0_WL30 0xA3C0
#define DFL0_SEC0_WL31 0xA3E0
// Sector 1 -- 1024 bytes -- 32 Wordlines
#define DFL0_SEC1_WL32 0xA400
#define DFL0_SEC1_WL33 0xA420
#define DFL0_SEC1_WL34 0xA440
#define DFL0_SEC1_WL35 0xA460
#define DFL0_SEC1_WL36 0xA480
#define DFL0_SEC1_WL37 0xA4A0
#define DFL0_SEC1_WL38 0xA4C0
#define DFL0_SEC1_WL39 0xA4E0
#define DFL0_SEC1_WL40 0xA500
#define DFL0_SEC1_WL41 0xA520
#define DFL0_SEC1_WL42 0xA540
#define DFL0_SEC1_WL43 0xA560
#define DFL0_SEC1_WL44 0xA580
#define DFL0_SEC1_WL45 0xA5A0
#define DFL0_SEC1_WL46 0xA5C0
#define DFL0_SEC1_WL47 0xA5E0
#define DFL0_SEC1_WL48 0xA600
#define DFL0_SEC1_WL49 0xA620
#define DFL0_SEC1_WL50 0xA640
#define DFL0_SEC1_WL51 0xA660
#define DFL0_SEC1_WL52 0xA680
#define DFL0_SEC1_WL53 0xA6A0
#define DFL0_SEC1_WL54 0xA6C0
#define DFL0_SEC1_WL55 0xA6E0
#define DFL0_SEC1_WL56 0xA700
#define DFL0_SEC1_WL57 0xA720
#define DFL0_SEC1_WL58 0xA740
#define DFL0_SEC1_WL59 0xA760
#define DFL0_SEC1_WL60 0xA780
#define DFL0_SEC1_WL61 0xA7A0
#define DFL0_SEC1_WL62 0xA7C0
#define DFL0_SEC1_WL63 0xA7E0
// Sector 2 -- 512 bytes -- 16 Wordlines
#define DFL0_SEC2_WL64 0xA800
#define DFL0_SEC2_WL65 0xA820
#define DFL0_SEC2_WL66 0xA840
#define DFL0_SEC2_WL67 0xA860
#define DFL0_SEC2_WL68 0xA880
#define DFL0_SEC2_WL69 0xA8A0
#define DFL0_SEC2_WL70 0xA8C0
#define DFL0_SEC2_WL71 0xA8E0
#define DFL0_SEC2_WL72 0xA900
#define DFL0_SEC2_WL73 0xA920
#define DFL0_SEC2_WL74 0xA940
#define DFL0_SEC2_WL75 0xA960
#define DFL0_SEC2_WL76 0xA980
#define DFL0_SEC2_WL77 0xA9A0
#define DFL0_SEC2_WL78 0xA9C0
#define DFL0_SEC2_WL79 0xA9E0
// Sector 3 -- 512 bytes -- 16 Wordlines
#define DFL0_SEC3_WL80 0xAA00
#define DFL0_SEC3_WL81 0xAA20
#define DFL0_SEC3_WL82 0xAA40
#define DFL0_SEC3_WL83 0xAA60
#define DFL0_SEC3_WL84 0xAA80
#define DFL0_SEC3_WL85 0xAAA0
#define DFL0_SEC3_WL86 0xAAC0
#define DFL0_SEC3_WL87 0xAAE0
#define DFL0_SEC3_WL88 0xAB00
#define DFL0_SEC3_WL89 0xAB20
#define DFL0_SEC3_WL90 0xAB40
#define DFL0_SEC3_WL91 0xAB60
#define DFL0_SEC3_WL92 0xAB80
#define DFL0_SEC3_WL93 0xABA0
#define DFL0_SEC3_WL94 0xABC0
#define DFL0_SEC3_WL95 0xABE0
// Sector 4 -- 256 bytes -- 8 Wordlines
#define DFL0_SEC4_WL96 0xAC00
#define DFL0_SEC4_WL97 0xAC20
#define DFL0_SEC4_WL98 0xAC40
#define DFL0_SEC4_WL99 0xAC60
#define DFL0_SEC4_WL100 0xAC80
#define DFL0_SEC4_WL101 0xACA0
#define DFL0_SEC4_WL102 0xACC0
#define DFL0_SEC4_WL103 0xACE0
// Sector 5 -- 256 bytes -- 8 Wordlines
#define DFL0_SEC5_WL104 0xAD00
#define DFL0_SEC5_WL105 0xAD20
#define DFL0_SEC5_WL106 0xAD40
#define DFL0_SEC5_WL107 0xAD60
#define DFL0_SEC5_WL108 0xAD80
#define DFL0_SEC5_WL109 0xADA0
#define DFL0_SEC5_WL110 0xADC0
#define DFL0_SEC5_WL111 0xADE0
// Sector 6 -- 128 bytes -- 4 Wordlines
#define DFL0_SEC6_WL112 0xAE00
#define DFL0_SEC6_WL113 0xAE20
#define DFL0_SEC6_WL114 0xAE40
#define DFL0_SEC6_WL115 0xAE60
// Sector 7 -- 128 bytes -- 4 Wordlines
#define DFL0_SEC7_WL116 0xAE80
#define DFL0_SEC7_WL117 0xAEA0
#define DFL0_SEC7_WL118 0xAEC0
#define DFL0_SEC7_WL119 0xAEE0
// Sector 8 -- 128 bytes -- 4 Wordlines
#define DFL0_SEC8_WL120 0xAF00
#define DFL0_SEC8_WL121 0xAF20
#define DFL0_SEC8_WL122 0xAF40
#define DFL0_SEC8_WL123 0xAF60
// Sector 9 -- 128 bytes -- 4 Wordlines
#define DFL0_SEC9_WL124 0xAF80
#define DFL0_SEC9_WL125 0xAFA0
#define DFL0_SEC9_WL126 0xAFC0
#define DFL0_SEC9_WL127 0xAFE0
//###################################################################################
// WordLine startaddresses for sectors in DFlash 1, each WL with 32bytes
// DFlash 0 address is also mirrorred to 0x6xxx
// Sector 0 -- 1024 bytes -- 32 Wordlines
#define DFL1_SEC0_WL00 0xA000
#define DFL1_SEC0_WL01 0xA020
#define DFL1_SEC0_WL02 0xA040
#define DFL1_SEC0_WL03 0xA060
#define DFL1_SEC0_WL04 0xA080
#define DFL1_SEC0_WL05 0xA0A0
#define DFL1_SEC0_WL06 0xA0C0
#define DFL1_SEC0_WL07 0xA0E0
#define DFL1_SEC0_WL08 0xA100
#define DFL1_SEC0_WL09 0xA120
#define DFL1_SEC0_WL10 0xA140
#define DFL1_SEC0_WL11 0xA160
#define DFL1_SEC0_WL12 0xA180
#define DFL1_SEC0_WL13 0xA1A0
#define DFL1_SEC0_WL14 0xA1C0
#define DFL1_SEC0_WL15 0xA1E0
#define DFL1_SEC0_WL16 0xA200
#define DFL1_SEC0_WL17 0xA220
#define DFL1_SEC0_WL18 0xA240
#define DFL1_SEC0_WL19 0xA260
#define DFL1_SEC0_WL20 0xA280
#define DFL1_SEC0_WL21 0xA2A0
#define DFL1_SEC0_WL22 0xA2C0
#define DFL1_SEC0_WL23 0xA2E0
#define DFL1_SEC0_WL24 0xA300
#define DFL1_SEC0_WL25 0xA320
#define DFL1_SEC0_WL26 0xA340
#define DFL1_SEC0_WL27 0xA360
#define DFL1_SEC0_WL28 0xA380
#define DFL1_SEC0_WL29 0xA3A0
#define DFL1_SEC0_WL30 0xA3C0
#define DFL1_SEC0_WL31 0xA3E0
// Sector 1 -- 1024 bytes -- 32 Wordlines
#define DFL1_SEC1_WL32 0xA400
#define DFL1_SEC1_WL33 0xA420
#define DFL1_SEC1_WL34 0xA440
#define DFL1_SEC1_WL35 0xA460
#define DFL1_SEC1_WL36 0xA480
#define DFL1_SEC1_WL37 0xA4A0
#define DFL1_SEC1_WL38 0xA4C0
#define DFL1_SEC1_WL39 0xA4E0
#define DFL1_SEC1_WL40 0xA500
#define DFL1_SEC1_WL41 0xA520
#define DFL1_SEC1_WL42 0xA540
#define DFL1_SEC1_WL43 0xA560
#define DFL1_SEC1_WL44 0xA580
#define DFL1_SEC1_WL45 0xA5A0
#define DFL1_SEC1_WL46 0xA5C0
#define DFL1_SEC1_WL47 0xA5E0
#define DFL1_SEC1_WL48 0xA600
#define DFL1_SEC1_WL49 0xA620
#define DFL1_SEC1_WL50 0xA640
#define DFL1_SEC1_WL51 0xA660
#define DFL1_SEC1_WL52 0xA680
#define DFL1_SEC1_WL53 0xA6A0
#define DFL1_SEC1_WL54 0xA6C0
#define DFL1_SEC1_WL55 0xA6E0
#define DFL1_SEC1_WL56 0xA700
#define DFL1_SEC1_WL57 0xA720
#define DFL1_SEC1_WL58 0xA740
#define DFL1_SEC1_WL59 0xA760
#define DFL1_SEC1_WL60 0xA780
#define DFL1_SEC1_WL61 0xA7A0
#define DFL1_SEC1_WL62 0xA7C0
#define DFL1_SEC1_WL63 0xA7E0
// Sector 2 -- 512 bytes -- 16 Wordlines
#define DFL1_SEC2_WL64 0xA800
#define DFL1_SEC2_WL65 0xA820
#define DFL1_SEC2_WL66 0xA840
#define DFL1_SEC2_WL67 0xA860
#define DFL1_SEC2_WL68 0xA880
#define DFL1_SEC2_WL69 0xA8A0
#define DFL1_SEC2_WL70 0xA8C0
#define DFL1_SEC2_WL71 0xA8E0
#define DFL1_SEC2_WL72 0xA900
#define DFL1_SEC2_WL73 0xA920
#define DFL1_SEC2_WL74 0xA940
#define DFL1_SEC2_WL75 0xA960
#define DFL1_SEC2_WL76 0xA980
#define DFL1_SEC2_WL77 0xA9A0
#define DFL1_SEC2_WL78 0xA9C0
#define DFL1_SEC2_WL79 0xA9E0
// Sector 3 -- 512 bytes -- 16 Wordlines
#define DFL1_SEC3_WL80 0xAA00
#define DFL1_SEC3_WL81 0xAA20
#define DFL1_SEC3_WL82 0xAA40
#define DFL1_SEC3_WL83 0xAA60
#define DFL1_SEC3_WL84 0xAA80
#define DFL1_SEC3_WL85 0xAAA0
#define DFL1_SEC3_WL86 0xAAC0
#define DFL1_SEC3_WL87 0xAAE0
#define DFL1_SEC3_WL88 0xAB00
#define DFL1_SEC3_WL89 0xAB20
#define DFL1_SEC3_WL90 0xAB40
#define DFL1_SEC3_WL91 0xAB60
#define DFL1_SEC3_WL92 0xAB80
#define DFL1_SEC3_WL93 0xABA0
#define DFL1_SEC3_WL94 0xABC0
#define DFL1_SEC3_WL95 0xABE0
// Sector 4 -- 256 bytes -- 8 Wordlines
#define DFL1_SEC4_WL96 0xAC00
#define DFL1_SEC4_WL97 0xAC20
#define DFL1_SEC4_WL98 0xAC40
#define DFL1_SEC4_WL99 0xAC60
#define DFL1_SEC4_WL100 0xAC80
#define DFL1_SEC4_WL101 0xACA0
#define DFL1_SEC4_WL102 0xACC0
#define DFL1_SEC4_WL103 0xACE0
// Sector 5 -- 256 bytes -- 8 Wordlines
#define DFL1_SEC5_WL104 0xAD00
#define DFL1_SEC5_WL105 0xAD20
#define DFL1_SEC5_WL106 0xAD40
#define DFL1_SEC5_WL107 0xAD60
#define DFL1_SEC5_WL108 0xAD80
#define DFL1_SEC5_WL109 0xADA0
#define DFL1_SEC5_WL110 0xADC0
#define DFL1_SEC5_WL111 0xADE0
// Sector 6 -- 128 bytes -- 4 Wordlines
#define DFL1_SEC6_WL112 0xAE00
#define DFL1_SEC6_WL113 0xAE20
#define DFL1_SEC6_WL114 0xAE40
#define DFL1_SEC6_WL115 0xAE60
// Sector 7 -- 128 bytes -- 4 Wordlines
#define DFL1_SEC7_WL116 0xAE80
#define DFL1_SEC7_WL117 0xAEA0
#define DFL1_SEC7_WL118 0xAEC0
#define DFL1_SEC7_WL119 0xAEE0
// Sector 8 -- 128 bytes -- 4 Wordlines
#define DFL1_SEC8_WL120 0xAF00
#define DFL1_SEC8_WL121 0xAF20
#define DFL1_SEC8_WL122 0xAF40
#define DFL1_SEC8_WL123 0xAF60
// Sector 9 -- 128 bytes -- 4 Wordlines
#define DFL1_SEC9_WL124 0xAF80
#define DFL1_SEC9_WL125 0xAFA0
#define DFL1_SEC9_WL126 0xAFC0
#define DFL1_SEC9_WL127 0xAFE0
#endif // #ifndef __XC88x_FLADDR_H__