当在S3C6410跑操作系统的时候,我们不太会注意S3C6410的内存使用情况,但是,当我们做裸板测试时,该处理器的8K的片内内存的使用就不得不注意,一旦编写的程序大小超过了片内内存的大小,我们就不能得到正确的结果,究其原因,我们先看一下S3C6410的启动过程。

本文引用地址:http://www.eepw.com.cn/article/203124.htm

  S3C6410如果选用NANDflash启动,在我们烧写裸板程序是,先将程序烧写至NANDflash中,S3C6410通过硬件将NANDflash中前8K的程序完整复制到S3C6410片内内存中。若裸板程序较小,程序可以正常运行,若果程序超过了8K,那么裸板测试程序不能完整的复制到片内内存,使得程序出现未知的结果。这时,我们需要关注S3C6410的各种内存的使用情况了。

  我们知道,在一个程序文件中,拥有代码段、数据段和bss段,而一个程序的bin文件中是没有bss段,因此,在程序的bin文件中主要完成:

  ①硬件的初始化
  ②DDR的初始化
  ③S3C6410程序的重定位
  ④拷贝程序至DDR中
  ⑤清除DDR中bss段
  ⑥程序链接至DDR中

  为进一步说明启动过程,现在进行详细的说明:

  S3C6410为NANDflash启动,同时S3C6410外挂DDR,这样,就能解决程序超过8K之后的正常运行。三者之间的连接示意图如下图所示:

ARM11 S3C6410系列教程之三:内存使用

  我们知道,S3C6410启动的时候,将NANDflash中前8K的程序完整拷贝至S3C6410片内内存中,在这8K程序中,必须完成硬件初始化、DDR初始化和程序从NANDflash中拷贝到DDR中,这样才能保证S3C6410cpu程序可以跳转到DDR,保证程序的顺利进行。在这过程中会涉及到程序的链接地址和程序的重定位方面的知识,如果你对这方面知识不熟悉,请查阅该方面的知识。

  三者之间的操作步骤如下:

ARM11 S3C6410系列教程之三:内存使用

  1、系统上电,S3C6410为NANDflash启动,硬件自动将NANDflash中前8k的程序复制到S3C6410片内内存中;

  2、系统从S3C6410片内内存0地址开始执行,此时程序需要完成DDR初始化、将bin程序从S3C6410片内内存或者NANDflash拷贝到DDR链接地址起始位置;

  3、将NANDflash程序拷贝到DDR中,通过程序重定位和链接到DDR链接地址开始位置(此时注意,在程序的编写中需要用位置无关跳转指令进行编写,否则程序会因为跳转后找不到链接起始地址和变量而出现错误)

  4、当系统完成以上操作后,通过位置相关指令将PC值链接到DDR重定位位置,完成程序的运行(注意此时应使用位置相关指令完成PC值的跳转,若使用位置无关指令,则程序一直循环在S3C6410片内内存中)。


注意:

s3c6410启动时自动拷贝nand flash前4页的内容到片内内存执行,而且拷贝时只拷每页中的前2KByte好像是为了兼容2k页的 所有copy2ddr函数中不要把所有数据全部照搬过去,只搬每页的前2k到ddr连接起来 。可以参考“百问网6410第1期Nand flash的问题”修改nand_read函数!


关键字:OK6410  启动分析 引用地址:OK6410启动分析

上一篇:OK6410裸机片内内存中重定位代码
下一篇:OK6410裸机学习之串口实验

推荐阅读

这款号称全球首款移动机器人,不是AGV ,也不是平衡车,他就是路萌——一个移动的商业机器人。相对于目前市面上绝大多数只能“坐”在家里的桌面上、平滑的地板上的机器人。路萌拥有强大的自主移动能力,它利用人工智能算法赋能的摄像头感知周围的人和事物,可以聪明的跟随你一起行动。虽说智商还无法媲美人类,但已足够担任你的随身伴侣!作为一个机器人...
5G开创新局面随着新一代蜂窝通信5G的发展势头日渐增强,部署5G通信基础设施的竞争也开始如火如荼地进行。移动运营商们正忙于部署基础设施,并启动营销计划,以吸引大家升级自己的智能手机服务合同与手机配置,从而充分利用5G显著提高的数据速率。与上一代3G向4G的转变不同,5G的通信架构不是一次迭代升级。5G首次使用了24至40GHz毫米波(mmWave)频谱中的...
据《科创板日报》报道,从供应链获悉,除 iPhone 12 Pro 和 iPhone 12 Pro Max 两款机型之外的另外两款机型,其 OLED 屏幕由京东方供货。  根据此前爆料,苹果今年将推出四款 iPhone 12 新机,配备 5nm A14 处理器,造型回归 iPhone 4 的硬朗设计。  IT之家了解到,有消息称,iPhone 12 系列最高端机型除新增 ToF ...
今天要做的实验是在ST的三合一开发板上,用汇编语言写一个程序,驱动板上的LED指示灯闪烁。开发板上的LED1接在STM8的PD3上,因此要将PD3设置成输出模式,为了提高高电平时的输出电流,要将其设置成推挽输出方式。这主要通过设置对应的DDR/CR1/CR2寄存器实现。还是利用ST的开发工具,先生成一个汇编程序的框架,然后修改其中的main.asm,修改后的代码如下。...

史海拾趣

问答坊 | AI 解惑

MEMS Pro v4.0 的中文教程

    有这个软件的中文教程吗?…

查看全部问答∨

手机新功能开发

本帖最后由 paulhyde 于 2014-9-15 09:11 编辑 手机新功能开发  …

查看全部问答∨

12v逆变器18V

各位朋友们大家好,我是一家电子厂工作的员工。现在就有一个难题请各位朋友帮帮忙?谢谢。…

查看全部问答∨

问个困扰了我两周的问题

  是这样的,我之前在2410的开发板上移植了linux系统,然后用QT作了个图形程序并且一直到了开发板的linux中并且能够正常运行。目前的想法是将之前开发板的LCD换成图形点阵的单色屏,这样的话QT能正常显示在单色屏里吗?望高手指点。。。…

查看全部问答∨

音频问题 CETK测试

今天我用cetk来测试我的驱动程序关于AUDIO部分的。 我的音频部分录音很放音平时在机器上测都没有问题。。。都用了很长时间了,起码有3个月了。。但是今天用cetk测试的结果是 *** vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ...…

查看全部问答∨

手机电池的续航时间延长12倍

相信很多人都在为自己的手机续航时间太短而苦恼。别着急,现在的一项新技术就能够将手机电池的续航时间延长到现在的12倍!这是由一位就读于加拿大卡尔顿大学(Carleton University)的博士生Atif Shamin发明的新技术。传统手机是通过电线将手机的电路 ...…

查看全部问答∨

STM32AD怎么这么差劲啊?

我用LM336做AD参考电压,我量过336输出2.5V很精确加一个1V(比较稳定)电压,采集数据最大最小相差50个数据。我用过万利的板子测试过他们的AD,他们用的AMS117做参考,误差也不超过5个数据。看看我原理图右问题吗?…

查看全部问答∨

硬件工程师入门教程

硬件工程师入门教程…

查看全部问答∨

帮忙看看我写的频率计为什么没反应?

#include<reg52.h>#define uchar unsigned char #define uint unsigned intuchar shu=0,count=0;uchar qian,bai,shi,ge;long  f;uchar code dutable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void display(uchar qian,ucha ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved