CN102034543A - 在单任务中实现同时烧写多片nandflash的方法 - Google Patents

在单任务中实现同时烧写多片nandflash的方法 Download PDF

Info

Publication number
CN102034543A
CN102034543A CN2010105673298A CN201010567329A CN102034543A CN 102034543 A CN102034543 A CN 102034543A CN 2010105673298 A CN2010105673298 A CN 2010105673298A CN 201010567329 A CN201010567329 A CN 201010567329A CN 102034543 A CN102034543 A CN 102034543A
Authority
CN
China
Prior art keywords
programming
chip
nandflash
nand
disc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2010105673298A
Other languages
English (en)
Other versions
CN102034543B (zh
Inventor
赵进云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
FUJIAN XINNUO COMMUNICATION TECHNOLOGY Co Ltd
Original Assignee
FUJIAN XINNUO COMMUNICATION TECHNOLOGY Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by FUJIAN XINNUO COMMUNICATION TECHNOLOGY Co Ltd filed Critical FUJIAN XINNUO COMMUNICATION TECHNOLOGY Co Ltd
Priority to CN 201010567329 priority Critical patent/CN102034543B/zh
Publication of CN102034543A publication Critical patent/CN102034543A/zh
Application granted granted Critical
Publication of CN102034543B publication Critical patent/CN102034543B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明提供一种在单任务中实现同时烧写多片NANDFLASH的方法,先从外部存储器读取数据然后把数据烧写到母片中,当进行实际烧片的时候,从母片中获取数据,并在单任务中把数据同时并发的写入所有烧写座上的NANDFLASH芯片。本发明采用在单任务中对多片NANDFLASH芯片同时进行并发烧写的方法来代替传统的串行化的逐片烧写的方法和每片一个烧写任务的多任务方法,使得烧写与生产效率大幅度提高。

Description

在单任务中实现同时烧写多片NANDFLASH的方法
【技术领域】
本发明涉及具有烧写NANDFLASH(NANDFLASH是一种存储介质)功能的终端产品,尤其涉及一种在单任务中实现同时烧写多片NANDFLASH的方法。
【背景技术】
在嵌入式终端生产中,一般都会在NANDFLASH贴片之前把软件烧写到NANDFLASH上,传统的烧写方法是:1、采用逐片烧写的方法,每次烧写一片。2、并发烧写,为每片分配一个单独的烧写任务。
在嵌入式终端功能单一,软件规模比较小的时候,上面两种都是很好的实现方式,因为这时候要烧写的程序镜像都会比较小。但是随着发展,嵌入式终端的功能越来越复杂,软件规模也变得庞大。要烧写的程序镜像也就变得很大,那这时候上面这两种方法就不能很好的满足要求了。程序镜像变大意味着要花费更多的时间才能完成一片的烧写,对于第一种串行化的逐片烧写的方式就会严重影响生产效率。第二种方式在一定程度上实现了并行化的烧写,当会随着要同时烧写的芯片数的增加,效率会急剧下降,也不能够到达生产效率的最大化。
【发明内容】
本发明要解决的技术问题,在于提供一种在单任务中实现同时烧写多片NANDFLASH的方法,克服了背景技术中,生产效率低的问题。
本发明是这样实现的:一种在单任务中实现同时烧写多片NANDFLASH的方法,首先从外部存储器读取要烧写的镜像文件,然后把镜像文件写入到母片中;在烧写的时候把母片中的数据导入到所有烧写座上的NANDFLASH芯片;在此过程中:采用在单线程任务中同时控制多片NANDFLASH芯片的信号引脚的方式对多片NANDFLASH芯片执行烧写操作;在错误处理的方式上:烧写代码每次都对所有的NANDFLASH芯片发起编程操作即先设置每块NANDFLASH芯片对应的地址,不跳过异常或不在位的NANDFLASH芯片,只要有一片编程成功,上层烧写代码获取到的编程状态都是成功的;当上层烧写代码获取异常或不在位的芯片的编程状态时,由烧写系统软件模拟返回成功。
本发明具有如下优点:本发明采用在单任务中对多片NANDFLASH芯片同时进行并发烧写的方法来代替传统的串行化的逐片烧写的方法和每片一个烧写任务的多任务方法,且在遇到烧写错误时进行了特殊处理,当上层烧写代码获取异常或不在位的芯片的编程状态时,由烧写系统软件模拟返回成功,这样使得烧写与生产效率大幅提高。
【附图说明】
图1是本发明测试平台的硬件框图。
图2是本发明的NANDFLASH芯片视图。
图3是本发明数据编程与烧写的流程示意图。
【具体实施方式】
下面参照附图结合实施例对本发明作进一步的说明。
一种在单任务中实现同时烧写多片NANDFLASH的方法,其实现步骤步骤如下:首先从外部存储器读取要烧写的镜像文件,然后把镜像文件写入到母片中;在烧写的时候把母片中的数据导入到所有烧写座上的NANDFLASH芯片;在此过程中:采用在单线程任务中同时控制多片NANDFLASH芯片的信号引脚的方式对多片芯片执行烧写操作;在错误处理的方式上:烧写代码每次都对所有的芯片发起编程操作即先设置每块NANDFLASH芯片对应的地址,不跳过异常或不在位的NANDFLASH芯片,只要有一片编程成功,上层烧写代码获取到的编程状态都是成功的;当上层烧写代码获取异常或不在位的芯片的编程状态时,由烧写系统软件模拟返回成功,所述的烧写系统软件模拟返回成功的方式是:在发现哪块NANDFLASH芯片烧写异常、错误时断开相应SN74HC245的电源,同时判断该NANDFLASH芯片RB脚状态的操作永远都返回READY状态,让读取此芯片I/O脚的操作也都返回成功状态。
本发明的烧写操作是通过在单任务中同时对所有芯片发起编程操作来实现伪并发的编程操作。由于消除了不必要的大量的任务上下文切换操作,而且在单处理器上不可能实现多任务的正在并发,所以单任务的伪并发烧写操作,效率大大高于多任务的伪并发烧写操作。
见图1,是本发明测试平台的硬件框图,包括外部存储器、CUP、母片、LCD、多片的SN74HC245芯片以及多片NANDFLASH芯片。用户从外部存储器读取要烧写的镜像文件,然后把镜像文件写入到母片中,LCD负责显示烧写的情况。
这里要说明的是:1、设置每块NANDFLASH芯片对应的地址通过以下代码实现:由于每一块NANDFLASH芯片的坏块布局是不一样的,所以需单独维护每一块芯片的编程地址,在发送编程地址时,需要设置每块芯片对应的地址。
for(i=0;i<CONFIG_EXT_NAND_NUM;++i){
    col=0;
    page=nandset->nand_offset[i]/nandset->pagesize;
  //逐片发送行列地址
    s3c_nand_addr(nandset, & nandset->chip[i],col,page);
}
2、发起编程操作方式
每次都对所有的芯片发起编程操作,而不对异常/不在位的芯片做特殊处理,这样就避免了由于引入大量的判断语句而导致执行效率降低。例如发送对所有芯片发送命令:
static inline
void s3c_nandset_cmd(struct s3c_nand_set*nand_set,uint8_t cmd)
{
     //逐片CLE使能
     s3c_extnand_setcle( & nand_set->chip[0]);
            s3c_extnand_setcle( & nand_set->chip[1]);
            s3c_extnand_setcle( & nand_set->chip[2]);
            s3c_extnand_setcle( & nand_set->chip[3]);
            //投送命令数据
            s3c_nandset_write_buf(nand_set, & cmd,1);
            //逐片CLE不使能
            s3c_extnand_clrcle( & nand_set->chip[0]);
            s3c_extnand_clrcle( & nand_set->chip[1]);
            s3c_extnand_clrcle( & nand_set->chip[2]);
            s3c_extnand_clrcle( & nand_set->chip[3]);
      }
      static inline
      void s3c_nandset_write_buf(struct s3c_nand_set*nand_set,uint8_t*buf,
int len)
{
          int i=0;
        for(;i<len;++i){
               //逐片发送每字节数
            s3c_nand_put_byte(buf[i], & nand_set->chip[0]);
               s3c_nand_put_byte(buf[i], & nand_set->chip[1]);
               s3c_nand_put_byte(buf[i], & nand_set->chip[2]);
               s3c_nand_put_byte(buf[i], & nand_set->chip[3]);
         }
}
3.编程错误,异常处理方式
在发现编程异常,错误时断开相应SN74HC245的电源,这样后继的编程信号不会再传递到此芯片。同时让判断此芯片RB脚状态的操作永远都返回READY状态,让读取此芯片I/O脚的操作也永远都返回0。(通过I/O脚的引脚0的逻辑电平来判断编程是否成功,低表示成功,高表示错误,这里也就是永远返回成功)。通过此机制,烧写代码无需关心那些芯片不在位,那些芯片烧写失败的问题。每次都对所有芯片都发起编程操作:
//获取逐片的RB脚状态
ready[0]=s3c_extnand_ready( & nand_set->chip[0])|(!nand_set->nand_valid[0]);
ready[1]=s3c_extnand_ready( & nand_set->chip[1])|(!nand_set->nand_valid[1]);
ready[2]=s3c_extnand_ready( & nand_set->chip[2])|(!nand_set->nand_valid[2]);
ready[3]=s3c_extnand_ready( & nand_set->chip[3])|(!nand_set->nand_valid[3]);
如果芯片不在位或异常,则对应的nand_valid值为0,正常为1。上面的操作可保证对于异常,错误的芯片此表达式永远为真,也就是准备好。
//逐片读取IO脚电平
status[0]=s3c_nand_get_byte( & nand_set->chip[0]) & (nand_set->nand_valid[0]);
status[1]=s3c_nand_get_byte( & nand_set->chip[1]) & (nand_set->nand_valid[1]);
status[2]=s3c_nand_get_byte( & nand_set->chip[2]) & (nand_set->nand_valid[2]);
status[3]=s3c_nand_get_byte( & nand_set->chip[3]) & (nand_set->nand_valid[3]);
上面的操作可保证对于异常,错误的芯片的引脚0的电平永远都为0。
值得一提的是:NANDFLASH芯片视图如图2所示,其中芯片的数据编程与烧写的流程示意图见图3,首先从母片中读取要烧写的数据到内存,依次有效芯片的CS信号,依次有效芯片的CLE信号,依次给芯片发送80H命令,依次无效芯片的CLE信号,依次发送烧写地址给芯片,其发送烧写地址的流程为:有效芯片的ALE信号,发送要写入数据的地址,无效ALE信号;再把从母片读取的数据依次发送给芯片;依次有效芯片的CLE信号,依次给芯片发送10H命令,依次无效芯片的CLE信号,依次获取芯片的RB脚状态,等待芯片编程完成;依次有效芯片的CLE信号,依次发送70H命令,依次无效芯片的CLE信号,读取8BIT I/O总线,根据结果判断数据是否写入成功。
总之,本发明在单任务中实现了同时烧写多片NANDFLASH芯片的功能,而传统的方式单任务只能实现串行化的逐片烧写功能,只能通过增加任务数来实现同时烧写,但由于任务上下文切换的大量开销也不能到达生产烧写效率的最大化。通过在单任务中实现同时烧写,避免了大量任务上下文切换的开销,使得烧写效率进一步提高。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (2)

1.一种在单任务中实现同时烧写多片NANDFLASH的方法,其特征在于:首先从外部存储器读取要烧写的镜像文件,然后把镜像文件写入到母片中;在烧写的时候把母片中的数据导入到所有烧写座上的NANDFLASH芯片;在此过程中:采用在单线程任务中同时控制多片NANDFLASH芯片的信号引脚的方式对多片NANDFLASH芯片执行烧写操作;在错误处理的方式上:烧写代码每次都对所有的NANDFLASH芯片发起编程操作即先设置每块NANDFLASH芯片对应的地址,不跳过异常或不在位的NANDFLASH芯片,只要有一片编程成功,上层烧写代码获取到的编程状态都是成功的;当上层烧写代码获取异常或不在位的芯片的编程状态时,由烧写系统软件模拟返回成功。
2.根据权利要求1所述的在单任务中实现同时烧写多片NANDFLASH的方法,其特征在于:所述的烧写系统软件模拟返回成功的方式是:在发现哪块NANDFLASH芯片烧写异常、错误时断开相应SN74HC245的电源,同时判断该NANDFLASH芯片RB脚状态的操作永远都返回READY状态,让读取此NANDFLASH芯片I/O脚的操作也都返回成功状态。
CN 201010567329 2010-12-01 2010-12-01 在单任务中实现同时烧写多片nandflash的方法 Expired - Fee Related CN102034543B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010567329 CN102034543B (zh) 2010-12-01 2010-12-01 在单任务中实现同时烧写多片nandflash的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010567329 CN102034543B (zh) 2010-12-01 2010-12-01 在单任务中实现同时烧写多片nandflash的方法

Publications (2)

Publication Number Publication Date
CN102034543A true CN102034543A (zh) 2011-04-27
CN102034543B CN102034543B (zh) 2013-06-05

Family

ID=43887310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010567329 Expired - Fee Related CN102034543B (zh) 2010-12-01 2010-12-01 在单任务中实现同时烧写多片nandflash的方法

Country Status (1)

Country Link
CN (1) CN102034543B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360569A (zh) * 2011-08-24 2012-02-22 中兴通讯股份有限公司 非易失闪存芯片烧录方法、系统及装置
CN106201617A (zh) * 2016-07-14 2016-12-07 青岛歌尔声学科技有限公司 一种烧录存储器的方法和系统
CN110376510A (zh) * 2019-07-31 2019-10-25 上海华虹宏力半导体制造有限公司 多芯片数据烧写测试方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281477A (zh) * 2008-05-14 2008-10-08 北京泰得思达科技发展有限公司 一种采用多路复用技术进行并行烧录的系统
CN101359317A (zh) * 2007-08-01 2009-02-04 英业达股份有限公司 一种并行烧录系统及方法
CN201352461Y (zh) * 2009-02-24 2009-11-25 无敌科技(西安)有限公司 一种闪存烧录装置
CN101853703A (zh) * 2010-06-09 2010-10-06 吟飞科技(江苏)有限公司 U盘烧录器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359317A (zh) * 2007-08-01 2009-02-04 英业达股份有限公司 一种并行烧录系统及方法
CN101281477A (zh) * 2008-05-14 2008-10-08 北京泰得思达科技发展有限公司 一种采用多路复用技术进行并行烧录的系统
CN201352461Y (zh) * 2009-02-24 2009-11-25 无敌科技(西安)有限公司 一种闪存烧录装置
CN101853703A (zh) * 2010-06-09 2010-10-06 吟飞科技(江苏)有限公司 U盘烧录器

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360569A (zh) * 2011-08-24 2012-02-22 中兴通讯股份有限公司 非易失闪存芯片烧录方法、系统及装置
CN102360569B (zh) * 2011-08-24 2017-04-12 中兴通讯股份有限公司 非易失闪存芯片烧录方法、系统及装置
CN106201617A (zh) * 2016-07-14 2016-12-07 青岛歌尔声学科技有限公司 一种烧录存储器的方法和系统
CN110376510A (zh) * 2019-07-31 2019-10-25 上海华虹宏力半导体制造有限公司 多芯片数据烧写测试方法

Also Published As

Publication number Publication date
CN102034543B (zh) 2013-06-05

Similar Documents

Publication Publication Date Title
US20190339869A1 (en) Techniques to configure a solid state drive to operate in a storage mode or a memory mode
CN103034603B (zh) 多通道闪存卡控制装置及其控制方法
CN103777972B (zh) 基于现场可编程门阵列的系统、配置方法以及升级方法
CN102135927B (zh) 一种基于nand flash的系统引导方法和装置
CN104102585A (zh) 映射信息记录方法、存储器控制器与存储器储存装置
CN107885517B (zh) 嵌入式系统处理器程序加载电路
CN105159731A (zh) 一种fpga配置文件远程升级的装置
CN103677885A (zh) 一种arm flash简易程序烧写的方法
CN102063939B (zh) 一种电可擦除可编程只读存储器的实现方法和装置
CN104681077A (zh) 一种mram-nand控制器及贴片式固态硬盘
CN106649137B (zh) 一种Nand Flash坏块管理方法、装置及存储器
CN101872308A (zh) 内存条控制系统及其控制方法
CN102034543B (zh) 在单任务中实现同时烧写多片nandflash的方法
CN103106155B (zh) 存储器储存装置、存储器控制器与其数据传输方法
CN101118494A (zh) 嵌入式设备从外接电子卡启动操作系统的系统与方法
CN102855145B (zh) 嵌入式电子设备启动方法及系统
CN102629212A (zh) 一种基于j-link间接烧写程序到nandflash的方法
CN101923570B (zh) 一种在Windows CE环境下建立大页面Nand Flash存储系统的方法
CN102486757B (zh) 存储器储存装置及其存储器控制器与回应主机指令的方法
CN101739272A (zh) 一种电子装置、一种基本输入输出系统的启动方法和系统
CN101145400A (zh) 内嵌存储器的soc位映射实现方法
CN101969524A (zh) 一种利用机顶盒对机顶盒进行写片/升级的方法
CN102591738B (zh) 数据管理方法、存储器控制器与嵌入式存储器储存装置
CN208722090U (zh) 带有内存参数精确配置功能的嵌入式终端
CN115509965A (zh) 存储器控制器与链接识别方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130605