上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 164 下一页

2022年3月10日

摘要: aarch64系统级体系架构之异常级别 1.简述 2.树莓派启动深度解析 3.不同异常级别需要注意的问题 1.简述 系统的异常级别对于arm芯片来说非常的重要,对于操作系统层面上来说,理解芯片的体系架构,将很容易的进入状态,随心所欲的去玩转芯片,对于做应用来说,熟悉芯片的体系架构,可以解决非常棘手的 阅读全文
posted @ 2022-03-10 15:17 tycoon3 阅读(3361) 评论(0) 推荐(0)

2022年3月9日

摘要: ARMv8中,aarch64和aarch32是通过异常进行切换的。而A32和T32是通过bx指令进行切换的。如下图: 以下A64和A32混合编程,是在EL3为aarch64, EL2为aarch32条件下进行编程。在EL3,设置EL2的架构为aarch32,设置好返回地址,通过ERET指令,切换到E 阅读全文
posted @ 2022-03-09 20:29 tycoon3 阅读(7264) 评论(0) 推荐(0)
摘要: spin_lock() 在Linux2.6中,spin_lock()宏有两种实现方式,一种是具有内核抢占的spin_lock(),一种是非抢占式内核中的spin_lock(),下面先看下自旋锁的数据结构,在Linux中,每个自旋锁都用spinlock_t结构表示,如下: typedef struct 阅读全文
posted @ 2022-03-09 11:10 tycoon3 阅读(344) 评论(0) 推荐(0)

2022年3月8日

摘要: 一、简介 Ingo Molnar 的实时补丁是完全开源的,它采用的实时实现技术完全类似于Timesys Linux,而且中断线程化的代码是基于TimeSys Linux的中断线程化代码的。这些实时实现技术包括:中断线程化(包括IRQ和softirq)、用Mutex取代spinlock、优先级继承和死 阅读全文
posted @ 2022-03-08 17:09 tycoon3 阅读(101) 评论(0) 推荐(0)
摘要: 调度器类 而依据其调度策略的不同实现了5个调度器类, 一个调度器类可以用一种种或者多种调度策略调度某一类进程, 也可以用于特殊情况或者调度特殊功能的进程. 其所属进程的优先级顺序为 stop_sched_class -> dl_sched_class -> rt_sched_class -> fai 阅读全文
posted @ 2022-03-08 10:26 tycoon3 阅读(146) 评论(0) 推荐(1)

2022年3月7日

摘要: 进程切换有自愿(Voluntary)和强制(Involuntary)之分,在前文中详细解释了两者的不同,简单来说,自愿切换意味着进程需要等待某种资源,强制切换则与抢占(Preemption)有关。 抢占(Preemption)是指内核强行切换正在CPU上运行的进程,在抢占的过程中并不需要得到进程的配 阅读全文
posted @ 2022-03-07 20:32 tycoon3 阅读(970) 评论(0) 推荐(0)

2022年2月28日

摘要: 自旋锁 + dis local cpu preemt + dis local cpu interrupt 在linux/spinlock.h中定义了spinlock操作的API。 spinlock的思想就是在SMP环境中,保护共享的数据结构;也就是CPU-A正在访问(读写)共享数据的期间,其他CPU 阅读全文
posted @ 2022-02-28 14:42 tycoon3 阅读(327) 评论(0) 推荐(0)

2022年2月24日

摘要: FreeRTOS任务代码中临界段的进入和退出主要是通过操作寄存器basepri实现的。进入临界段前操作寄存器basepri关闭了所有小于等于宏定义configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY所定义的中断优先级,这样临界段代码就不会被中断干扰到,而且实现任务 阅读全文
posted @ 2022-02-24 20:58 tycoon3 阅读(2566) 评论(0) 推荐(0)
摘要: PendSV是可悬起异常,如果我们把它配置最低优先级,那么如果同时有多个异常被触发,它会在其他异常执行完毕后再执行,而且任何异常都可以中断它。更详细的内容在《Cortex-M3 权威指南》里有介绍,下面我摘抄了一段。 OS 可以利用它“缓期执行”一个异常——直到其它重要的任务完成后才执行动 作。悬起 阅读全文
posted @ 2022-02-24 20:31 tycoon3 阅读(685) 评论(0) 推荐(0)
摘要: 宏定义的形式如下: #define 名字 替换文本 这是一种最简单的宏替换 —— 后续所有出现名字记号的地方都将被替换为 替换文本 。 #define 指令中的名字与变量名的命名方式相同,替换文本可以是任意字符串。通常情况下, #define 指令占一行,替换文本是 #define 指令行尾部的所有 阅读全文
posted @ 2022-02-24 18:09 tycoon3 阅读(1007) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 164 下一页

导航