📄 hy29lv160.c
字号:
//------------------------------------------------------------------------------// 拳老疙 : hy29lv160.c// 橇肺璃飘 : jflash-s3c44b0x// 汲 疙 : jflash-s3c44b0x 狼 HY29LV160 Flash 贸府 风凭捞促. // // 盔历磊 : 蜡康芒 (林)力捞村叼矩萍 frog@falinux.com// 累己老 : 2003斥 5岿 17老// 荐沥 : 辣傣硅 (林)硅崔沥焊烹脚 dadpeat@naver.com// 荐沥老 : 2003 斥 9岿 7老// 盔历累鼻 : (林)力捞村叼矩萍 // 捞 橇肺弊伐 筋胶狼 俺累 棺 犁 硅器甫 倾侩 钦聪促.// 俺累等 橇肺弊伐狼 惑诀利 捞侩档 倾侩 钦聪促. // 俺累等 橇肺弊伐狼 傍俺绰 鞘夸窍促搁 窍瘤 臼酒档 邓聪促. // 犁历累鼻 : GPL俊 蝶抚聪促.// 林 狼 : Flash 包访 窃荐狼 address 绰 16bit word 窜困捞促. // byte 窜困肺 积阿窍瘤 臼档废 林狼官恩.//------------------------------------------------------------------------------//******************************************************************************//// 庆歹 沥狼////******************************************************************************#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <stdlib.h>#include <asm/io.h>#include <unistd.h>#include <string.h>#include <memory.h>#include "jtag.h"#include "arm7tdmi.h"#include "hy29lv160.h"int progress_pos = 0;unsigned int *HY29LV160_SA; unsigned int HY29LV160T_SA[] ={ 0x00000, 0x08000, 0x10000, 0x18000, 0x20000, 0x28000, 0x30000, 0x38000, 0x40000, 0x48000, 0x50000, 0x58000, 0x60000, 0x68000, 0x70000, 0x78000, 0x80000, 0x88000, 0x90000, 0x98000, 0xA0000, 0xA8000, 0xB0000, 0xB8000, 0xC0000, 0xC8000, 0xD0000, 0xD8000, 0xE0000, 0xE8000, 0xF0000, 0xF8000, 0xFC000, 0xFD000, 0xFE000, 0x100000};unsigned int HY29LV160B_SA[] ={ 0x00000, 0x02000, 0x03000, 0x04000, 0x08000, 0x10000, 0x18000, 0x20000, 0x28000, 0x30000, 0x38000, 0x40000, 0x48000, 0x50000, 0x58000, 0x60000, 0x68000, 0x70000, 0x78000, 0x80000, 0x88000, 0x90000, 0x98000, 0xA0000, 0xA8000, 0xB0000, 0xB8000, 0xC0000, 0xC8000, 0xD0000, 0xD8000, 0xE0000, 0xE8000, 0xF0000, 0xF8000, 0x100000};void Flash_Write_Halfword(unsigned int vaddress, unsigned int vdata){ JTAG_Write_Memory(vaddress<<1, vdata, HALFWORD);}unsigned int Flash_Read_Halfword(unsigned int vaddress){ unsigned int vdata; JTAG_Read_Memory(vaddress<<1, &vdata, HALFWORD); return(vdata);}unsigned int Flash_Read_Word(unsigned int vaddress){ unsigned int vdata; JTAG_Read_Memory(vaddress<<1, &vdata, WORD); return(vdata);}//------------------------------------------------------------------------------// 汲疙 : 柳青惑怕甫 钎矫 茄促. // 概拌 : title : 惑怕 钎矫// cur : 泅犁 柳青档 // max : 弥措蔼// 馆券 : // 林狼 : 绝澜 //------------------------------------------------------------------------------void HY29LV160_UpdateProgress(char *title, unsigned int cur, unsigned int max){ int dpywidth = 40; char bar[] = "===============================================================" "==============================================================="; char spaces[] = " " " "; char spinner[] = "\\|/-"; unsigned int i, percent; progress_pos = (progress_pos+1) & 3; percent = (cur * 100) / max; i = ((percent * dpywidth) + 50) / 100; printf("%s: |%s%s", title, bar + (sizeof(bar) - (i+1)), spaces + (sizeof(spaces) - (dpywidth - i + 1))); if(percent == 100) { printf("|"); } else { printf("%c", spinner[progress_pos & 3] ); } printf(" %4d%% \r", percent); if(percent == 100) /* clear prog bar */ { printf("%s\r", spaces + (sizeof(spaces) - 80)); }} //-----------------------------------------------------------------------------// 汲 疙 : RESET 矫虐绰 疙飞//------------------------------------------------------------------------------void HY29LV160_Cmd_Reset(void){ Flash_Write_Halfword(0x0, 0xF0);} //------------------------------------------------------------------------------// 汲 疙 : ID 甫 佬绰 疙飞//-----------------------------------------------------------------------------void HY29LV160_Cmd_ReadID(void){ Flash_Write_Halfword(0x555, 0xAA); Flash_Write_Halfword(0x2AA, 0x55); Flash_Write_Halfword(0x555, 0x90);} //------------------------------------------------------------------------------// 汲 疙 : 单捞鸥甫 结 持绰促.//-----------------------------------------------------------------------------void HY29LV160_Cmd_Write(unsigned int vaddress, unsigned int vdata){ Flash_Write_Halfword(0x555, 0xAA); Flash_Write_Halfword(0x2AA, 0x55); Flash_Write_Halfword(0x555, 0xA0); Flash_Write_Halfword(vaddress, vdata);} //------------------------------------------------------------------------------//冀磐甫 瘤款促.//-----------------------------------------------------------------------------void HY29LV160_Cmd_Erase_Sector(unsigned int vaddress){ Flash_Write_Halfword(0x555, 0xAA); Flash_Write_Halfword(0x2AA, 0x55); Flash_Write_Halfword(0x555, 0x80); Flash_Write_Halfword(0x555, 0xAA); Flash_Write_Halfword(0x2AA, 0x55); Flash_Write_Halfword(vaddress, 0x30);}//------------------------------------------------------------------------// 汲 疙 : 疙飞 荐青 惑怕狼 搬苞甫 掘绰促. // 概 拌 : 绝澜// 馆 券 : 绝澜// 林 狼 : //------------------------------------------------------------------------unsigned int HY29LV160_GetStatus(unsigned int vaddress){ unsigned int firststate, secondstate; while(1) { firststate = Flash_Read_Halfword(vaddress); // 霉锅掳 单捞鸥甫 佬绰促. secondstate = firststate ^ Flash_Read_Halfword(vaddress); // 滴锅
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -