CN100576187C - 一种应用程序的开发调试方法及系统 - Google Patents
一种应用程序的开发调试方法及系统 Download PDFInfo
- Publication number
- CN100576187C CN100576187C CN200710076725A CN200710076725A CN100576187C CN 100576187 C CN100576187 C CN 100576187C CN 200710076725 A CN200710076725 A CN 200710076725A CN 200710076725 A CN200710076725 A CN 200710076725A CN 100576187 C CN100576187 C CN 100576187C
- Authority
- CN
- China
- Prior art keywords
- application program
- data
- memory
- memory headroom
- module
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明适用于软件程序开发调试领域,提供了一种应用程序的开发调试方法和系统,其中方法包括下述步骤:在内存中分配用于模拟闪存的内存空间;应用程序与内存空间进行数据交互实现开发调试。本发明实施例采用内存模拟闪存,读写速度快,方便调试应用程序,加快应用程序的开发调试速度。
Description
技术领域
本发明属于软件程序开发调试领域,尤其涉及一种应用程序的开发调试方法及系统。
背景技术
闪存(Flash Memory)由于具有非易失性、电可擦除性、可重复编程以及高密度、低功耗等特点,被广泛地应用于手机、MP3、数码相机、笔记本电脑等数据存储设备中。
目前几乎所有的嵌入式系统都以闪存作为存储设备,为了节约硬件成本应用厂家不仅把程序而且把用户数据一起写到闪存中去,为了实现掉电保护,应用程序不得不时常对闪存内容进行检测,以便尽可能的恢复原来的用户数据。
目前,大都采用真实的闪存开发调试这些应用程序,在嵌入式系统上采用仿真器将应用程序下载到具体的芯片系统上,通过读写真实的闪存发现应用程序中的问题,然而由于硬件的限制导致闪存内容的读写很慢,严重影响了开发进度。此外,不仅下载程序的速度慢,更严重的问题是闪存的读写、擦除速度慢,调试不方便,很多嵌入式调试工具没有比较友好的侦错(debug)界面,只能通过大量的printf语句输出需要的信息。而且,必要的嵌入式平台和与平台配套的嵌入式调试工具往往要花费比较高的成本,而数量不足的调试设备又严重影响嵌入式应用程序的开发进度。
发明内容
本发明实施例的目的在于提供一种应用程序的开发调试方法,旨在解决现有技术采用真实闪存开发调试应用程序速度慢的问题。
本发明实施例是这样实现的,一种应用程序的开发调试方法,包括下述步骤:
在非易失性存储装置的内存空间中创建掉电保护文件,向内存空间写入初始化空状态数据;
所述应用程序与所述内存空间进行数据交互,包括:所述应用程序读取所述内存空间中的所述数据的读操作;所述应用程序将所述数据全部置1的擦除操作;判断所述数据在赋值之前是否为全1的写成功判断步骤的写操作;
在所述应用程序退出前,将所述内存空间中的数据写入所述掉电保护文件;
所述应用程序下次开发调试的初始化过程中,将所述掉电保护文件的内容读入所述内存空间。
本发明实施例的另一目的在于提供一种应用程序的开发调试系统,包括:
内存空间分配模块,用于在非易失性存储装置的内存中分配用于模拟闪存的内存空间;
文件创建模块,用于在非易失性存储装置中创建掉电保护文件;以及
与所述内存空间进行数据交换的应用程序开发调试模块,所述应用程序开发调试模块包括:
读操作模块,用于读取所述内存空间中的所述数据;
擦除操作模块,用于将所述数据全部置1;
写操作判断模块,用于判断所述数据在赋值之前是否为全1,当所述数据在赋值前为全1时写操作成功;
掉电保护模块,用于在所述应用程序退出前将内存中的所述数据写入所述掉电保护文件。
本发明实施例通过在内存中分配一部分内存空间用于模拟闪存,使应用程序的直接与内存空间交互进行开发调试,加快了应用程序的开发调试速度,且实现简单,存取速度快。
附图说明
图1是本发明实施例应用程序的开发调试方法的流程图;
图2是本发明实施例应用程序的开发调试方法在PC机中进行应用程序调试的示意图;
图3是本发明实施例应用程序的开发调试系统的示意图。
具体实施方式
为了使本发明实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明通过在内存中分配用于模拟闪存的内存空间,在硬盘中创建模拟闪存的掉电保护文件,从而实现了利用内存和硬盘文件模拟闪存进行程序开发调试,相比现有技术中采用真实闪存进行程序开发调试的方法,本发明的开发调试速度更快,且实现简单。
如图1所示,本发明实施例应用程序的开发调试方法包括以下步骤:
在步骤S101中,在内存中分配用于模拟闪存的内存空间,此内存空间的大小与应用程序要访问的闪存空间大小相等;
在硬盘或其它非易失性存储装置中创建模拟闪存的掉电保护文件(如文件名为flash.dat的文件),并通过该掉电保护文件向内存空间写入初始化的空状态数据,使内存空间在第一次进行开发调试时的初始状态为空;当然,也可不通过掉电保护文件而是直接向内存空间写入空状态数据,因此掉电保护文件也可以在第一次应用程序调试完之后创建;
在步骤S102中,应用程序启动时,检查硬盘中用于模拟闪存的掉电保护文件是否存在,若不存在则在步骤S103中创建,若存在继续执行步骤S104;
在步骤S103中,在硬盘中创建模拟闪存的掉电保护文件,然后执行步骤S104。
在步骤S104中,在分配的内存空间中开发调试应用程序,其主要包括以下三种操作(请一并参考图2):
读操作:在应用程序需要访问闪存时,从内存空间中读取数据;如果系统掉电后应用程序需要再次访问闪存时,内存通过PC机的文件系统将硬盘中模拟闪存掉电保护的文件的内容读到对应的内存空间中,应用程序可从内存空间中读取数据。
擦除操作:闪存出厂时保存的数据为全1,也就是0xFF为所有字节的初始状态,此时可以往这个字节的空间里面写入任何数据,一旦这个字节被写成了0x00,采用写操作就无法使其变成其它任何字节的数据,只有整块擦除后才变成0xFF,所以模拟闪存的内存空间在擦除时应该将对应的需要擦除的数据全部置成0xFF。
写操作:真实的闪存中写操作只能将数据位从1变成0,而不能从0变成1,如果要求某个闪存块可再用,必须执行擦除操作才能将整个闪存块的内容从0变成1,对真实闪存的写操作是导致应用程序访问真实闪存总体较慢的最主要的原因,真实的闪存驱动在写入每一个的数据时都必须先写入四、五个字节指令的编程字节才能将要写入的数据送到闪存的数据总线上,之后还要等待编程结束校验结果,所以写入的速度比读出要慢上几十倍;而本发明实施例仅需判断对应的内存空间中的数据的字节在赋值之前是否全为0xFF,如果不是0xFF则可以认为写入失败,此时可提示错误,如果是0xFF可默认为写入成功;
在步骤S105中,为了使模拟闪存的内存空间具有断电记忆的功能,在应用程序退出之前将对应的内存空间的内容通过PC机的文件系统写入掉电保护文件,待下次应用程序调试的初始化时,将掉电保护文件内的数据再读到内存空间;另外还可以向掉电保护文件写入错误数据以模拟嵌入式系统的突然断电导致闪存空间内容损坏的情况,以测试应用程序的开机自动恢复用户数据的功能。
为了证明本发明实施例应用程序的开发调试方法较现有技术速度快,以下将提供采用真实闪存和本发明实施例的方法测试日志闪存文件系统(JournallingFlash File System,JFFS)的垃圾回收功能的实施例。
JFFS是一种开源日志文件系统,适于放在闪存芯片上,它的垃圾回收功能要求在不超过系统容量的情况下闪存空间要能够循环利用,比如在一个1.5M字节容量的闪存空间中对一个1M字节文件的操作依次如下:创建、写入1M字节内容、关闭、删除、再创建、写入1M字节内容、...,如此重复要保证循环1000次之后闪存仍然有空间能够利用。如果在真实的闪存上,比如ST5100芯片配S29GL064A90T的闪存存储片,运行完测试需要超过10个小时的时间,而采用本发明实施例的方法由于采用内存模拟闪存,读、写和擦除操作的速度都很快,测试只花费不到1分钟的时间。
以下将结合图3描述本发明实施例应用程序的开发调试系统。
本发明实施例的应用程序的开发调试系统中,内存空间分配模块11在内存1中分配用于模拟闪存的内存空间,内存空间的大小与应用程序要访问的闪存空间大小相等。
文件创建模块15在硬盘3中创建模拟闪存的掉电保护文件(如文件名为flash.da的文件),掉电保护文件向内存空间写入初始化的空状态数据,使内存空间第一次初始状态为空。
文件检查模块17在文件创建模块15创建完毕后检查硬件中的掉电保护文件是否存在,若不存在通知文件创建模块15再次创建。
应用程序开发调试模块30用于与内存空间中的数据交互实现应用程序的开发调试。
应用程序开发调试模块30的读操作模块301用于读取内存空间中的数据,擦除操作模块303用于将内存空间的数据全部置1实现擦除操作,写操作判断模块305通过判断内存空间中的字节在赋值之前是否为全1来判断写入是否成功,当内存空间中的字节在赋值之前为全1时,证明写操作成功。
应用程序开发调试模块30的掉电保护模块307在应用程序退出前将内存空间中的数据写入硬盘中的模拟闪存掉电保护文件,因此,在应用程序需要再次访问闪存时,将硬盘中的模拟闪存掉电保护文件的内容读到内存中即可,实现了掉电保护功能。
应用程序开发调试模块30的数据恢复测试模块309用于通过写入错误数据测试应用程序的开机自动恢复用户数据的功能。
需要指出的是,文件创建模块15可以在内存空间分配模块11分配完内存空间后立即创建掉电保护文件,也可以在应用程序开发调试模块30进行完第一次应用程序调试之后创建。在第一次应用程序调试之后创建掉电保护文件时,可采用其它方式在内存空间分配完毕后向其写入初始化的空状态数据,使内存空间在第一次测试之前的初始状态为空。
本发明实施例的应用程序的开发调制方法和系统通过内存和文件模拟闪存,实现方法简单,存取速度快,不但为嵌入式应用程序的开发节省可观时间,并且节省了嵌入式系统开发时使用的仿真器,因此允许在资源有限的情况下并行开发应用程序,保证产品尽快上市。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包括在本发明的保护范围之内。
Claims (3)
1.一种应用程序的开发调试方法,其特征在于,所述方法包括下述步骤:
在非易失性存储装置的内存空间中创建掉电保护文件,向内存空间写入初始化空状态数据;
所述应用程序与所述内存空间进行数据交互,包括:所述应用程序读取所述内存空间中的所述数据的读操作;所述应用程序将所述数据全部置1的擦除操作;判断所述数据在赋值之前是否为全1的写成功判断步骤的写操作;
在所述应用程序退出前,将所述内存空间中的数据写入所述掉电保护文件;
所述应用程序下次开发调试的初始化过程中,将所述掉电保护文件的内容读入所述内存空间。
2、一种应用程序的开发调试系统,包括非易失性存储装置,其特征在于,所述系统包括:
内存空间分配模块,用于在非易失性存储装置的内存中分配用于模拟闪存的内存空间;
文件创建模块,用于在非易失性存储装置中创建掉电保护文件;以及
与所述内存空间进行数据交换的应用程序开发调试模块,所述应用程序开发调试模块包括:
读操作模块,用于读取所述内存空间中的所述数据;
擦除操作模块,用于将所述数据全部置1;
写操作判断模块,用于判断所述数据在赋值之前是否为全1,当所述数据在赋值前为全1时写操作成功;
掉电保护模块,用于在所述应用程序退出前将内存中的所述数据写入所述掉电保护文件。
3、如权利要求2所述的应用程序的开发调试系统,其特征在于:所述应用程序开发调试模块进一步包括:
数据恢复测试模块,用于通过将错误数据写入所述掉电保护文件,测试所述应用程序的开机自动恢复数据功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710076725A CN100576187C (zh) | 2007-08-28 | 2007-08-28 | 一种应用程序的开发调试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710076725A CN100576187C (zh) | 2007-08-28 | 2007-08-28 | 一种应用程序的开发调试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101201791A CN101201791A (zh) | 2008-06-18 |
CN100576187C true CN100576187C (zh) | 2009-12-30 |
Family
ID=39516965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710076725A Expired - Fee Related CN100576187C (zh) | 2007-08-28 | 2007-08-28 | 一种应用程序的开发调试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100576187C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101576860B (zh) * | 2009-06-11 | 2011-06-08 | 成都市华为赛门铁克科技有限公司 | linux或windows操作系统的测试方法及系统 |
CN104679592A (zh) * | 2013-12-02 | 2015-06-03 | 北京兆易创新科技股份有限公司 | 一种微控制单元mcu中资源动态分配的方法和系统 |
CN105446907B (zh) * | 2014-07-31 | 2019-09-24 | 展讯通信(上海)有限公司 | 一种存储空间管理系统及移动终端 |
CN106951350B (zh) * | 2017-03-30 | 2021-08-03 | 努比亚技术有限公司 | 一种移动终端磁盘的检查方法及装置 |
CN112231110A (zh) * | 2020-12-14 | 2021-01-15 | 深圳市芯天下技术有限公司 | 提升非易失存储器仿真效率方法、装置、存储介质和终端 |
-
2007
- 2007-08-28 CN CN200710076725A patent/CN100576187C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101201791A (zh) | 2008-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080089161A1 (en) | Method for testing flash memory power loss recovery | |
US8510542B2 (en) | Flash memory device having memory partitions and including an embedded general purpose operating system for booting a computing device | |
CN100576187C (zh) | 一种应用程序的开发调试方法及系统 | |
CN101008898A (zh) | 一种智能化设备软件升级与修复的方法和系统 | |
CN102141923B (zh) | 内存文件系统加载方法及装置 | |
CN104423888A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
CN102841802A (zh) | 移动终端的软件升级方法 | |
CN105512031A (zh) | 一种移动终端及其自动测试方法 | |
CN102346677A (zh) | Fpga程序的升级方法 | |
CN102592670B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN110931075B (zh) | 可重新配置的模拟系统和测试存储装置的固件的方法 | |
CN116719668A (zh) | 一种NVMe固态硬盘组RAID的自动化测试方法及测试系统 | |
CN102446137B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103136111A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
US20060069848A1 (en) | Flash emulation using hard disk | |
TWI493341B (zh) | 記憶體儲存裝置及其修復方法 | |
CN108694052B (zh) | 一种固件升级方法、固件升级装置及固件升级系统 | |
CN103577344A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103389941A (zh) | 存储器格式化方法、存储器控制器及存储器存储装置 | |
CN103578566A (zh) | 存储器存储装置及其修复方法 | |
CN104657083A (zh) | 数据写入方法、存储器储存装置、存储器控制电路单元 | |
CN101753352A (zh) | 加载业务单板的方法、系统和主控单板 | |
CN103324581A (zh) | 编程存储单元与数据读取方法、存储器控制器与储存装置 | |
CN100530093C (zh) | 修复开机系统的方法 | |
CN102467460B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091230 Termination date: 20210828 |