![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ARM
文章平均质量分 84
乾龙_Heron
Linux ARM POWER8 cc-NUMA BootLoader
展开
-
ARMv7汇编代码分析
为了分析ARMv7架构寄存器的使用,利用C程序生成ARMv7汇编,并分析之。1、C源程序代码如下(为了简化,函数功能很简单):# cat callfunc.c#include #include #include int main(){ int input=10; int tmp,result; tmp = func1(input); result = func2(tm原创 2012-07-13 12:00:18 · 8978 阅读 · 0 评论 -
ARM上电启动及Uboot代码分析
网上关于ARM的bootloader(以Uboot为例)的启动顺序的资料有好多,但是对于Uboot的地址映射、体系结构级操作介绍很少,都是直接开始Start.s代码的阅读。本文拟详细分析Uboot从上电,到第一条指令的执行,同时分析代码对于cache、TLB等部件的操作过程。以下内容以u-boot-2012.04.01源码为例,从网上很容易下载该版本。原创 2014-05-30 17:30:56 · 17851 阅读 · 72 评论 -
ARM多核处理器启动过程分析
你想知道多核处理器是否如何启动的?一张图就够了原创 2014-05-30 17:00:01 · 25689 阅读 · 1 评论 -
ARM中链接寄存器LR和指令寄存器IR的关系
ARM中LR存储的是发生异常时下一条将要执行的指令(也有可能是发生异常时的当前指令地址,比如发生预取中止异常),IR存储的是下一条将要执行的指令,有什么区别?先看定义:(1)PC是程序计数器,存储将要执行的指令地址(2)LR是链接寄存器,是ARM处理器中一个有特殊用途的寄存器,当调用函数时,返回地址即PC的值被保存到LR中(mov lr,pc)。(3)IR是指令寄存器,用来保存原创 2012-12-25 16:35:45 · 11070 阅读 · 3 评论 -
ARM Linux 3.x的设备树(Device Tree)
原文地址:http://blog.csdn.net/21cnbao/article/details/84575461. ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后转载 2013-05-03 14:48:50 · 1843 阅读 · 0 评论 -
Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)
好文,不得不转!!(http://blog.chinaunix.net/uid-20543672-id-3151113.html) Linux内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内转载 2013-05-03 14:34:04 · 1756 阅读 · 0 评论 -
U-boot中关于0xdeadbeef说明【目前最详细的】
U-boot 中的 .balignl 16 0xdeadbeef 说明U-boot 版本:1.2.0在 U-boot 的 cpu/arm920t/start.S 里有一处代码为 .balignl 16 0xdeadbeef ,初一看不知道意欲何为,但从伪指令 .balignl 来看,实际上就是对齐。对于某些处理器来说,所编写的代码不对齐并不会报错,但编译器为了优化,也可能会自动帮你对转载 2013-03-11 09:20:01 · 5890 阅读 · 0 评论 -
ARM Linux 的TLB miss和page fault的异常处理
ARMLinux的TLB miss处理过程——Heron(2012.11.23)在ARM架构下,TLB miss后的工作绝大多数情况是由hardwarepage table walk完成,特殊情况下hardware page table walk可以被关闭,此时发生TLB miss后CPU就会产生一个translationfault,剩下的工作由OS接管,完成对于translation f原创 2012-11-23 16:06:29 · 10164 阅读 · 0 评论 -
ARM处理器各个模式之间是如何切换的?ARM各个模式之间切换时,上下文的保存哪些是硬件在做?哪些是操作系统在做?
1、ARM处理器各个模式之间是如何切换的?答:除用户模式外的其他6种模式称为特权模式,这些模式中,程序可以访问所有系统资源,也可以任意进行处理器模式的切换。处理器模式可以通过软件控制进行切换(直接设置CPSR寄存器的后五位就可以在6种特权模式之间互相切换),也可以通过外部中断或异常处理过程进行切换(例如,在USR模式下,发生中断后切换到IRQ模式)。2、ARM各个模式之间切换时,上下文的保原创 2012-10-22 16:17:12 · 6483 阅读 · 0 评论 -
ARM用户层发生异常后软硬件协同处理流程
我这里是要简单说一下,在ARM平台的用户层发生异常后的软硬件协同处理流程,是个大致的概况,对宏观了解后,具体细节内容网上有很多,可以自行查询。用户层程序正在执行时,遇到未定义的指令(ARM不是别的指令)或者SWI软件中断指令(产生系统调用),就会产生异常,这里以未定义指令异常为例进行说明: 一旦出现未定义指令异常,CPU会自动做如下操作:(1)未定义原创 2012-10-20 20:06:37 · 2175 阅读 · 0 评论 -
ARM命令LDREX和STREX实现spinlock
在 include/asm-arm/spinlock.h 下有這麼一段#if __LINUX_ARM_ARCH__ 6#error SMP not supported on pre-ARMv6 CPUs#endif好啦,前提就是:只有 ARM core 版本 >=6 才可以繼續:all spin lock primitives 到最後都是使用下面這個基本型:转载 2012-07-31 14:53:34 · 5025 阅读 · 0 评论 -
ARM linux内核在内存中的布局
Kernel Memory Layout on ARM Linux Russell King November 17, 2005 (2.6.15)This document describes the virtual memory layout which the Linuxkernel uses for ARM processors. It indicates wh转载 2012-08-15 09:58:06 · 3659 阅读 · 0 评论 -
ARM Linux中断机制分析
ARM Linux中断机制分析——以用户模式产生irq中断为例以下代码基于内核linux2.6.38.3(trimslice官网下载)本文主要分析ARM发生中断时的处理流程,以在usr态发生IRQ为例,即usr—>irq为例讨论。 1.内核异常向量表的初始化1.1初始化大致流程ARM linux内核启动时,首先运行的是linux/arch/arm/kerne原创 2013-02-21 14:46:04 · 14322 阅读 · 4 评论