📄 flash32.h
字号:
/* Header for 32-bit flash position independent code (PIC) * * This file defines the command sequence operations to program * two AMD 29LV800B flash memory devices (in 16-bit mode) which * are configured together to behave as one 32-bit memory device. * * General notice: * This code is part of a boot-monitor package developed as a generic base * platform for embedded system designs. As such, it is likely to be * distributed to various projects beyond the control of the original * author. Please notify the author of any enhancements made or bugs found * so that all may benefit from the changes. In addition, notification back * to the author will allow the new user to pick up changes that may have * been made by other users after this version of the code was distributed. * * Author: Ed Sutter * email: esutter@lucent.com (home: lesutter@worldnet.att.net) * phone: 908-582-2351 (home: 908-889-5161) * * Mar 1999 Modified for 2 chips in parallel (32-bit) by Robert Snyder * */#define ftype volatile unsigned long#define NotAligned(ptr) ((unsigned long)ptr & 3)/* * The following commands are used to program two AMD 29LV800B devices, * each in 16-bit mode, combined to effectively create a 32-bit part. * Chip address bits A18-A0 map to PPC address bits 11 - 29. Bits A18-A11 * (11 - 18) are "don't care" for unlock and command cycles except when * Program Address or Sector Address are needed. The upper data byte * DQ15-DQ8 is "don't care" in each device except when supplying program * data. * * Because of this, the write to 0x555 is the same as to 0x5555 and the * write to 0x2aa is the same as to 0xaaaa seen in other similar routines. */#define Write_aa_to_555() (*(ftype *)(fdev->base+(0x555<<2)) = 0x00aa00aa)#define Write_80_to_555() (*(ftype *)(fdev->base+(0x555<<2)) = 0x00800080)#define Write_a0_to_555() (*(ftype *)(fdev->base+(0x555<<2)) = 0x00a000a0)#define Write_f0_to_555() (*(ftype *)(fdev->base+(0x555<<2)) = 0x00f000f0)#define Write_20_to_555() (*(ftype *)(fdev->base+(0x555<<2)) = 0x00200020)#define Write_90_to_555() (*(ftype *)(fdev->base+(0x555<<2)) = 0x00900090)#define Write_00_to_555() (*(ftype *)(fdev->base+(0x555<<2)) = 0x00000000)#define Write_55_to_2aa() (*(ftype *)(fdev->base+(0x2aa<<2)) = 0x00550055)#define Write_30_to_(add) (*(ftype *)add = 0x00300030)#define Read_000() (*(ftype *)(fdev->base+(0x000<<2)))#define Read_001() (*(ftype *)(fdev->base+(0x001<<2)))#define Read_555() (*(ftype *)(fdev->base+(0x555<<2)))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -