ARM Linux启动过程学习

发布者:chunxing最新更新时间:2016-06-16 来源: eefocus关键字:ARM  Linux  启动过程 手机看文章 扫描二维码
随时随地手机看文章
 linux根目录中的vmlinux.o为arm-linux-ld link得到的一个elf格式的文件,这个文件包含kernel下的head.o+driver+MM+FS+net等其他

o文件。

 

使用kernel目录下的vmlinux.lds link脚本生成vmlinux elf格式的可执行文件

 

Vmlinux使用arm-linux-objcopy生成bin格式的文件 image。仅仅包含指令和数据。

可以load到sdram的0x30008000地址运行。为什么非要load到这个地址呢?通过跟踪

Head.S执行,发现在__lookup_machine_type函数中,如果load地址不是0x30008000,

Ldmia r3, {r4, r5, r6}会出现错误,r4的内容出现错误

 

为了分析linux启动过程,生成一个最小的kernel,然后使用AXD+JTAG来进行单步跟踪

 

 

生成一个tiny kernel 使用axd跟踪 500+K的bin文件,load到0x30008000地址进行跟踪

首先执行的代码为compressed head.S中的start.S unzip了一些代码,重新放入0x30008000,然后再次从0x30008000地址重新执行新的代码

 

 

问了得到kernel中的函数虚拟地址,需要生成system.map文件。

下面的命令可以得到system.map

NM=arm-linux-nm  /bin/sh /hdd/linux-2.6.28/scripts/mksysmap vmlinux System.map

 

ARM Linux启动过程:

 

 

在CPU执行kernel中的第一个指令之前,bootloader必须完成一些工作:

1 初始化CPU进入SVC模式 关闭IRQ/FIQ disable

2 初始化一个串口 kernel会输出调试信息

 

Kernel中的head.S流程:

确保ARM CPU运行在SVC模式并且IRQ disable

从协处理器中得到CPU的ID

Bl指令调用__lookup_processor_type函数查找proc info lds link脚本根据autoconf.h中配置的CPU类型,把proc-arm920.S文件中的信息存放到__proc_info_begin和__proc_info_end之间,根据CPU的ID查找CPU类型是否支持

Bl调用__lookup_machine_type,根据arch number查找。方式类似proc的查找。使用MACHINE_START来把mach info通过lds脚本存放在.arch.info.init。mach-smdk2440.c中的内容

Bl调用 __vet_atags查找bootloader传入的tags地址

Bl调用__create_page_tables建立pagetable

返回地址设置为__enable_mmu

执行__arm920_setup

关键字:ARM  Linux  启动过程 引用地址:ARM Linux启动过程学习

上一篇:arm linux 启动流程之 进入内核
下一篇:arm linux 启动过程

推荐阅读最新更新时间:2024-03-16 14:57

解析ARM在脑电信号采集系统的应用
1 引言 脑电信号是通过电极记录下来的脑细胞群的自发性、节律性电活动。这种电现象伴随着生命的始终,一旦死亡,电现象就会随之消失。我们通常所说的脑电图是指头皮脑电图(scalp electroencephalogram),实际上就是头皮电位差与时间之间的关系图。脑电波是脑神经细胞总体活动,包括离子交换、新陈代谢等的综合外在表现,深入地研究脑电波的特性将推进人们对自身大脑的探索研究进程,增强其对疾病的辅助诊断能力。脑电信号是人体重要的生理信号。根据研究表明,脑电信号的主要特点为:脑电信号幅度为5μV~100μV,一般只有50μV左右;频率范围为0.5 Hz~35 Hz;具有极强工频50 Hz干扰和极化电压干扰;内阻从几十千欧到几百千
[单片机]
解析<font color='red'>ARM</font>在脑电信号采集系统的应用
Arm CCA赋能开发者拥有机密计算能力
(2021年6月24日)Arm今日发表全新Arm®v9架构的安全性功能Arm 机密计算架构(Arm Confidential Compute Architecture, Arm CCA)的初步技术规格。Arm年初推出的Armv9架构将是未来3,000亿颗基于Arm架构芯片的技术先驱,而Arm CCA将成为改变行业在应用程序中构建计算环境信任模型的处理方式。除了揭示第一批技术规格,通过赋能所有开发者使用机密计算的好处,Arm也分享释放数据的力量与潜力的愿景。 机密计算:下一个安全处理的时代 当今,各种应用程序与虚拟机对于监管软件(内核或虚拟机管理器)赋予相当大的信任,监管软件可以访问应用程序为其代码和数据所使用的资源,而利用
[物联网]
第014课 Jz2400_ARM异常与中断体系详解
第001节_概念引入与处理流程 取个场景解释中断。 假设有个大房间里面有小房间,婴儿正在睡觉,他的妈妈在外面看书。 问:这个母亲怎么才能知道这个小孩醒? 过一会打开一次房门,看婴儿是否睡醒,让后接着看书 一直等到婴儿发出声音以后再过去查看,期间都在读书 第一种 叫做查询方式: *优点:简单 *缺点: 累 写程序如何: while(1) { 1 read book(读书) 2 open door(开门) if(睡) return(read book) else 照顾小孩 } 第二种叫中断方式: 优点:不累 缺点:复杂 写程序: while(1) { re
[单片机]
第014课 Jz2400_<font color='red'>ARM</font>异常与中断体系详解
STM32上电启动过程分析(START_TEST代码实例)
一、概述 1、说明 每一款芯片的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集、中断向量安排等内容,是非常值得玩味的。 STM32作为一款高端 Cortex-M3系列单片机,有必要了解它的启动文件。打好基础,为以后优化程序,写出高质量的代码最准备。 本文以一个实际测试代码--START_TEST为例进行阐述。 2、整体过程概括 STM32整个启动过程是指从上电开始,一直到运行到 main函数之间的这段过程,步骤为(以使用微库为例): ①上电后硬件设置SP、PC ②设置系统时钟 ③软件设置SP ④加载.data、.bss,并初始化栈区 ⑤跳转到C文件
[单片机]
STM32上电<font color='red'>启动</font><font color='red'>过程</font>分析(START_TEST代码实例)
CAN总线在嵌入式Linux下驱动程序的实现
1 引言 基于嵌入式系统设计的工业控制装置,在工业控制现场受到各种干扰,如电磁、粉尘、天气等对系统的正常运行造成很大的影响。在工业控制现场各个设备之间要经常交换、传输数据,需要一种抗干扰性强、稳定、传输速率快的现场总线进行通信。文章采用CAN总线,基于嵌入式系统 32位的S3C44B0X微处理器,通过其SPI接口,MCP2510 CAN控制器扩展CAN总线;将嵌入式操作系统嵌入到S3C44B0X微处理器中,能实现多任务、友好图形用户界面;针对S3C44B0X微处理器没有内存管理单元MMU,采用uClinux嵌入式操作系统。这样在嵌入式系统中扩展CAN设备关键技术就是CAN设备在嵌入式操作系统下驱动程序的实现。文章重点解决了CAN
[单片机]
CAN总线在嵌入式<font color='red'>Linux</font>下驱动程序的实现
arm开关中断汇编接口
; EQUATES ;******************************************************************************************************** CPU_ARM_CTRL_INT_DIS EQU 0xC0 ; Disable both FIQ & IRQ ;********************************************************************************************************
[单片机]
ARM学习笔记10——GNU ARM命令行工具
一、编译器arm-linux-gcc   1、用arm-linux-gcc编译一个程序,一般它是要经过如下步骤的:     1.1、预处理阶段     编译器把上述代码中stdio.h编译进来,使用GCC的选项-E可以使GCC在预处理结束后停止编译过程,而不继续其他动作了。     1.2、编译阶段     首先检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,arm-linux-gcc把代码翻译成汇编语言。用户可以使用-S选项来进行查看,该选项只编译而不进行汇编,生成汇编代码。     1.3、汇编阶段     把编译阶段生成.s文件转成目标文件,使用者可使用选项-c就
[单片机]
AMD明年推出首款ARM服务器芯片 代号西雅图
    AMD计划在明年年初推出首款ARM架构的服务器芯片,跟配套的CPU和集成显卡核心一起,向英特尔Xeon在服务器芯片市场上的霸主地位发起冲击。   AMD的高管表示,这款ARM核心代号为“西雅图”(Seattle),将在2014年下半年批量出货。AMD还会在2014年推出“柏林”(Berlin)核心,它将以CPU和APU两种形式出现,其APU形式集成了处理器和一个集显。此外还有“华沙”(Warsaw),它将在高性能计算(HPC,high-performancecomputing)层面与Xeon处理器开展竞争。   行业观察家们对“西雅图”很感兴趣,因为对AMD来说,这可能会是一个非常有趣的机遇,或许能帮AMD在服务器芯片市
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved