ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:22.91KB ,
资源ID:8808614      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8808614.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(AT91RM9200 K9K8 NAND FlashLinux驱动程序.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

AT91RM9200 K9K8 NAND FlashLinux驱动程序.docx

1、AT91RM9200 K9K8 NAND Flash Linux驱动程序AT91RM9200 K9K8* NAND Flash Linux驱动程序CPU:AT91RM9200NAND:K9K8G08不同容量的NAND需要做相应的调整,同时需要对控制脚相应的进行调整驱动程序如下,希望对需要的有所帮助,验证通过。/*File Name: char K9F1G_statu(void)description:writer: Liuxinminversion: 1.0date: 2009 10 20last chage: 2009 10 19*/#include #include #include #i

2、nclude #include #include #include #include #include #include #include /#include /#include #include #include #include #include #include #include #include /#include can0.h#include #include /*/#define K9F1G08R0A#define FLASH_READ_START 0x00 /read 1st. Cycle#define FLASH_READ_END 0x30 /read 2nd. Cycle#d

3、efine FLASH_READ_FOR_COPY_BANK_START 0x00 /Read for Copy Back 1st.cycle#define FLASH_READ_FOR_COPY_BANK_END 0x35 /Read for Copy Back 2nd.cycle#define FLASH_READ_ID 0x90 /read device id#define FLASH_RESET 0xFF /reset device#define FLASH_PAGE_PROGRAM_START 0x80 /Page Program 1st.cycle#define FLASH_PAG

4、E_PROGRAM_END 0x10 /Page Program 2nd.cycle#define FLASH_CACHE_PROGRAM_START 0x80 /Cache Program 1st.cycle#define FLASH_CACHE_PROGRAM_END 0x15 /Cache Program 2nd.cycle#define FLASH_COPY_BANK_PROGRAM_START 0x00 /Copy-Back Program 1st.cycle#define FLASH_COPY_BANK_PROGRAM_END 0x30 /Copy-Back Program 2nd

5、.cycle#define FLASH_BLOCK_ERASE_START 0x60 /EraseBlock 1st.cycle#define FLASH_BLOCK_ERASE_END 0xD0 /Erase Block end cyc#define FLASH_RANDOM_DATA_INPUT 0x85 /Random Data Input#define FLASH_RANDOM_DATA_OUTPUT_START 0x05 /Random Data Output 1st.cycle#define FLASH_RANDOM_DATA_OUTPUT_END 0xE0 /Random Dat

6、a Output 2nd.cyc#define FLASH_READ_STTUS 0x70 /Read Status#define K9F1G_ADDRESS_ADDRESS (0x40000000|(0x123)|(0x0122) /ADDRESS_ADDRESS#define K9F1G_COMMAND_ADDRESS (0x40000000|(0x123)|(0x0121) /COMMAND_ADDRESS#define K9F1G_DATA_ADDRESS (0x40000000|(0x1PIOC_ODSR = AT91C_PIO_PC3;AT91_SYS-PIOC_SODR = AT

7、91C_PIO_PC3;/PC3 should be low now/#define K9F1G_WE_LOW() AT91_SYS-PIOC_ODSR = 0; AT91_SYS-PIOC_SODR = AT91C_PIO_PC3;/PC3 should be high now/#define K9F1G_RE_HIGH() AT91_SYS-PIOC_ODSR = AT91C_PIO_PC1;AT91_SYS-PIOC_SODR = AT91C_PIO_PC1;/PC3 should be low now/#define K9F1G_RE_LOW() AT91_SYS-PIOC_ODSR

8、= 0; AT91_SYS-PIOC_SODR = AT91C_PIO_PC1;/*/declare the variasstatic unsigned int flash_address_add=0;static unsigned int flash_command_add=0;static unsigned int flash_data_add=0;/declare the function static int flash_ioctl(struct inode *, struct file *, unsigned int, unsigned long);static ssize_t fl

9、ash_read(struct file*, char*, size_t, loff_t*);static ssize_t flash_write(struct file*, const char*, size_t, loff_t*);static int flash_open(struct inode*, struct file*);static int flash_release(struct inode*, struct file*);struct file_operations flash_simon_fops = / owner: THIS_MODULE, ioctl: flash_

10、ioctl, write: flash_write, read: flash_read, open: flash_open, release: flash_release;static unsigned int FlashWriteAddress=0;static unsigned int FlashReadAddress=0;static unsigned int block_address = 0;/*function name: delay_flash(int nb)function description: delay the CPU not to do anything,just d

11、elayfunction.*/void delay_flash(int nb) while(nb-);/*Name: char K9F1G_statu(void)Function: get the K9F1G Busy or Ready statureturn: 1:ready 0:busywriter: Liuxinmindate:2009 10 20last chage:2009 10 20*/unsigned int K9F1G_statu(void) int statu; statu = (AT91_SYS-PIOC_PDSR ) & AT91C_PIO_PC15); return s

12、tatu;void K9F1G_CE_HIGH()#ifdef newboard AT91_SYS-PIOC_SODR = AT91C_PIO_PC13;#else AT91_SYS-PIOA_SODR = AT91C_PIO_PA0;#endifvoid K9F1G_CE_LOW()#ifdef newboard AT91_SYS-PIOC_CODR = AT91C_PIO_PC13; /clear the output reg#else AT91_SYS-PIOA_CODR = AT91C_PIO_PA0;#endifint K9F1G_READ_ID() int i; unsigned

13、char id5; /outb(FLASH_READ_ID,flash_command_add); printk( Physical address=%Xrn ,K9F1G_DATA_ADDRESS); printk( Physical address+131=%Xrn ,(K9F1G_DATA_ADDRESS+(131); printk( flash_command_add=%Xrn ,flash_command_add); printk( flash_address_add=%Xrn ,flash_address_add); printk( flash_data_add=%Xrn ,fla

14、sh_data_add); K9F1G_CE_LOW(); *(volatile unsigned char *)(flash_command_add)=FLASH_READ_ID; *(volatile unsigned char *)(flash_address_add)=0; while(0=K9F1G_statu(); /delay_flash(500); for(i=0;i5;i+) idi= *(volatile unsigned char *)(flash_data_add); while(0=K9F1G_statu(); K9F1G_CE_HIGH(); printk(the

15、NAND flash device id=); for(i=0;iPIOC_PER = AT91C_PIO_PC13; /enable the peripheral control AT91_SYS-PIOC_OER = AT91C_PIO_PC13; /output enable AT91_SYS-PIOC_SODR = AT91C_PIO_PC13;#if 0 /*init the PA0*/ AT91_SYS-PIOC_MDDR = AT91C_PIO_PC13; /disable the Multi function AT91_SYS-PIOC_PER = AT91C_PIO_PC13

16、; /enable the peripheral control AT91_SYS-PIOC_OER = AT91C_PIO_PC13; /output enable AT91_SYS-PIOC_IFDR = AT91C_PIO_PC13; /AT91_SYS-PIOA_CODR = AT91C_PIO_PA0; AT91_SYS-PIOC_IDR = AT91C_PIO_PC13; /disable the interrupt /AT91_SYS-PIOC_MDDR = AT91C_PIO_PC13; /disable the Multi function /AT91_SYS-PIOA_PP

17、UER = AT91C_PIO_PA0; /AT91_SYS-PIOA_OWER = AT91C_PIO_PA0; /enable write the PIO_ODSR for PA0 AT91_SYS-PIOC_SODR = AT91C_PIO_PC13; /AT91_SYS-PIOA_ODSR = AT91C_PIO_PA0; /*init the PC1 and PC3 for */*should init the PC1 and PC3 as SMC signal*/ AT91_SYS-PIOC_PER = AT91_SYS-PIOC_PER | AT91C_PIO_PC1 | AT91C_PIO_PC3; /enable the peripheral control AT91

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2