uboot初始化中,为何要设置CPU为SVC模式而不是设置为其他模式

在看Uboot的start.S文件时候,发现其最开始初始化系统,做的第一件事情,就是将CPU设置为SVC模式,但是S3C2440的CPU的core是ARM920T,其有7种模式,为何非要设置为SVC模式,而不是设置为其他模式呢?对此,经过一些求证,得出如下原因:


首先,先要了解ARM的CPU的7种模式是哪些:








另外,7种模式中,除用户usr模式外,其它模式均为特权模式。




对于为何此处是svc模式,而不是其他某种格式,其原因,可以从两方面来看:


我们先简单的来分析一下那7种模式:


中止abt和未定义und模式
首先可以排除的是,中止abt和未定义und模式,那都是不太正常的模式,此处程序是正常运行的,所以不应该设置CPU为其中任何一种模式,所以可以排除。


快中断fiq和中断irq模式
其次,对于快中断fiq和中断irq来说,此处uboot初始化的时候,也还没啥中断要处理和能够处理,而且即使是注册了终端服务程序后,能够处理中断,那么这两种模式,也是自动切换过去的,所以,此处也不应该设置为其中任何一种模式。


用户usr模式
虽然从理论上来说,可以设置CPU为用户usr模式,但是由于此模式无法直接访问很多的硬件资源,而uboot初始化,就必须要去访问这类资源,所以此处可以排除,不能设置为用户usr模式。


系统sys模式 vs 管理svc模式
首先,sys模式和usr模式相比,所用的寄存器组,都是一样的,但是增加了一些访问一些在usr模式下不能访问的资源。


而svc模式本身就属于特权模式,本身就可以访问那些受控资源,而且,比sys模式还多了些自己模式下的影子寄存器,所以,相对sys模式来说,可以访问资源的能力相同,但是拥有更多的硬件资源。


所以,从理论上来说,虽然可以设置为sys和svc模式的任一种,但是从uboot方面考虑,其要做的事情是初始化系统相关硬件资源,需要获取尽量多的权限,以方便操作硬件,初始化硬件。


从uboot的目的是初始化硬件的角度来说,设置为svc模式,更有利于其工作。


因此,此处将CPU设置为SVC模式。


uboot作为一个bootloader来说,最终目的是为了启动Linux的kernel,在做好准备工作(即初始化硬件,准备好kernel和rootfs等)跳转到kernel之前,本身就要满足一些条件,其中一个条件,就是要求CPU处于SVC模式的。


所以,uboot在最初的初始化阶段,就将CPU设置为SVC模式,也是最合适的。

uboot初始化为什么要设置CPUSVC模式
09-11 1458
第一:uboot初始化时,要对系统硬件资源进行初始化,就要获取尽量多的权限,以便操作硬件,对硬件进行初始化,从这个角度来说,设置SVC模式,更有利于工作的开展。 第二:uboot是一种bootloader,目的是为了引导linux的Kernel,在进入Kernel之前,本身就要满足一些条件,其有一条就是CPU必须是SVC模式
嵌入式面试问题之uboot启动流程分析
KUNPLAYBOY的博客
10-31 1674
首先整个uboot启动,可以分为两个部分,一部分是由汇编语言编写的arch级初始化,另一部分为c语言编写的板级初始化 arch初始化 从_start函数入口开始,分别进行: 1、关闭断,设置SVC模式svc又称为管理模式,在启动过程断环境并没有完全准备好,也就是断向量表和断处理函数并没有完成设置,一旦有断产生,可能会导致预想不到的问题,或者是程序跑飞。因此,在准备好断环境之前,需要关闭所有断。) 2、禁用MMU、TLB 3、初始化一些关键的寄存器,时钟寄存器,看门狗等 板级初始化 从_m
内核实验(四):Qemu调试Linux内核,实现NFS挂载
最新发布
上周的博客
03-18 1493
在文章《内核实验(三)……》,通过挂载虚拟分区,解决了Host和虚拟机文件交换的问题,但依旧比较麻烦。为了提升效率,必须解决NFS挂载共享文件夹的问题。如能实现,则直接在虚拟机上挂载服务端的NFS目录,即可实时交换文件,大大提升效率!
linux kernel】start_kernel函数详解系列之开篇
iriczhao的博客
02-26 3909
start_kernel函数详解系列之开篇 文章目录start_kernel函数详解系列之开篇一、背景二、start_kernel函数打印信息概览三、linux启动早期打印的信息四、smp_prepare_cpus()打印出的信息五、do_basic_setu()打印出的信息六、prepare_namespace()打印出的信息七、释放内核没使用的内存八、启动用户空间进程九、总结 一、背景 linux 内核启动过程,start_kernel()函数有着举足轻重的地位。小生想着对start_kernel函数
Uboot start.S:CPU模式设置断管理与内存布局详解
- 将CPU设置SVC模式是启动过程的重要一步。SVC模式(Supervisor Call)通常用于系统服务或特权操作,确保安全性和系统的稳定运行。具体设置方法可能涉及到特定寄存器的配置。 2. **关闭看门狗**: - 看门狗...
Uboot start.S源码深度解析:CPU模式、堆栈与异常处理
本文将详细分析start.S的各个部分,如设置CPU模式SVC(Supervisor Mode),关闭看门狗防止系统重启,禁止断以保证初始化的原子性,设置堆栈指针SP以准备执行C代码,清除BSS段以初始化全局变量,以及设置异常断...
UBoot start.S源码深度解析:CPU模式断与异常处理
1. 设置CPU模式:在启动过程CPU通常需要从一个低权限模式切换到更安全的服务模式SVC)以执行后续的初始化任务。 2. 关闭看门狗:看门狗定时器用于防止系统挂死,但在初始化阶段,我们不希望它干扰系统的正常...
UBoot start.S源码深度解析:CPU模式断与BSS段
start.S是Uboot初始化阶段的第一步,它负责设置CPU模式、关闭看门狗、配置断、设置堆栈指针、清除bss段以及处理异常断等关键任务。 1. start.S详解 - 设置CPU模式:在启动时,通常会将CPU设置SVC...
Hitool烧写3516dv00发送起始帧失败问题
shunlu5586的博客
06-20 2675
关键操作 (1)先断电:意思就是将插在主机上的USB线拔掉 (2)点击烧写 (3)按住3516开发板上的update键不放,update键 (4)上电:意思是将刚刚拔掉的USB线再插到主机上,注意是同一个USB口,别插错了 (5)松开reset键,点击控制台出现如图场景,就代表已经在烧写了.....................
断上半部
qq_42693685的博客
07-24 809
ZYNQ petalinux系统启动文件固化到FLASH
wangjie36的博客
03-10 7842
首先明确:petalinux启动文件从FLASH启动系统,也就是将启动文件放入FLASH。 1,vivado配置: 2,导入硬件后配置petalinux source /opt/Xilinx/Vivado/2017.4/settings64.sh source /opt/pkg/petalinux/settings.sh petalinux-create --type...
cubietruck启动错误信息记录
viewsky11的专栏
11-04 2576
CPU:   Allwinner A20 (SUN7I) Board: Cubietruck I2C:   ready DRAM:  2 GiB MMC:   SUNXI SD/MMC: 0 *** Warning - bad CRC, using default environment In:    serial Out:   serial Err:   serial
HI_SDK Uboot kernel调试
好习惯成就伟大
12-12 1685
System startup U-Boot 2010.06 (Dec 11 2018 - 18:11:51) Check Flash Memory Controller v100 ... Found SPI Nor(cs 0) ID: 0xc2 0x20 0x19 Block:64KB Chip:32MB Name:"MX25L(256/257)XX" SPI Nor total size:...
kernel Oops的问题
小猪爱拱地
07-29 3976
SMP: Total of 4 processors activated (2291.71 BogoMIPS). CPU: All CPU(s) started in SVC mode. NET: Registered protocol family 16 DMA: preallocated 256 KiB pool for atomic coherent allocations L310
ARM七种模式理解
JustDoIt_201603的博客
04-07 1252
首先,先要了解ARM的CPU的7种模式是哪些: 用户模式(usr):ARM处理器正常的程序执行状态 快速模式(fiq):用于高速数据传输或通道处理 模式(irq):用于通用的断处理 管理模式svc):操作系统使用的保护模式,系统复位和软件断进入此模式 数据访问终止模式(abt...
linux-4.9 内核 debain 8 (jessie)
linsheng_111的专栏
10-17 1508
debain 8 系统是 systemd 需要配置内核 Starting kernel ... [    0.000000] Booting Linux on physical CPU 0x0 [    0.000000] Linux version 4.9.39 (lsh@fs) (gcc version 4.7.3 (Ubuntu/Lin
高通平台启动log概述(PBL log、sbl1 log、kernel log)
热门推荐
jrunw的博客
01-18 1万+
高通平台启动log概述(PBL log、sbl1 log、kernel log) 在嵌入式linux的调试过程log有着至关重要的地位,等同于医生的CT报告。能够熟悉启动各个阶段的log,如PBL阶段,sbl1阶段,kernel阶段,android阶段,对于分析定位问题有着重要的作用。本文以高通msm8937平台android启动的串口log为例简要介绍一下log相关的技巧和对log的概要介绍。...
93
原创
511
点赞
1855
收藏
392
粉丝
关注
私信
写文章

热门文章

  • STM32的ADC采样与多通道ADC采样 60255
  • RS232电平与TTL电平转换 53674
  • 基于stm32的超声波测距 44483
  • STM32F1的UART4串口配置 42192
  • 关于MDK调试时watch窗口出现cannot evaluate的解决办法 32098

分类专栏

  • CSDN博客简介 1篇
  • 嵌入式Linux设备驱动学习 30篇
  • 嵌入式Linux应用程序学习 18篇
  • 嵌入式Linux裸机学习
  • 围炉夜话 17篇
  • C++/C 5篇
  • 数据结构 1篇
  • Qt 25篇
  • Altium Designe13学习 1篇
  • STM32 31篇
  • 硬件 4篇

最新评论

  • 关于MDK调试时watch窗口出现cannot evaluate的解决办法

    m0_53387174: 我是其他源文件的全局变量,好像也不行?

  • 在stm32中使用while循环导致程序卡死

    donny123800: 之前在运行的好好的!做了个板子布局基本一样的现在也是卡死在这里了!怎么解决?

  • stm32与sim900之GPRS通信(电脑串口与SIM900通信)

    极客mini: stm32f103C8T6的也可以了,哈哈哈哈哈哈

  • __I、 __O 、__IO是什么意思?怎么用?

    mosepplin: 请问__O,输出口,意思是这个变量是只写的,只能用来修改寄存器的值吗?

  • RS232电平与TTL电平转换

    INT_shuai: 佬,232的接口的其他引脚没用吗?

最新文章

  • MDK的编程过程和变量存储位置
  • STM32的Systick时钟
  • Undefined symbol f_unlink
2018年24篇
2017年2篇
2016年97篇
2015年20篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢幼儿园装饰雕塑江西环保玻璃钢雕塑设计浙江开业商场美陈生产公司白沙广场玻璃钢卡通人物雕塑商场室外美陈河北大型商场创意商业美陈服务山西玻璃钢浮雕玻璃钢人物雕塑江西户外玻璃钢雕塑杭州玻璃钢花盆批发连云港仿铜玻璃钢雕塑公司潍坊市玻璃钢人物雕塑厂家兰州彩色玻璃钢雕塑公园玻璃钢卡通雕塑怀化株洲玻璃钢雕塑安装山西玻璃钢卡通雕塑设计江苏石雕雕塑玻璃钢资阳玻璃钢雕塑定制张掖玻璃钢牛雕塑武汉端州玻璃钢卡通雕塑龙岩玻璃钢花盆批发广西玻璃钢花盆哪家好安宁玻璃钢雕塑制作设计特别推荐贵州广场玻璃钢雕塑价格成都玻璃钢雕塑工艺制作流程重庆玻璃钢雕塑厂打磨工招聘玻璃钢伟人像雕塑高质量玻璃钢雕塑方法济源玻璃钢人物雕塑厂家哪家好西安玻璃钢雕塑小品公司池州特色玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化