1、概述 本文档介绍了ARMv8-A架构内存管理的关键——内存地址转换,包括虚拟地址(VA)到物理地址(PA)的转换、地址转换表格式以及TLBs(Translation Lookaside Buffers)管理。 对于任何进行底层bootloader或者驱动代码开发的人员来说,这部分内容都是非常实用 ...
分类:
其他好文 时间:
2019-08-24 09:26:10
阅读次数:
81
以下是驱动测试代码: //内核的驱动代码 #include <linux/init.h> #include <linux/module.h> //for module_init moudule_exit #include <linux/fs.h> //for MKDEV register_chrde ...
分类:
其他好文 时间:
2019-07-11 14:13:13
阅读次数:
124
如同你想象的, 注册设备编号仅仅是驱动代码必须进行的诸多任务中的第一个. 我们将很 快看到其他重要的驱动组件, 但首先需要涉及一个别的. 大部分的基础性的驱动操作包括 3 个重要的内核数据结构, 称为 file_operations, file, 和 inode. 需要对这些结构的 基本了解才能够做 ...
分类:
系统相关 时间:
2019-07-05 15:32:00
阅读次数:
144
在中断处理函数中,调用gpio_get_value/gpio_set_value()函数来获取/设置gpio端口的值,在这里简单分析一下内核的实现流程。 gc = { .base = (S5P_VA_GPIO + 0xC40), .config = &gpio_cfg_noint, .irq_bas ...
分类:
其他好文 时间:
2019-06-26 22:02:50
阅读次数:
1506
Vuex是专为Vue.js设计的状态管理模式。采用集中存储组件状态它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 1、首先让我们从一个vue的计数应用开始 在这个组件的数据对象中保存着一个初始为0的状态值count,我们可以通过调用increment方法 ...
分类:
其他好文 时间:
2019-04-05 14:09:39
阅读次数:
155
编写一个陌生的linux驱动的技巧当你要写一个陌生的linux子系统的驱动时,例如v4l2的camerasensor驱动。首先你得去google、百度搜索一些关于这个子系统**框架的介绍,由于网上文章往往有错误,所以你要多看几篇好的文章,从而有一定了解。然后需要看linux相关的子系统的代码,特别是子系统的api,从而更深入的了解。然后你找一个使用该子系统的应用层和驱动代码例子,进一步理解。然后你
分类:
系统相关 时间:
2019-03-24 00:17:27
阅读次数:
218
Linux中的Platform总线是虚拟总线,它把驱动和设备的注册都分开来,对于他们的牵红线(匹配)过程,提供了“总线-设备-驱动”模型。 它的结构如下图所示: 为什么要这么做? 试想,如果设备和驱动不分开,那么不同设备将会产生大量驱动(代码冗余),而且维护起来工作量很大。 Platform模型则把 ...
分类:
系统相关 时间:
2019-03-17 01:00:52
阅读次数:
186
DDD:Domain-driven Design(领域 - 驱动 -> 设计) ->领域驱动领域模型设计 ->领域模型驱动代码实现 摘自网络(汤雪华的博客) 《概念总结》 《拆分领域》 领域建模的基础是要先理解领域,让自己成为领域专家。如果做到了这点,我们就打好了坚实的基础了。 但是,有时一个领域往 ...
分类:
其他好文 时间:
2019-02-28 10:35:11
阅读次数:
234
以用i2c通信的实时时钟为例 框架入口源文件:i2c_m41t11.c (可根据入口源文件,再按着框架到内核走一遍) 内核版本:linux_2.6.22.6 硬件平台:JZ2440 以下是驱动框架: 以下是驱动代码 i2c_m41t11.c : 以下是编译驱动的Makefile: KER_DIR=/ ...
分类:
其他好文 时间:
2019-02-17 22:16:36
阅读次数:
261
修改内核的s3c2410-wm8976.c文件,让其支持开发板的声卡 框架入口源文件:s3c2410-wm8976.c (可根据入口源文件,再按着框架到内核走一遍) 内核版本:linux_2.6.22.6 硬件平台:JZ2440 以下是驱动框架: 以下是驱动代码: ...
分类:
其他好文 时间:
2019-02-17 22:15:13
阅读次数:
183