您的位置 首页 基础

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

当在S3C6410跑操作系统的时候,我们不太会注意S3C6410的内存使用情况,但是,当我们做裸板测试时,该处理器的8K的片内内存的使用就不得不注意,一旦编写的程序大小超过了片内内存的大小,我们就不能

  当在S3C6410跑操作体系的时分,咱们不太会留意S3C6410的内存运用情况,可是,当咱们做裸板测验时,该处理器的8K的片内内存的运用就不得不留意,一旦编写的程序巨细超越了片内内存的巨细,咱们就不能得到正确的成果,究其原因,咱们先看一下S3C6410的发动进程。

  S3C6410假如选用NANDflash发动,在咱们烧写裸板程序是,先将程序烧写至NANDflash中,S3C6410经过硬件将NANDflash中前8K的程序完好复制到S3C6410片内内存中。若裸板程序较小,程序能够正常运转,若果程序超越了8K,那么裸板测验程序不能完好的复制到片内内存,使得程序呈现不知道的成果。这时,咱们需求重视S3C6410的各种内存的运用情况了。

  咱们知道,在一个程序文件中,具有代码段、数据段和bss段,而一个程序的bin文件中是没有bss段,因而,在程序的bin文件中首要完结:

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

  为进一步阐明发动进程,现在进行具体的阐明:

  S3C6410为NANDflash发动,一起S3C6410外挂DDR,这样,就能处理程序超越8K之后的正常运转。三者之间的衔接示意图如下图所示:

  咱们知道,S3C6410发动的时分,将NANDflash中前8K的程序完好复制至S3C6410片内内存中,在这8K程序中,有必要完结硬件初始化、DDR初始化和程序从NANDflash中复制到DDR中,这样才干确保S3C6410cpu程序能够跳转到DDR,确保程序的顺利进行。在这进程中会涉及到程序的链接地址和程序的重定位方面的常识,假如你对这方面常识不熟悉,请查阅该方面的常识。

  三者之间的操作过程如下:

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

  2、体系从S3C6410片内内存0地址开端履行,此刻程序需求完结DDR初始化、将bin程序从S3C6410片内内存或许NANDflash复制到DDR链接地址开端方位;

  3、将NANDflash程序复制到DDR中,通进程序重定位和链接到DDR链接地址开端方位(此刻留意,在程序的编写中需求用方位无关跳转指令进行编写,不然程序会由于跳转后找不到链接开端地址和变量而呈现过错)

  4、当体系完结以上操作后,经过方位相关指令将PC值链接到DDR重定位方位,完结程序的运转(留意此刻应运用方位相关指令完结PC值的跳转,若运用方位无关指令,则程序一向循环在S3C6410片内内存中)。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/118240.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部