发 帖  
  • 发布了文章 2023-10-8 15:29
    为什么需要进程 通常程序不能并发执行,因为程序并发执行的结果,是不可再现的。为了使程序,可以并发执行,且能对其加以描述和控制,引入了进程的概念。 进程的特征和定义 进程是程序的一次执行,是系统进行资源分配调度的独立单位。 结构特征:为了使程...
    0
    579次阅读
    0条评论
  • 发布了文章 2023-10-8 15:16
    内核配置devmem devmem命令依赖于/dev/mem设备节点,需要在Linux内核中打开/dev/mem的配置: Device Drivers --- > Character devices --- > [*] /dev/mem v...
    0
    1181次阅读
    0条评论
  • 发布了文章 2023-10-8 15:02
    什么是devmem? 在Linux系统,如果我们想要访问某个寄存器,就需要写一个驱动程序,在驱动中映射寄存器地址,转为虚拟地址后就可以访问。 但有时候,我们只是单纯想知道某个寄存器的值,不想这么麻烦,怎么办呢? Linux早就想到这一点了,...
    0
    2809次阅读
    0条评论
  • 发布了文章 2023-10-8 14:53
    RISC-V CSR寄存器 CSR是控制状态寄存器,RISC-V中CSR寄存器,需要使用csrr、csrw、csrrw等特定指令进行访问。 M模式和S模式都有自己的CSR寄存器,但是大体上相同。下面列举一些常用的CSR。 M模式CSR寄存器...
    0
    5369次阅读
    0条评论
  • 发布了文章 2023-10-8 14:48
    RISC-V特权架构 ARM有7种工作模式,而RISC-V也有不同的模式,这些模式在RISC-V中也被称为特权架构。 RISC-V总共有四种模式,分别是U、S、H和M模式: U模式被编码为00,S模式编码为01,H模式编码为10,M模式编码...
    0
    1398次阅读
    0条评论
  • 发布了文章 2023-10-8 14:42
    什么是RISC-V 大家听过最多的处理器架构可能就是x86和ARM,x86架构主要用在PC端,ARM主要用在移动终端。学习嵌入式的小伙伴肯定都知道ARM,但是ARM是国外的,设计一款ARM架构的芯片,需要经过ARM公司的授权,同时会产生一些...
    0
    6827次阅读
    0条评论
  • 发布了文章 2023-10-8 14:24
    配置和编译 OpenSBI的配置选项位于不同平台下的 config.mk 文件,例如 platform/generic/config.mk : # Blobs to build FW_TEXT_START=0x80000000FW_DYNA...
    0
    1210次阅读
    0条评论
  • 发布了文章 2023-10-8 14:15
    FW_DYNAMIC固件 FW_DYNAMIC固件在运行时从上一个启动阶段获取有关下一个启动阶段的信息,例如引导加载程序或操作系统内核。 上一个启动阶段(即LOADER)通过 a2 寄存器将 struct fw_dynamic_info 的...
    0
    519次阅读
    0条评论
  • 发布了文章 2023-10-8 14:11
    OpenSBI固件类型 在介绍OpenSBI固件类型前,我们需要知道一点RISC-V Linux的启动过程: 启动流程:ZSBL-->FSBL-->OpenSBI-->u-boot-->Linux ZSBL和FSBL通常固化在芯片内部,不在...
    0
    688次阅读
    0条评论
  • 发布了文章 2023-10-8 11:52
    MMU怎么知道这个页表在内存中的具体地址呢? 通常CPU会提供一个页表基址寄存器给操作系统使用,用于给MMU指示页表的基地址。不同处理器架构对应的寄存器也不一样: x86:CR3(Control Register 3) ARM-v8:系统寄...
    0
    1241次阅读
    0条评论
  • 发布了文章 2023-10-8 11:45
    虚拟地址到物理地址转换过程 虚拟地址和物理地址都被划分了两部分: 虚拟地址由虚拟页面号VPN和虚拟地址偏移VA offset两部分组成。同样,物理地址由物理页帧号PFN和物理地址偏移PA offset两部分组成。 虚拟地址转换成物理地址时,...
    0
    1882次阅读
    0条评论
  • 发布了文章 2023-10-8 11:40
    很多人接触Linux的内存管理是从malloc()这个C语言库函数开始,也是从那时开始就知道了虚拟内存的概念。但很多人可能并不知道虚拟地址是如何转换成物理地址的,今天带你搞懂虚拟地址到物理地址的转换过程,这其实也是MMU的工作原理。 我们知...
    0
    1148次阅读
    0条评论
  • 发布了文章 2023-10-8 11:32
    relocate relocate重定向,就是在开启mmu。开启mmu的操作就是将一级页表的地址以及权限写到 satp 寄存器中,这就算开启mmu了。 # ifdef CONFIG_MMU la a0, early_pg_dir //跳转到...
    0
    776次阅读
    0条评论
  • 发布了文章 2023-10-8 11:28
    汇编启动流程 先从整体分析汇编做的事情,有个大体框架。 路径: arch/riscv/kernel/head.S ,入口是 ENTRY(_start_kernel) 从 ENTRY(_start_kernel) 开始进行启动前的一些初始化,...
    0
    543次阅读
    0条评论
  • 发布了文章 2023-10-8 11:22
    页表创建源码分析 RISC-V Linux启动,经历了两次页表创建过程,第一次使用C函数 setup_vm() 创建临时页表,第二次使用C函数 setup_vm_final() 创建最终页表。 具体细节参考代码中的注释,下面的代码省略了一些...
    0
    787次阅读
    0条评论
ta 的专栏

成就与认可

  • 获得 71 次赞同

    获得 0 次收藏

谁来看过他

关闭

站长推荐 上一条 /6 下一条

返回顶部