📄 am29pdl127h_x16x2.c
字号:
#include "AMDFlash.h"
U32 AM29PDL127H_x16x2_MemoryMap[] = {
0x00000000, /* 0 */
0x00004000, /* 1 */
0x00008000, /* 2 */
0x0000C000, /* 3 */
0x00010000, /* 4 */
0x00014000, /* 5 */
0x00018000, /* 6 */
0x0001C000, /* 7 */
0x00020000, /* 8 */
0x00040000, /* 9 */
0x00060000, /* 10 */
0x00080000, /* 11 */
0x000A0000, /* 12 */
0x000C0000, /* 13 */
0x000E0000, /* 14 */
0x00100000, /* 15 */
0x00120000, /* 16 */
0x00140000, /* 17 */
0x00160000, /* 18 */
0x00180000, /* 19 */
0x001A0000, /* 20 */
0x001C0000, /* 21 */
0x001E0000, /* 22 */
0x00200000, /* 23 */
0x00220000, /* 24 */
0x00240000, /* 25 */
0x00260000, /* 26 */
0x00280000, /* 27 */
0x002A0000, /* 28 */
0x002C0000, /* 29 */
0x002E0000, /* 30 */
0x00300000, /* 31 */
0x00320000, /* 32 */
0x00340000, /* 33 */
0x00360000, /* 34 */
0x00380000, /* 35 */
0x003A0000, /* 36 */
0x003C0000, /* 37 */
0x003E0000, /* 38 */
0x00400000, /* 39 */
0x00420000, /* 40 */
0x00440000, /* 41 */
0x00460000, /* 42 */
0x00480000, /* 43 */
0x004A0000, /* 44 */
0x004C0000, /* 45 */
0x004E0000, /* 46 */
0x00500000, /* 47 */
0x00520000, /* 48 */
0x00540000, /* 49 */
0x00560000, /* 50 */
0x00580000, /* 51 */
0x005A0000, /* 52 */
0x005C0000, /* 53 */
0x005E0000, /* 54 */
0x00600000, /* 55 */
0x00620000, /* 56 */
0x00640000, /* 57 */
0x00660000, /* 58 */
0x00680000, /* 59 */
0x006A0000, /* 60 */
0x006C0000, /* 61 */
0x006E0000, /* 62 */
0x00700000, /* 63 */
0x00720000, /* 64 */
0x00740000, /* 65 */
0x00760000, /* 66 */
0x00780000, /* 67 */
0x007A0000, /* 68 */
0x007C0000, /* 69 */
0x007E0000, /* 70 */
0x00800000, /* 71 */
0x00820000, /* 72 */
0x00840000, /* 73 */
0x00860000, /* 74 */
0x00880000, /* 75 */
0x008A0000, /* 76 */
0x008C0000, /* 77 */
0x008E0000, /* 78 */
0x00900000, /* 79 */
0x00920000, /* 80 */
0x00940000, /* 81 */
0x00960000, /* 82 */
0x00980000, /* 83 */
0x009A0000, /* 84 */
0x009C0000, /* 85 */
0x009E0000, /* 86 */
0x00A00000, /* 87 */
0x00A20000, /* 88 */
0x00A40000, /* 89 */
0x00A60000, /* 90 */
0x00A80000, /* 91 */
0x00AA0000, /* 92 */
0x00AC0000, /* 93 */
0x00AE0000, /* 94 */
0x00B00000, /* 95 */
0x00B20000, /* 96 */
0x00B40000, /* 97 */
0x00B60000, /* 98 */
0x00B80000, /* 99 */
0x00BA0000, /* 100 */
0x00BC0000, /* 101 */
0x00BE0000, /* 102 */
0x00C00000, /* 103 */
0x00C20000, /* 104 */
0x00C40000, /* 105 */
0x00C60000, /* 106 */
0x00C80000, /* 107 */
0x00CA0000, /* 108 */
0x00CC0000, /* 109 */
0x00CE0000, /* 110 */
0x00D00000, /* 111 */
0x00D20000, /* 112 */
0x00D40000, /* 113 */
0x00D60000, /* 114 */
0x00D80000, /* 115 */
0x00DA0000, /* 116 */
0x00DC0000, /* 117 */
0x00DE0000, /* 118 */
0x00E00000, /* 119 */
0x00E20000, /* 120 */
0x00E40000, /* 121 */
0x00E60000, /* 122 */
0x00E80000, /* 123 */
0x00EA0000, /* 124 */
0x00EC0000, /* 125 */
0x00EE0000, /* 126 */
0x00F00000, /* 127 */
0x00F20000, /* 128 */
0x00F40000, /* 129 */
0x00F60000, /* 130 */
0x00F80000, /* 131 */
0x00FA0000, /* 132 */
0x00FC0000, /* 133 */
0x00FE0000, /* 134 */
0x01000000, /* 135 */
0x01020000, /* 136 */
0x01040000, /* 137 */
0x01060000, /* 138 */
0x01080000, /* 139 */
0x010A0000, /* 140 */
0x010C0000, /* 141 */
0x010E0000, /* 142 */
0x01100000, /* 143 */
0x01120000, /* 144 */
0x01140000, /* 145 */
0x01160000, /* 146 */
0x01180000, /* 147 */
0x011A0000, /* 148 */
0x011C0000, /* 149 */
0x011E0000, /* 150 */
0x01200000, /* 151 */
0x01220000, /* 152 */
0x01240000, /* 153 */
0x01260000, /* 154 */
0x01280000, /* 155 */
0x012A0000, /* 156 */
0x012C0000, /* 157 */
0x012E0000, /* 158 */
0x01300000, /* 159 */
0x01320000, /* 160 */
0x01340000, /* 161 */
0x01360000, /* 162 */
0x01380000, /* 163 */
0x013A0000, /* 164 */
0x013C0000, /* 165 */
0x013E0000, /* 166 */
0x01400000, /* 167 */
0x01420000, /* 168 */
0x01440000, /* 169 */
0x01460000, /* 170 */
0x01480000, /* 171 */
0x014A0000, /* 172 */
0x014C0000, /* 173 */
0x014E0000, /* 174 */
0x01500000, /* 175 */
0x01520000, /* 176 */
0x01540000, /* 177 */
0x01560000, /* 178 */
0x01580000, /* 179 */
0x015A0000, /* 180 */
0x015C0000, /* 181 */
0x015E0000, /* 182 */
0x01600000, /* 183 */
0x01620000, /* 184 */
0x01640000, /* 185 */
0x01660000, /* 186 */
0x01680000, /* 187 */
0x016A0000, /* 188 */
0x016C0000, /* 189 */
0x016E0000, /* 190 */
0x01700000, /* 191 */
0x01720000, /* 192 */
0x01740000, /* 193 */
0x01760000, /* 194 */
0x01780000, /* 195 */
0x017A0000, /* 196 */
0x017C0000, /* 197 */
0x017E0000, /* 198 */
0x01800000, /* 199 */
0x01820000, /* 200 */
0x01840000, /* 201 */
0x01860000, /* 202 */
0x01880000, /* 203 */
0x018A0000, /* 204 */
0x018C0000, /* 205 */
0x018E0000, /* 206 */
0x01900000, /* 207 */
0x01920000, /* 208 */
0x01940000, /* 209 */
0x01960000, /* 210 */
0x01980000, /* 211 */
0x019A0000, /* 212 */
0x019C0000, /* 213 */
0x019E0000, /* 214 */
0x01A00000, /* 215 */
0x01A20000, /* 216 */
0x01A40000, /* 217 */
0x01A60000, /* 218 */
0x01A80000, /* 219 */
0x01AA0000, /* 220 */
0x01AC0000, /* 221 */
0x01AE0000, /* 222 */
0x01B00000, /* 223 */
0x01B20000, /* 224 */
0x01B40000, /* 225 */
0x01B60000, /* 226 */
0x01B80000, /* 227 */
0x01BA0000, /* 228 */
0x01BC0000, /* 229 */
0x01BE0000, /* 230 */
0x01C00000, /* 231 */
0x01C20000, /* 232 */
0x01C40000, /* 233 */
0x01C60000, /* 234 */
0x01C80000, /* 235 */
0x01CA0000, /* 236 */
0x01CC0000, /* 237 */
0x01CE0000, /* 238 */
0x01D00000, /* 239 */
0x01D20000, /* 240 */
0x01D40000, /* 241 */
0x01D60000, /* 242 */
0x01D80000, /* 243 */
0x01DA0000, /* 244 */
0x01DC0000, /* 245 */
0x01DE0000, /* 246 */
0x01E00000, /* 247 */
0x01E20000, /* 248 */
0x01E40000, /* 249 */
0x01E60000, /* 250 */
0x01E80000, /* 251 */
0x01EA0000, /* 252 */
0x01EC0000, /* 253 */
0x01EE0000, /* 254 */
0x01F00000, /* 255 */
0x01F20000, /* 256 */
0x01F40000, /* 257 */
0x01F60000, /* 258 */
0x01F80000, /* 259 */
0x01FA0000, /* 260 */
0x01FC0000, /* 261 */
0x01FE0000, /* 262 */
0x02000000, /* 263 */
0x02020000, /* 264 */
0x02040000, /* 265 */
0x02060000, /* 266 */
0x02080000, /* 267 */
0x020A0000, /* 268 */
0x020C0000, /* 269 */
0x020E0000 /* End Address */
};
void AM29PDL127H_x16x2_GenerateMemoryMap(void)
{
U32 i=0;
U32 address=0;
while(i<8){
// EUARTputString("0x%8.8X, ", address); Commented out by Aaron, just for test
// EUARTputString("/* %3d */\n", i);
address += 16*1024;
i++;
}
EUARTputString("\n");
while(i<271) {
// EUARTputString("0x%8.8X, ", address);
// EUARTputString("/* %3d */\n", i);
address += 128*1024;
i++;
}
}
U32 AM29PDL127H_x16x2_BlockNumber(void)
{
return (sizeof(AM29PDL127H_x16x2_MemoryMap)/sizeof(U32))-1 ;
}
U32 AM29PDL127H_x16x2_Reset(U32 BaseAddress)
{
*(volatile U32 *)(BaseAddress) = 0x00F00F0;
return 0;
}
U32 AM29PDL127H_x16x2_BlockLock(U32 BaseAddress, U32 Offset)
{
return 0;
}
U32 AM29PDL127H_x16x2_BlockUnlock(U32 BaseAddress, U32 Offset)
{
return 0;
}
U32 AM29PDL127H_x16x2_BlockErase(U32 BaseAddress, U32 Offset)
{
*(volatile U32 *)(BaseAddress + (0x555<<2)) = 0x00AA00AA;
*(volatile U32 *)(BaseAddress + (0x2AA<<2)) = 0x00550055;
*(volatile U32 *)(BaseAddress + (0x555<<2)) = 0x00800080;
*(volatile U32 *)(BaseAddress + (0x555<<2)) = 0x00AA00AA;
*(volatile U32 *)(BaseAddress + (0x2AA<<2)) = 0x00550055;
*(volatile U32 *)(BaseAddress + Offset) = 0x00300030;
return 0;
}
U32 AM29PDL127H_x16x2_BlockEraseComplete(U32 BaseAddress, U32 Offset)
{
if( *(volatile U32 *)(BaseAddress+Offset) == 0xFFFFFFFF )
return STATUS_READY;
else
return 0;
}
U32 AM29PDL127H_x16x2_WriteCommand(U32 BaseAddress, U32 Offset)
{
*(volatile U32 *)(BaseAddress + (0x555<<2)) = 0x00AA00AA;
*(volatile U32 *)(BaseAddress + (0x2AA<<2)) = 0x00550055;
*(volatile U32 *)(BaseAddress + (0x555<<2)) = 0x00A000A0;
return 0;
}
U32 AM29PDL127H_x16x2_WriteSetup(U32 BaseAddress, U32 Offset)
{
return 0;
}
U32 AM29PDL127H_x16x2_Write(U32 BaseAddress, U32 Offset, void* pData)
{
*(volatile U32 *)(BaseAddress+Offset) = *(volatile U32 *)pData;
return 0;
}
U32 AM29PDL127H_x16x2_WriteComplete(U32 BaseAddress, U32 Offset, void* pData)
{
if( *(volatile U32 *)(BaseAddress+Offset) == *(volatile U32 *)pData )
return STATUS_READY;
else
return 0;
}
U32 AM29PDL127H_x16x2_EnterReadMode(U32 BaseAddress, U32 Offset)
{
return 0;
}
flash_type_t AM29PDL127H_x16x2 = {
32, /* bus width */
AM29PDL127H_x16x2_MemoryMap,
AM29PDL127H_x16x2_BlockNumber,
AM29PDL127H_x16x2_Reset,
AM29PDL127H_x16x2_BlockLock,
AM29PDL127H_x16x2_BlockUnlock,
AM29PDL127H_x16x2_BlockErase,
AM29PDL127H_x16x2_BlockEraseComplete,
AM29PDL127H_x16x2_WriteCommand,
AM29PDL127H_x16x2_WriteSetup,
AM29PDL127H_x16x2_Write,
AM29PDL127H_x16x2_WriteComplete,
AM29PDL127H_x16x2_EnterReadMode
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -