MDK工具包中自带的FLASH编程算法的问题

S3C2410 + ULINK2 + MDK

 

MDK环境下有个功能可以支持直接把bin文件下载到nandflash中的制定区域,这对于开发还是很方便的,我在调试2410开发板中已经实现了该功能,但过程中还是出现了一些问题。

 

MDK工具包中自带有FLASH文件夹,其下是很对不同的flash编程算法,我的板子是S3C2410,经查看,其下没有针对2410的型号,不管3721,先试一下这个2440的编程算法会出什么问题,一点击download,出现Flash Timeout 错误提示,详细很多朋友都对这个错误提示不陌生。

后来我再稍微详细的读了其编程代码的实现和参数的配置,发现应该没有问题了啊(其实还有问题,很隐蔽),点击download依然Flash Timeout

在继续之前先说明一下我个人想法。为什么会报Flash Timeout提示了,这应该是MDK对nand操作的一种机制。我们看到一个结构如下:

 

struct FlashDevice const FlashDevice  =  {
   FLASH_DRV_VERS,             // Driver Version, do not modify!
   "S3C2440 NAND Flash SP",    // Device Name
   EXT8BIT,                    // Device Type
   0x30000000,                 // Device Start Address
   0x08000000,                 // Device Size in Bytes (128MB)
   512,                        // Programming Page Size
   0,                          // Reserved, must be 0
   0xFF,                       // Initial Content of Erased Memory
   200,                        // Program Page Timeout 200 mSec
   3000,                       // Erase Sector Timeout 3000 mSec

  // Specify Size and Address of Sectors
   0x4000, 0x000000,           // Sector Size 16kB
   SECTOR_END
};

其中有个参数为3000,正常情况下nand是块擦出,速度是很快的,如果erase操作在3s内依然没有响应,那么MDK就会报错,Flash timeout。

 

回来原话题。。。查看K9F1208datasheet发现nand的第一个block厂商保证肯定是绝对没有bad block的,而通过我的LED调试方法,逐步定位错误,发现nand程序竟然连 1st block都当做是坏块,这说明了最大的可能性是它自带的编程算法的出错,当然还有可能是nand芯片挂了(我可不期望是这个),再仔细对照其判断1st block是否为坏块的代码,再和2410的手册对照,发现其对于NFDATA寄存器的操作都是按照32位来的,spare area 区域的16个字节分了4次读完,但手册说看到nand控制器是把NFDATA当做16位来操作的,问题原因就出来了。。。后面的解决方法我不用多说了,重新改过之后,点击download一步到位。。。

 

关键词:led定位方法、nand的1st肯定不是坏块

 

 

 

修改 Mdk flash 算法,可以参考以下几个方面进行改进。 首先,可以优化存储器的使用。通过减小存储器的占用空间,可以提高程序的执行效率。可以采用压缩算法,对程序进行压缩,减小存储空间的占用。另外,可以使用更高效的数据结构和算法来管理存储器,提高存储器的利用率和读写速度。 其次,可以增加对程序错误的检测和纠正能力。在进行程序烧录时,可以增加校验机制,确保程序的正确性。同时,如果发现程序错误,可以在烧录过程进行错误检测和纠正,提高程序的可靠性。 另外,可以增加烧录过程的可视化界面,提供更友好的用户交互体验。通过图形界面的设计,可以让用户更直观地了解烧录过程的进展和结果,提高操作的便捷性和可理解性。 还可以考虑与其他软件或硬件的兼容性。在设计算法时,可以考虑与其他相关软件或硬件的配合使用,提供更广泛的适用性和兼容性。这样,在不同的开发环境,都可以顺利地使用修改后的 Mdk flash 算法。 最后,可以对算法进行进一步的优化和调整,提高程序的执行效率。通过对算法进行细致的分析和优化,减少时间和空间复杂度,可以使得程序在烧录过程更快速、更高效地执行。 总之,修改 Mdk flash 算法需要综合考虑存储器利用、错误检测和纠正、用户交互体验、兼容性和算法优化等方面,以提高烧录算法的功能和效能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值