keil4 启动代码关于norflash、nandflash拷贝/开发环境基地址/RO段、RW段、ZI段/加载域、执行域 总结

软件开发环境:keil4

硬件开发平台:mini2440

启动代码参考:《ARM处理器裸机开发实战》TQ2440启动代码


1.软件开发环境加载域、执行域总结

norflash启动 

    首先看下图:

    


   如为上图所示设置,表明RO段基地址为0x0,RW的基地址0x30000000,则表明RO段在Norflash中执行,取指令也会涉及到norflash的数据读取,

但是RW段将会在SDRAM中保持和更新,程序执行速度应该比较慢。

   注意:1)从这里配置的话,RO段会被当成固定域,RO段的加载域和执行域的起始地址必须相同。

               2)RW段加载域紧跟在RO段之后,所以启动代码必须实现RW段从norflash到SDRAM的拷贝。

               3)RO的加载域和执行域都在norflash中,RW的加载域在norflash中,执行域在SDRAM中。


    如为上图所示设置,表明RO段和RW段加载域和执行域均在SDRAM中,指令预取也会从SDRAM中取,程序在SDRAM中执行,程序的执行速度应该较快。

    注意:1)启动代码中必须实现RO段和RW段从norflash到SDRAM的拷贝。

                2)启动代码中的程序必须实现代码无关性,最后在跳转到绝对地址处(SDRAM中)执行。

                3)RO和RW的加载域和执行域均在SDRAM中。

                4)startup处打钩并不表示程序一开始就从0x30000000处执行,那是用于提示中断入口地址的。

                5)程序已开始肯定是从绝对地址0x0开始执行的,这是硬件的硬性规定。


NANDFLASH启动

    同上,我不再截图。

    第一种情况,0x0地址作为RO的加载域和执行域基地址,即RO段在S3C2440内部SRAM中,那就必须保证你的代码段+只读数据段<4k。

    注意:1)必须保证你的代码段+只读数据段<4k。

                2)RO加载域和执行域均在内部SRAM中,作为固定域,RW加载域和执行域均在SDRAM中。

                3)启动代码中必须实现RW段从NANDFLASH到SDRAM中的拷贝。

                4)貌似不常用。

    第二种情况,从0x30000000地址作为RO加载域和执行域的基地址,即RO和RW段加载域和执行域均在SDRAM中。

    注意:1)RO和RW段加载域和执行域均在SDRAM中。

                2)启动代码中必须实现将RO段和RW段从NANDFLASH拷贝至SDRAM的代码。

                       一般来说,实现如下:首先将NANDFLASH中所有数据和代码拷贝至SDRAM,再根据RO和RW基

                       地址,在SDRAM内部实现加载域到执行域的拷贝。

                3)程序已开始肯定是从绝对地址0x0开始执行的,这是硬件的硬性规定。

                4)启动代码中的程序必须实现代码无关性,最后在跳转到绝对地址处(SDRAM中)执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值