2022年3月11日

摘要: 汇编宏kernel_ventry 该汇编宏主要是用于异常响应向量表中,每个向量的宽度为0x80字节,即0x20条指令(每条指令4字节);而且每个向量入口点地址必须按照0x80对齐,即地址低7位为零。由于0x20条指令不可能完成异常处理过程,因此在这0x20条指令之内一定要跳转到到其他函数执行。 一般 阅读全文
posted @ 2022-03-11 20:16 tycoon3 阅读(2024) 评论(0) 推荐(0)
摘要: 1、理解整个中断/系统调用流程的关键是kernel_entry和kernel_exit,也就是如何保存现场,并且恢复现场的。 我们先来看下armv8的寄存器,PLR(X30)无论是用户态还是内核态都用这个寄存器来存储程序的返回值。 sp_el0,sp_el1分别是有用户态和内核态的堆栈。 ELR_E 阅读全文
posted @ 2022-03-11 15:26 tycoon3 阅读(3259) 评论(0) 推荐(1)
摘要: 当应用读取或写入未提交到物理内存的内存时,会发生页错误。 不可能(或很难)预测页面错误何时会发生,因此它们是计算机中不确定性的另一个来源。 幸运的是,有一个函数允许您提交进程使用的所有内存并将其锁定,这样它就不会导致页面错误。 它是mlockall(2)。 这是它的两面旗帜: MCL_CURRENT 阅读全文
posted @ 2022-03-11 10:23 tycoon3 阅读(144) 评论(0) 推荐(0)
摘要: 如果你有精确的计时要求,那么计时器分辨率很重要,这是实时应用的典型要求。 Linux 中的默认计时器是以可配置的频率运行的时钟,对于嵌入式系统,通常为 100 Hz,对于服务器和台式机,通常为 250 Hz。 两个计时器滴答之间的间隔是,称为jiffy,在前面给出的例子中,在嵌入式 SoC 上是 1 阅读全文
posted @ 2022-03-11 10:21 tycoon3 阅读(550) 评论(0) 推荐(0)

导航