arm9裸板程序入门问题
arm刚接触不久,可能问题都表达的不是很清楚。我买的板子是MINI2440,norflash上面烧写的是supervivi提供下载,问:下载程序下载到了norflash什...
arm刚接触不久,可能问题都表达的不是很清楚。我买的板子是MINI2440,nor flash上面烧写的是supervivi提供下载,问:下载程序下载到了nor flash什么位置?nor flash不能写入,那自然程序也不能修改自己的数据了,那申请的堆栈段这些必要的东西怎么办。所以我估计还是要将上面的程序复制到SDRAM上面。这个工作是不是要自己完成。还有CPU运行的第一条命令是不是supervivi,那它是怎么跳转到我们要执行的那个序的?现在网上可见的源码都是从nand flash启动的,我想知道有没有从nor flash启动的源码拿来参考一下,或则能提供一个从nand flash启动并完成下载功能的方法吗?在此不胜感激
展开
2个回答
展开全部
Mini2440的启动时读取的第一条指令是在0x00上,分为成nand flash和nor flash上启动。
Nor flash的有自己的地址线和数据线,可以采用类似于memory的随机访问方式,在nor flash上可以直接运行程序,所以nor flash可以直接用来做boot,采用nor flash启动的时候会把地址映射到0x00上。mini2440就是直接把vivi直接烧录在nor flash上。
Nand flash是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像nor flash、内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot。
Mini2440把Bootloader烧到nand flash上启动,因为在mini2440里有一个内置的SRAM,叫做stepping stone(垫脚石,很形象…),系统启动加电后,会把nand flash上的起始4KB的内容拷贝到SRAM里执行,这样就实现了从nand flash启动。如果bootloader小于4KB的话(像vboot),在SRAM里就能boot,大于4KB的话(u-boot,vivi),在SRAM里做一些基本初始化后,再把bootloader的剩余部分拷贝到SDRAM里(>0x30000000)。
你使用mini2440的时候,经常通过nor flash启动,进入vivi的菜单(mini2440的Nor flash已经烧录好了vivi),之后通过vivi的usb下载功能,把其他的bootloader下在到nand flash里,下载完成后,再通过nand flash启动,测试你的bootloader。
NOR flash适合做代码存储并EIP的,NAND适合用来作大量数据存储的。
Nor flash的有自己的地址线和数据线,可以采用类似于memory的随机访问方式,在nor flash上可以直接运行程序,所以nor flash可以直接用来做boot,采用nor flash启动的时候会把地址映射到0x00上。mini2440就是直接把vivi直接烧录在nor flash上。
Nand flash是IO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像nor flash、内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot。
Mini2440把Bootloader烧到nand flash上启动,因为在mini2440里有一个内置的SRAM,叫做stepping stone(垫脚石,很形象…),系统启动加电后,会把nand flash上的起始4KB的内容拷贝到SRAM里执行,这样就实现了从nand flash启动。如果bootloader小于4KB的话(像vboot),在SRAM里就能boot,大于4KB的话(u-boot,vivi),在SRAM里做一些基本初始化后,再把bootloader的剩余部分拷贝到SDRAM里(>0x30000000)。
你使用mini2440的时候,经常通过nor flash启动,进入vivi的菜单(mini2440的Nor flash已经烧录好了vivi),之后通过vivi的usb下载功能,把其他的bootloader下在到nand flash里,下载完成后,再通过nand flash启动,测试你的bootloader。
NOR flash适合做代码存储并EIP的,NAND适合用来作大量数据存储的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询