1 以s3c2440为例的arm芯片的启动过程-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以s3c2440为例的arm芯片的启动过程

电子设计 来源:TOMORROW 星辰 作者:TOMORROW 星辰 2020-12-02 14:13 次阅读

arm 嵌入式芯片的启动过程对于嵌入式菜鸟来说其实是很复杂的,很多人都是一知半解,存在很多误区。在笔者看来,要想真正了解这一启动过程必须要首先了解存储器的区别与联系,参考文章:各种主流半导体存储器的区别与联系。还需要了解程序是如何编译链接和执行的。

本文将以s3c2440为例详细讲述 arm 芯片的启动过程。s3c2440支持两种启动模式:NAND FLASH 启动和非 NAND FLASH 启动(一般是NOR FLASH 启动,并且可以配置数据宽度),通过 OM1、OM0 两个管脚来控制。

NAND FLASH启动过程

当 OM1、OM0 两个管脚都为低电平时,CPU 就被配置成了 NAND FLASH 启动。此时 CPU 内部的 4KB 的 SRAM 就会被映射到 nGCS0 的空间(起始地址为 0x00000000),上电时 CPU 会自动将 NAND FLASH 中前 4KB 的数据拷贝到该片内 SRAM。然后 CPU 从内部 SRAM 的 0x00000000 地址开始执行程序,对系统进行相应的初始化,为后续 4Kb 以外的程序执行做准备。

也就是说,CPU 启动过程之时能够执行的程序最多只能占用 4Kb 大小的空间。如果需要执行更多程序,则需要在 4Kb 的程序里完成对 DRAM 的初始化(DRAM 在使用前必须初始化),配置好栈空间,并将需要执行的程序拷贝到 DRAM 中,然后跳转到 DRAM 中继续执行。

启动过程之所以要将 NAND FLASH 中的代码先拷贝到内部 SRAM 再执行,是因为 NAND FLASH 需要通过 NAND FLASH 控制器来进行访问,不能通过 CPU 的总线直接访问,所以不能够执行程序。

NOR FLASH启动过程

当系统配置为此方式启动时,CPU 内部 SRAM 则不再被映射到地址空间中,此时被映射到 nGCS0(起始地址为 0x00000000)地址空间的应该是外部的 NOR FLASH(存放启动代码的存储器)。系统上电或者复位时,CPU 直接从 0x00000000 地址(也就是 NOR FLASH 的起始地址)开始执行代码。相比 NAND FLASH 启动,NOR FLASH 的启动代码可以达到 128Mb 之大(s3c2440)。

之所以可以在 NOR FLASH 上直接执行代码,是因为 NOR FLASH 具有类似 RAM 的访问接口,可以通过 CPU 总线直接进行随机读取,但不支持随机写操作。因此,这些启动代码里是不可有 C 语言的,应为程序里必然会有变量(需要写),需要栈空间调用函数(同样需要写),而汇编程序则是可以避免对内存空间的写操作的。

那么是不是说,如果是 NOR FLASH 启动就不能有 C 程序了呢?当然不是的,不要忘了还有 DRAM 的存在。当 NOR FLASH 启动过程完成了对 DRAM 的初始化,栈空间的配置之后就可去调用 C 语言的程序了。

这就是 arm 芯片的启动过程了,其实在启动过程中的最开始的那些启动代码里还有很多地方值得细细斟酌的,也会有很多疑问,这个时候就应该去了解程序是怎么编译链接的、又是如何执行的。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9084

    浏览量

    367373
  • NAND
    +关注

    关注

    16

    文章

    1681

    浏览量

    136117
  • 嵌入式芯片
    +关注

    关注

    4

    文章

    230

    浏览量

    27680
  • S3C2440
    +关注

    关注

    4

    文章

    132

    浏览量

    38863
收藏 人收藏

    评论

    相关推荐

    BQ79600-Q1启动过程

    德赢Vwin官网 网站提供《BQ79600-Q1启动过程.pdf》资料免费下载
    发表于 11-09 14:57 0次下载
    BQ79600-Q1<b class='flag-5'>启动过程</b>

    AIC3254启动过程是怎样的?需要功能调节延时,请问怎么实现?

    AIC3254 启动问题 :没有IIS,时钟是用MSP430产生的8M给AIC3254工作时钟的,但是每次启动要用手摸一下MCLK才能启动,什么原因呢!大侠们能否说明一下AIC3254启动
    发表于 11-07 07:28

    负载电容对电源转换器启动过程的影响

    理想的电源转换器需要无论负载如何变化都保持输出电压稳定。在实际应用中,负载瞬态期间选择不合适的输出电容会导致过高的纹波电压和浪涌电流,从而影响电源转换器的性能。本文将介绍选择输出电容的指南,详细介绍负载电容对启动过程的影响,并提供改进建议。
    的头像 发表于 10-28 11:08 254次阅读
    负载电容对电源转换器<b class='flag-5'>启动过程</b>的影响

    PA3113D2在系统启动过程中会出现一个POP声,请问是什么原因造成的?

    请教各位高手,我现在CODEC芯片用的是WOLFSON WM8960,OPA用的是TI PA3113D2,上电瞬间的POP声已经解决,但是在系统启动过程中(快启动完成时)还会出现一个POP声,请问是什么原因造成的?
    发表于 10-18 06:39

    使用pahomqtt启动过程中pipe_fops_open时出现rt_condvar_timedwait ,如何解决?

    在使用pahomqtt 启动过程中pipe_fops_open 时出现rt_condvar_timedwait 死等,而RTT 5.0则可以。请问该如何解决?
    发表于 09-26 07:11

    【技术分享】CAN总线相关知识探讨以及Model3C两路CAN的应用

    CAN总线相关知识,个位数价格的工业级HMI芯片–Model3C, 2路CAN的应用
    的头像 发表于 09-05 10:59 536次阅读
    【技术分享】CAN总线相关知识探讨以及Model<b class='flag-5'>3C</b>两路CAN的应用

    YTM32的HA系列微控制器启动过程详解

    见,确保信息安全的需要。然而,开发者在自行编译固件时,需要配合BOOT ROM中的bootloader,才能正常地引导到用户应用程序,完成启动过程
    的头像 发表于 07-15 09:24 409次阅读
    YTM32的HA系列微控制器<b class='flag-5'>启动过程</b>详解

    启动柜的作用和功能是什么

    启动柜是一种用于电机启动的电气设备,它通过控制电机启动过程中的电压和电流,实现电机的平滑启动,减少启动过程中的电流冲击和机械冲击,延长电机
    的头像 发表于 06-18 14:29 1386次阅读

    什么叫软启动?如何实现软启动

    启动(Soft Start)是一种电动机启动方式,它通过控制电动机的启动电流,使电动机在启动过程中逐渐加速,从而减少启动时的电流冲击和机械
    的头像 发表于 06-18 11:31 8221次阅读

    STM32__UCOSII系统启动过程中空闲任务和统计任务扮演怎样的角色?

    如题STM32__UCOSII系统启动过程中空闲任务和统计任务扮演怎样的角色
    发表于 05-08 07:37

    基于S3C2440和专用DSP的嵌入式四轴运动控制器

     PCL6045BL是一种新型专用DSP运动控制芯片,它具有强大的数据处理能力和较高的运行速度,可以实现高精度的多轴伺服控制。解决精密制造对低成本、可移植性强的通用型多轴数控系统的迫切需求,文中给出一种基于ARM 微处理器
    发表于 05-03 10:44 544次阅读
    基于<b class='flag-5'>S3C2440</b>和专用DSP的嵌入式四轴运动控制器

    Arm Neoverse S3 系统 IP 打造机密计算和多芯粒基础设施 SoC 夯实根基

    Arm 基础设施事业部高级产品经理 Mohit Taneja   Arm Neoverse S3Arm 专门面向基础设施的第三代系统 IP,应用范围涵盖高性能计算 (HPC)、机
    发表于 03-26 16:33 768次阅读
    <b class='flag-5'>Arm</b> Neoverse <b class='flag-5'>S3</b> 系统 IP <b class='flag-5'>为</b>打造机密计算和多芯粒基础设施 SoC 夯实根基

    STM32WBA Nucleo-64设置主频100M,发现启动过程中卡死在PWR_VOSR_VOSRDY,为什么?

    使用ST官方的STM32WBA Nucleo-64板子, 当设置主频100M,发现启动过程中卡死在PWR_VOSR_VOSRDY; 设置主频16MHz的时候,可以正常完成初始化。 使用的是CodeMx生成的工程 这是啥原因呢
    发表于 03-14 08:28

    电源芯片启动过冲有哪些影响?怎么测试电源芯片启动过冲?

    电源芯片启动过冲过大会对芯片中的元件造成损害,例如电容、电感等。这些元件在受到过冲电压的作用时可能会出现短路或开路等现象,从而造成芯片损害,影响
    的头像 发表于 12-27 15:48 1148次阅读
    电源<b class='flag-5'>芯片</b><b class='flag-5'>启动过</b>冲有哪些影响?怎么测试电源<b class='flag-5'>芯片</b>的<b class='flag-5'>启动过</b>冲?

    S3C2440的SPI0与AD7739通信,S3C2440作为主机,请问波特率应根据什么设置,应设置多少?

    我用的S3C2440的SPI0与AD7739通信,S3C2440作为主机,请问波特率应根据什么设置,应设置多少?问题比较低级,请勿见笑。
    发表于 12-22 06:56