注:此文为部分摘录,并且在原文基础上有改动 link
这几天一直在摸索s3c2410的启动过程,几天的困惑终于在昨天晚上基本解决.下面详细分析一下它的最前面的启动过程.
1.在板子上电的一开始,首先自动判断是否是autoboot模式(这是由硬件设计阶段,由硬件工程师对mcu的引脚连线决定的),我所使用的s3c2410是带有nandflash的,并切被设置成autoboot,从nandflash开始启动.
2.在判断是autoboot模式后,mcu内置的nandflash控制器自动将nandflash的最前面的4k区域(这4k区域存放着 bootloader的最前面4k代码)拷贝到samsung所谓的"steppingstone"里面(实际上是一块4k大小的SRAM).
3.在拷贝完前4k代码后,nandflash控制器自动将"steppingstone"映射到arm地址空间0x00000000开始的前4k区域.(是从0地址开始吗?有疑问。比如公司的板子也是arm芯片,但是nandflash控制器在启动时却没有将"steppingstone"映射到0地址,而是映射到了其他地址段)
4.在映射过程完成后.nandflash控制器将pc指针直接指向arm地址空间的0x00000000位置,准备开始执行"steppingstone"上的代码.
... ...
至此,系统启动的“史前时期”结束,余下的启动工作由bootloader来完成。
关键字:s3c2410 nandflash 启动过程
引用地址:
s3c2410的nandflash启动过程分析
推荐阅读最新更新时间:2024-03-16 15:22
Linux(ARM-S3C2410)内核滴答定时器驱动
/*============================================================*/ 与硬件平台相关 /*============================================================*/ 1):arch/arm/plat-s3c24xx/time.c static void __init s3c2410_timer_init (void) { s3c2410_timer_setup(); setup_irq(IRQ_TIMER4, &s3c2410_timer_irq);
[单片机]
2440从NANDFlash启动之bootloader运行以前
一直对2440上电以后怎么从nandflash中启动不是很清楚,闲来无事看了下s3c2440的用户手册,看到下面这样一段话: S3C2440A boot code can be executed on an external NAND flash memory. In order to support NAND flash bootloader, the S3C2440A is equipped with an internal SRAM buffer called Steppingstone . When booting, the first 4KBytes of the NAND flash memory will be
[单片机]
s3c2410时钟信号:FCLK、HCLK和PCLK
s3c2410 有三个时钟FLCK 、HCLK 和PCLK (这3个时针都是核心时针) s3c2410 芯片有这么一段话: FCLK is used by ARM920T ,内核时钟,主频。 HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是为AHB总线上的外设提供时钟信号,包括USB时钟。 AHB总线用于连接高速外设。 PCLK is used for APB bus,
[单片机]
基于S3C2410的GPRS模块的设计
嵌入式系统就是一个具有特定功能或用途的计算机软硬件结合体,或指装入另一个设备并且控制该设备的专用计算机系统。嵌入式系统的最大特点是其具有目的性和针对性,即每一套嵌入式系统的开发都有其特殊的应用场合与特定功能。嵌入式系统包含硬件和软件两部分:硬件架构以嵌入式处理器为中心,配置 存储器 、I/O设备、通信模块等;软件部分以软件开发平台为核心,向上提供应用编程接口API,向下屏蔽具体硬件特性的板级支持包BSP。嵌入式系统中,软件和硬件紧密配合,协调工作,共同完成系统预定的功能。 GPRS是General Packet Radio Service的简称,即通用无线分组业务。它是基于现在运行的GSM基础上发展的数据业务,类似于固定
[单片机]
AT91RM9200的UBOOT启动烧写过程
Uboot 烧写过程 1. 一开始令BMS=1(拔掉跳线),则系统从片内ROM中启动。内部启动程序初始化调试串口和USB设备接口从外部载入启动程序。在Windows平台下,启动超级终端,发送文件loader.bin和u-boot.bin到SDRAM,成功启动u-boot. 2. 启动了u-boot后就利用u-boot的功能,发送boot.bin和u-boot.gz到SDRAM,然后再拷贝到FLASH,那么FLASH里面就固化了启动程序boot.bin和u-boot.gz。 3. 烧写FLASH的过程如下: U-Boot protect off all (注:清除Flash全部块的写保护) U-Boot erase a
[单片机]
ARM9系列嵌入式处理器S3C2410系统中LCD驱动开发
本文以三星公司ARM9内核芯片S3C2410的LCD接口为基础,介绍了在Linux平台上开发嵌入式LCD驱动程序的一般方法。 本文硬件采用三星公司的S3C2410芯片的开发板,软件采用Linux 2.4.19平台,编译器为arm-linux-gcc的交叉编译器,使用640×480分辨率的TFT彩色LCD,通过对其Linux驱动程序进行改写和调试,成功地实现了对该种屏的驱动和显示。 嵌入式驱动的概念 设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,
[单片机]
S3C2440框架与启动过程
下面是S3C2440的简单框图。 我们可以把程序烧写到NandFlash,然后设置为从NandFlash启动,也可以把程序烧写到NroFlash,然后设置为从NorFlash启动。 1.NorFlash启动:NorFlash基地址为零,cpu读出Nor上第一个指令,然后执行,然后cpu继续读出其他指令,然后执行。 NorFlash启动时片内ram地址为0x4000,0000. 2.NandFlash启动,片内4k 的Ram基地址为零,2440的硬件会把NandFlash的前面4k内容复制到片内内存,然后cpu从0地址取出第一条指令执行。 NandFlash启动时NorFlash不可访问。 另外,关于关于SR
[单片机]
S3c2410软件调试总结(三)
2410启动代码分析
这一章主要对目前广泛流行的2410启动代码进行分析:S3C2410的初始化代码主要涉及到对系统主要模块的配置、运行环境的建立、系统时钟、MMU等模块的配置,下面按执行顺序依次都各个部分进行分析:
程序入口:(ResetHandler) 在程序一开始,首先进行的一些操作主要保证初始化程序能够顺利的运行, 因此主要包括关闭WDT、中断,配置锁相环等。
配置memory接口 memory接口是确保数据访问正确的基本保障,此处主要配置SFR寄存器中0x48000000开始的memory接口寄存器组, 确保每个bank的位宽、访问类型(waitable)以及时序参数正确。如果没有特别的要求,一般来说时序参数
[嵌入式]