启动代码和Bootloader区别】的更多相关文章

很多人都会把两者混淆,所以这里稍微说一下. 启动代码和Bootloader有点类似于类和结构体的关系,也就是说结构体只是一种很特殊很特殊的类,但不能说类是一种结构体. 也就是说可以说启动代码是Bootloader,但是不能说Bootloader是启动代码.但是这也不是绝对的,只在某些情况下可以这么说. 通常,启动代码仅仅是指CPU复位后到main函数之前需要执行的汇编代码.需要这段代码是为了给C语言程序准备好堆栈空间,中断入口和外部数据等.而且这段汇编代码可以直接对硬件进行操作,效率很高. Bo…
什么是启动代码?     启动代码是系统上电或者复位后运行的第一段代码,是进入C 语言的main 函数之前需要执行的那段汇编代码.STM32的启动代码在startup_stm32f10x_hd.s 启动代码有何用?     它的作用是在用户程序运行之前对系统硬件及软件环境进行必要的初始化并在最后使程序跳转到用户程序.它直接面对ARM 处理器内核及硬件控制器进行编程,所执行的操作与具体的目标系统紧密相关.     C语言程序的运行需要具备一定的条件,如分配好外部数据空间.设置初始堆栈指针.配置时钟…
bootloader启动代码init.s解析----IRQ中断处理函数 init.s源代码如下: ;///////////////////////////////////////////// ;option.inc _ISR_STARTADDRESS EQU 0x33ffff00 ;2440addr.incINTOFFSET EQU  0x4a000014    ;Interruot request source offset ;/////////////////////////////////…
1.1  问题描述     __main函数的作用是什么呀?1.2  问题剖析     __main函数是C/C++运行时库的一个函数,嵌入式系统在进入应用主程序之前必须有一个初始化的过程,使用__main标号引导系统时必须将应用程序的入口定义为main().    在初始化的过程中,__main函数的作用主要有两点:    (1)  完成对映像文件的初始化操作     在介绍映像文件的初始化操作之前,先介绍以下几个概念:     1.  映像文件     链接器把多个目标文件链接成一个映像文件…
可以选择nand启动和nor启动,这两者之间的关系通过一个按键来选择 这个OM0有何玄机,在数据手册中有这么一段 位宽RAM启动了(当然,还得设置一些东西,下面就说), Nanaflash启动经历的过程相当于首先,2440自动从nand里面读取4K的代码,这4K代码将nand里面的数据拷贝到ram中,然后跳转到ram中执行代码,为什么是4K,因为 2440.s的启动代码需要包含几个文件 2440addr.inc 内部寄存器地址 Memcfg.inc 各个bank的内存配置数据 Option.in…
stm32启动代码分析 (2012-06-12 09:43:31) 转载▼     最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在csdn上看到一片文章写的不错,分享下: 文章转载至:http://blog.chinaunix.net/uid-2595338-id-2139588.html,感谢原作者!   使用的芯片是 STM32F103VET,编译器使用 IAR ARM V5.5   设置头文件查找路径,例如: $PROJ_…
前言 在学习.分析之前首先要弄明白一个问题:为什么要分析启动代码? 因为启动代码绝大部分都是用汇编语言写的,对于没学过或者不熟悉汇编语言的同学确实有一定难度,但是如果你想真正深入地学习Linux,那么读.分析某一个体系结构(比如ARM)的启动代码或者其他底层代码是必不可少的.当分析之后会发现这是有很多好处的:分析启动代码可以加深对汇编语言的理解:可以学习汇编语言的使用技巧:可以学习如何编写位置无关的代码,可以知道从启动到start_kernel()函数之前内核到底干了什么事情,从而为后续其他内核…
Android系统启动过程分析 Android系统的框架架构图如下(来自网上):   Linux内核启动之后----->就到Android的Init进程 ----->进而启动Android相关的服务和应用. 整个的启动过程如下图所示: 以下针对Android 4.2内核代码的启动部分进行分析. Init进程,是一个由内核启动的用户级进程.内核自行启动(已被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动用户级程序init的方式,完成引导进程. Init进程始终是第…
Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c  start_kernel()    --2>setup_arch(&command_line);//该函数位于arch/arm/kernel/setup.c           //在这个函数中定义了一个描述开发板的属性的结构体struct machine_desc *mdesc           struc…
源:ARM的启动代码(1):介绍 很多朋友搞嵌入式,写起代码来一点问题没有,到最后上板子调试的时候,挂了.究其原因,还是对芯片的启动地址.启动方式.bootloader和操作系统的衔接出了问题.今天就闲聊一下这个问题. 对于一个新处理器,我们最关心的是什么呢?并不是它支持不支持C编译器,有没有良好的开发环境.从程序员的角度说,要把一个新处理器吃透,必须明白两样东西:a)新处理器的内存模型:b)新处理器的中断方式.中断源等等.以ARM的AT91SAM9260为例. 一个ARM芯片可能有N种不同的启…