S3C2440的NAND_FLASH读写问题

[复制链接]
5043|15
 楼主| sxh924 发表于 2008-11-25 16:35 | 显示全部楼层 |阅读模式
我的项目应用要求将实时数据保存到NAND FLASH,原先项目在单片机上做的,外接的NAND FLASH,现在我用S3C2440实现这部分,板子从NAND FLASH启动,现在数据要存到我的NAND FLASH上(从后面的一些块开始保存),但遇到一个很怪的问题,我在定时器里设了一个标志位,当有实时数据要保存FLASH时,标志置位,开始写FLASH,但写完后,我的程序进不入定时器中断了.我想知道,我现在的程序是处于调试状态,最终要写到FLASH上,那么同时又在FLASH上写数据,会不会对我本身的程序有影响?
阿南 发表于 2008-11-25 17:48 | 显示全部楼层

re:不会有影响,因为代码是以普通的数据保存在NAND中的,

也是需要先读到SDRAM后才运行的。所以不是楼主理解的那样在NAND中直接运行
 楼主| sxh924 发表于 2008-11-26 09:09 | 显示全部楼层

我的RO段要在NAND中运行

我的RO段准备在NADN中运行,RW在SDRAM中运行.同时把实时数据保存到NAND中时会不会有影响?我用EEPROM试着把原先需要的数据保存了一下,没有问题.但用NAND保存时,出现了上面的问题.
dld2 发表于 2008-11-26 09:15 | 显示全部楼层

NAND不能运行代码

  
awey 发表于 2008-11-26 09:28 | 显示全部楼层

NAND相当于硬盘,不能直接运行程序

  
PowerAnts 发表于 2008-11-26 09:39 | 显示全部楼层

Nand与读硬盘是一回事

都是逻辑寻址方式,而处理器的寻址是线性物理寻址
 楼主| sxh924 发表于 2008-11-26 11:13 | 显示全部楼层

有点不懂了.

NAND也是ROM,代码段RO放在ROM中运行有何不可呢?我看了资料,说是从NANDFLASH起动时,NADN的前4K会被自动载入内部SRAM,这4K代码需要将NADN程序拷贝到SDRAM,在执行完引导后跳到SDRAM执行.按这么说我用NAND起动时,代码必须要在SDRAM里吗?
 楼主| sxh924 发表于 2008-11-26 11:26 | 显示全部楼层

补充

如果按照各位的解释,那NADN相当于硬盘,就存了点程序,运行时都是调到SDRAM中,那么程序需要的NAND容量应该比较小,不过,现在开发板做的NADN都比较大.<br />那么RO_BASE应该设为SDRAM的地址了吗?我看到别的程序里RO_BASE设为0,就是说RO段的运行域为0,当然启动时从NADN运行前4K的确是在0处开始的.
biehoff 发表于 2008-11-26 11:42 | 显示全部楼层

RE

我是菜鸟&nbsp;&nbsp;浅显的理解&nbsp;&nbsp;<br />请问你&nbsp;系统里有NORFLASH吗?&nbsp;NORFLASH可以运行程序的&nbsp;NANDFLASH不可以<br />你说的RO_BASE&nbsp;是0&nbsp;&nbsp;<br />地址0x00000000处是什么FLASH啊&nbsp;&nbsp;<br />要想运行NANDFLASH的程序是应该先COPY到&nbsp;RAM里面去&nbsp;&nbsp;COPY完再来句跳转嘛<br />本菜鸟认为&nbsp;执行COPY&nbsp;和&nbsp;跳转&nbsp;的代码都应该再NORFLASH里面完成<br /><br />说说而已哈&nbsp;&nbsp;你还是等高人指点····&nbsp;&nbsp;别听我瞎掰
biehoff 发表于 2008-11-26 11:46 | 显示全部楼层

RE

你说的&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;NADN的前4K会被自动载入内部SRAM&nbsp;&nbsp;&nbsp;<br />不需要任何程序干预&nbsp;&nbsp;上电自动复制吗···?<br />怎么感觉有点寒··!&nbsp;跟病毒似的
dld2 发表于 2008-11-26 11:48 | 显示全部楼层

楼上同学

他说的是S3C2410的一个功能。
 楼主| sxh924 发表于 2008-11-26 14:22 | 显示全部楼层

补充

我现在的理解是这样的:从NAND起动时,会自动将NAND的前4K加载到内部地址为0的SRAM运行,一般我们的程序都大于4K,那么从NAND起动就必须<br />将程序拷贝到SDRAM运行,把NAND里程序的RO+RO全拷贝到SDRAM的起始地址,初始ZI段,再跳转到SDRAM里运行。但我不明白的是通过什么指令跳转的?<br />不过,我有一点疑问,为什么别人的程序里是一次把RO+RW全拷贝到SDRAM?然后又再把RW段拷贝到SDRAM的另一个地址运行?为什么不先把RO段拷贝到SDRAM的起始地址,然后再把RW段拷到SDRAM的另一个地址运行?
biehoff 发表于 2008-11-26 14:31 | 显示全部楼层

晕了&nbsp;&nbsp;不在瞎搅和了····
l0p0c 发表于 2008-11-26 17:41 | 显示全部楼层

我觉得要在网上多查写资料!

  
ancent 发表于 2008-12-1 15:17 | 显示全部楼层

学习中

学习中
lovecool 发表于 2008-12-1 20:11 | 显示全部楼层

re

看2440datasheet,nand启动说的很清楚,我COPY给你吧:<br /><br />In&nbsp;recent&nbsp;times,&nbsp;NOR&nbsp;flash&nbsp;memory&nbsp;gets&nbsp;high&nbsp;in&nbsp;price&nbsp;while&nbsp;an&nbsp;SDRAM&nbsp;and&nbsp;a&nbsp;NAND&nbsp;flash&nbsp;memory&nbsp;is&nbsp;comparatively<br />economical&nbsp;,&nbsp;motivating&nbsp;some&nbsp;users&nbsp;to&nbsp;execute&nbsp;the&nbsp;boot&nbsp;code&nbsp;on&nbsp;a&nbsp;NAND&nbsp;flash&nbsp;and&nbsp;execute&nbsp;the&nbsp;main&nbsp;code&nbsp;on&nbsp;an<br />SDRAM.<br />S3C2440A&nbsp;boot&nbsp;code&nbsp;can&nbsp;be&nbsp;executed&nbsp;on&nbsp;an&nbsp;external&nbsp;NAND&nbsp;flash&nbsp;memory.&nbsp;In&nbsp;order&nbsp;to&nbsp;support&nbsp;NAND&nbsp;flash&nbsp;boot<br />loader,&nbsp;the&nbsp;S3C2440A&nbsp;is&nbsp;equipped&nbsp;with&nbsp;an&nbsp;internal&nbsp;SRAM&nbsp;buffer&nbsp;called&nbsp;‘Steppingstone’.&nbsp;When&nbsp;booting,&nbsp;the&nbsp;first&nbsp;4<br />KBytes&nbsp;of&nbsp;the&nbsp;NAND&nbsp;flash&nbsp;memory&nbsp;will&nbsp;be&nbsp;loaded&nbsp;into&nbsp;Steppingstone&nbsp;and&nbsp;the&nbsp;boot&nbsp;code&nbsp;loaded&nbsp;into&nbsp;Steppingstone<br />will&nbsp;be&nbsp;executed.<br />Generally,&nbsp;the&nbsp;boot&nbsp;code&nbsp;will&nbsp;copy&nbsp;NAND&nbsp;flash&nbsp;content&nbsp;to&nbsp;SDRAM.&nbsp;Using&nbsp;hardware&nbsp;ECC,&nbsp;the&nbsp;NAND&nbsp;flash&nbsp;data<br />validity&nbsp;will&nbsp;be&nbsp;checked.&nbsp;Upon&nbsp;the&nbsp;completion&nbsp;of&nbsp;the&nbsp;copy,&nbsp;the&nbsp;main&nbsp;program&nbsp;will&nbsp;be&nbsp;executed&nbsp;on&nbsp;the&nbsp;SDRAM.<br />STEPPINGSTONE&nbsp;(4K-BYTE&nbsp;SRAM)<br />The&nbsp;NAND&nbsp;Flash&nbsp;controller&nbsp;uses&nbsp;Steppingstone&nbsp;as&nbsp;the&nbsp;buffer&nbsp;on&nbsp;booting&nbsp;and&nbsp;also&nbsp;you&nbsp;can&nbsp;use&nbsp;this&nbsp;area&nbsp;for&nbsp;another<br />purpose.<br /><br /><br />。。。nand寻址是按块来的&nbsp;而且是八根地址线。。。不能随机读取,所以不能运行代码。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

59

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部