04 2019 档案
摘要:零、说明 对应代码drivers/mmc/core/host.c,drivers/mmc/core/host.h。 为底层host controller driver实现mmc host的申请以及注册的API等等,以及host相关属性的实现。 一、API总览 1、mmc host分配、注册相关 mm
阅读全文
摘要:零、说明 对应代码drivers/mmc/core/bus.c。 抽象出虚拟mmc bus,实现mmc bus的操作。 一、API总览 1、mmc bus相关 mmc_register_bus & mmc_unregister_bus 用于注册和卸载mmc bus(虚拟mmc总线)到设备驱动模型中。
阅读全文
摘要:一、host相关 1、struct mmc_host struct mmc_host是mmc core由host controller抽象出来的结构体,用于代表一个mmc host控制器。 数据结构如下: ocr值各个位代表的电压意义如下: host属性2(mmc_host caps2)支持的属性如
阅读全文
摘要:一、概念 1、mmc的概念 mmc有很多种意义,具体如下: mmc MultiMedia Card,多媒体存储卡, 但后续泛指一个接口协定(一种卡式),能符合这接口的内存器都可称作mmc储存体。 主要特性如下: 工作电压:高电压为2.7~3.6 V,低电压为1.65~1.95 V,可选。 mmc总线
阅读全文
摘要:如何查看和修改寄存器 在程序中可以使用HI_SYS_ReadRegister,HI_SYS_WriteRegister接口进行寄存器的读写操作。 在单板命令行下,使用工具。 单板/usr/sbin目录下,有一系列寄存器操作相关的工具,分别介绍如下: 工具 | 参数 |功能| 备注 | | | him
阅读全文
摘要:本篇文章主要是在ioremap_nocache函数说明的基础上进行整理,加入该函数的用法简介。 函数原型 调用 函数之后,返回一个线性地址,此时CPU 可以访问设备的内存(已经将其映射到了线性地址空间中了),此时CPU可以使用访问内存的指令访问设备的内存空间,此时我们就可以像访问内存一样来访问设备的
阅读全文
摘要:上面我们说了如何去在系统中自己实现一个设置系统寄存器的一个方法,上面归根到底要进行物理地址到虚拟地址的映射 现在我们就说说IO_ADDRESS()的实现 两个宏的功能都是一样的,所以对比可得: 其中的addr都是物理地址, 是System IO基地址, 就能得到偏移的地址, 是虚拟地址的基地址,这里
阅读全文
摘要:操作系统将内存按照页的进行管理,在需要的时候才把进程相应的部分调入内存。当产生缺页中断时,需要选择一个页面写入。如果要换出的页面在内存中被修改过,变成了“脏”页面,那就需要先写会到磁盘。页面置换算法,就是要选出最合适的一个页面,使得置换的效率最高。页面置换算法有很多,简单介绍几个,重点介绍比较重要的
阅读全文
摘要:前言 devm是内核提供的基础机制,用于方便驱动开发者所分配资源的自动回收。参考内核文档devres.txt。总的来说,就是驱动开发者只需要调用这类接口分配期望的资源,不用关心释放问题。这些资源的释放会在device对象销毁时自动释放。 devres使用 不同的内核模块提供了对应的devm_xxx接
阅读全文
摘要:一、概述 mfd是Multifunction device的简称,即多功能设备,是许多有共性的设备的集合,mfd由核心层(core)以及其下的“子设备”组成。从下文将会看到,mfd只是将设备注册到platform总线——因此,其子设备属于platform设备。它并没有对涉及到的设备或驱动做实质性改变
阅读全文
摘要:LiteOS是在2015华为网络大会上华为发布的敏捷网络3.0中的一个轻量级的物联网操作系统,LiteOS体积只有10KB级。 在Hi3559A中,liteos是用于Cortex A53,用于处理MPP 媒体业务逻辑的; Huawei LiteOS基础内核是最精简的Huawei LiteOS操作系统
阅读全文
摘要:1. 前言 书接上文( "u boot启动流程分析(二)_平台相关部分" ),本文介绍u boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的、board有关初始化过程。该过程将持续u boot的整个生命周期,直到main_loop(即
阅读全文
摘要:用户进程的内存页分为两种: file backed pages(文件背景页) anonymous pages(匿名页) 比如进程的代码段、映射的文件都是file backed,而进程的堆、栈都是不与文件相对应的、就属于匿名页。 file backed pages在内存不足的时候可以直接写回对应的硬盘
阅读全文
摘要:1. 第二个start.S 从 开始,在 中有包含 在config.h中: 在 中: 在 中,看到了 的宏 查看u boot.map在这里又来到了上一层的start.S中来,所以可以知道这两个是由两个文件组成的,一个是u boot.bin和reg_info.bin,就是说两个不同的start.S的流
阅读全文
摘要:第一阶段 start.S 首先我们可以在u boot.lds中看到 ,即指定了入口 ,`_start start.S`的最开始; 1. reset 在 中的 注意x30在ARMV8中代表lr寄存器 normal_start_flow: / set stack for C code / ldr x0,
阅读全文
摘要:armv8 1.前言 本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述。包含如下的内容: 首先从背景谈起,讲述ARM的发展历程; 之后介绍ARMV8体系结构的基本特征; 介绍A64指令集 介绍异常级别 介绍内存管理单元 介绍编程寄存器 介绍DEBUG相关 ARMV8生态系统的演化 2
阅读全文