通过分析start.S代码,学习ARM体系结构是一种很好的方法。
start.S是u-boot的关键部分,CPU上电后最先开始执行的代码,和ARM体系结构息息相关。
通过查阅代码中遇到的各种指令,来进一步了解ARM体系结构中各个知识点。
/*
* the actual start code
*/
start_code:
/*
* set the cpu to SVC32 mode
*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
红色字体是要查阅的
MRS:MRS是要将CPSR寄存器中的内容保存到通用寄存器中,在这里是r0,就是说CPSR(当前程序状态寄存器)必须使用MRS这条指令才能读取
CPSR:当前程序状态寄存器,保存了CPU当前的各种状态,另外还有一个SPSR(保存的程序状态寄存器),是在异常处理前对CPSR的保存。
CPSR的用途-改变CPSR的值通常出于几个目的:
- 改变condition code标志
- 使能/禁止中断
- 改变处理器模式
- 改变load或store操作的字节序
- 改变处理器状态(J and T)
待续。。。。。。
关键字:ARM体系架构 uboot
引用地址:
ARM体系架构学习 -uboot分析之start.S
推荐阅读最新更新时间:2024-03-16 14:58
TQ2440之uboot---4.分析u-boot Makefile 最后连接的过程
1.最后生成u-boot的过程 以下是u-boot Makefile最后连接生成u-boot的过程 UNDEF_SYM=`arm-linux-objdump -x lib_generic/libgeneric.a board/EmbedSky/libEmbedSky.a cpu/arm920t/libarm920t.a cpu/arm920t/s3c24x0/libs3c24x0.a lib_arm/libarm.a fs/cramfs/libcramfs.a fs/jffs2/libjffs2.a net/libnet.a rtc/librtc.a drivers/libdrivers.a drivers/nand/libn
[单片机]
ARM体系架构—ARMv7-A处理器模式及寄存器
一、ARMv7-A处理器模式 ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界。 在非安全模式下,存在三种运行特权PL0,PL1和PL2(privilege level)。 If the Virtualization Extensions are implemented there is a privilege model different to that of previous architectures. In Non-secure state there can be three privilege l
[单片机]
2.移植uboot-添加2440单板,并实现NOR、NAND启动
1.首先在uboot里新建单板2440 1.1将2410的单板文件夹拷贝成2440: cd board/samsung/ cp smdk2410 smdk2440 -rf //拷贝文件夹, 然后将smdk2440下的smdk2410.c改为smdk2440.c,以及修改更改好的Makefile 1.2 将2410的头文件拷贝成2440: cd ../../include/configs/ cp smdk2410.h smdk2440.h 2.新建后,还需要修改boards.cfg,使uboot支持2440单板: 仿照 smdk2410 arm arm920t
[单片机]
深入理解ARM体系架构(S3C6410)---UART实例
1、 概括OVERVIEW S3C6410提供了4个独立的异步串行口,每个独立的串行口可以工作在中断模式或DMA模式下。也就是说UART能够产生一个中断或DMA请求。UART可以提供最高3Mbps。每个UART包含2个64位的FIFO,分别用于接收,发送缓冲。 S3C6410 UART 包括可编程的波特率,红外发射接收,1或2个停止校验位,5,6,7,8数据位,和奇偶检验。每个UART包含一个波特率发生器,接收发送和控制单元。 波特率可以由PCLK,EXT_UCLK0或EX_UCLK1锁定。发送接收器分别包含了一个64位FIFO和一个数据移位器。通过向FIFO写入数据,再把FIFO中的数据拷贝到数据移位器中,从而通过TxD
[单片机]
uboot-2011.12移植到S3C2440(三)——硬件初始化:看门狗、中断、时钟
/* * turn off dog, see C18P3 */ ldr r0, =pWTCON mov r1, #0x0 str r1, /* * C14 * mask all IRQs by setting all bits in the INTMR - default */ mov r1, #0xffffffff ldr r0, =INTMSK str r1, ldr r1, =0x7fff ldr r0, =INTSUBMSK str r1, /* * FCLK:HCLK:P
[单片机]
UBOOT和bootloader的关系
uboot是一个通用的免费开放源码的boot程序,支持很多的处理器。 以下是现在网上下载一个u-boot-1.1.1版本,用于at91rm9200系统的修改的例子。最后在redhat8.0上,用gcc2.95编译通过。 在网上下载了uboot-1.1.1版本。要用于自己的at91rm9200的系统,这个系统的情况是: SDRAM: 32Mbytes NCS1 FLASH: 8Mbytes NCS0 涉及到的文件有四个: common.h flash.c flash.h ./board/at91rm9200dk/config.mk 以下简单的说说。 一、首先读读uboot自带的readme文件,了解了一个大概。
[单片机]
嵌入式POS机的基础--ARM体系架构
在嵌入式领域,ARM(全称Advanced RISC Machines)的名字可谓是无人不知,在32位市场,ARM架构的产品占据高达75%的市场份额,居于垄断地位。该架构的专利持有者就是ARM公司。ARM成立于1990年,它实际上是Arcon、Apple和VLSI三家企业共同合作的产物。当年,Acron公司需要为它们的Archimedus电脑开发一枚处理器,Apple公司同样寻求一款可以代替摩托罗拉68000 CISC处理器的RISC架构产品,而VLSI则打算设计出一枚精简高效的RISC处理器用于集成系统中。颇富戏剧性的是,这三家企业最终都没有实现自己的目的,但ARM架构却在它们未曾想到的嵌入式领域被发扬光大。 ARM体系架构
[单片机]