X-019-KERNEL-串口驱动开发之数据收发
作者:wowo 发布于:2016-11-29 21:55 分类:X Project
本文是“X Project”串口驱动开发的第四篇,在第二篇“uart driver框架[1]”的基础上,实现基本的、可收发数据的uart驱动,并借助这个过程,学习如下知识:
中断的申请和使用;
利用中断发送和接收数据;
uart_ops中常用函数(.startup, .start_tx, etc.)的使用。
标签: Linux driver irq serial tx rx transmit
蓝牙协议分析(9)_BLE安全机制之LL Privacy
作者:wowo 发布于:2016-11-25 16:28 分类:蓝牙
在上一篇文章[1]中,我们介绍了BLE的白名单机制,这是一种通过地址进行简单的访问控制的安全机制。同时我们也提到了,这种安全机制只防君子,不防小人,试想这样一种场景:
A设备表示只信任B、C、D设备,因此就把它们的地址加入到了自己的白名单中,表示只愿意和它们沟通。与此同时,E设备对它们的沟通非常感兴趣,但A对自己不信任啊,肿么办?
E眼珠子一转,想出一个坏主意:把自己的地址伪装成成B、C、D中任意一个(这个还是很容易办到的,随便扫描一下就得它们的地址了)就行了,嘿嘿嘿!
那么问题来了,怎么摆脱“小人E“的偷听呢?不着急,我们还有手段:“链路层的Privacy(隐私)机制”。
标签: 蓝牙 BLE resolvable privacy 安全
内存初始化代码分析(三):创建系统内存地址映射
作者:linuxer 发布于:2016-11-24 12:08 分类:内存管理
经过内存初始化代码分析(一)和内存初始化代码分析(二)的过渡,我们终于来到了内存初始化的核心部分:paging_init。当然本文不能全部解析完该函数(那需要的篇幅太长了),我们只关注创建系统内存地址映射这部分代码实现,也就是解析paging_init中的map_mem函数。
同样的,我们选择的是4.4.6的内核代码,体系结构相关的代码来自ARM64。
标签: create_mapping
X-018-KERNEL-串口驱动开发之serial console
作者:wowo 发布于:2016-11-18 22:25 分类:X Project
本文是“X Project”串口驱动开发的第三篇,在第二篇“uart driver框架[1]”的基础上,实现console驱动,并借助这个过程,理解如下知识:
1)从DTS regs字段中获取设备的I/O基址,并map出来供driver访问。这是device tree最基本的使用场景。
2)从DTS aliases中获取串口的索引号。这是device tree aliases功能的一个应用场景。
3)uart port—>line和console—>index之间的关系。
标签: Linux driver serial console aliases
内存初始化代码分析(二):内存布局
作者:linuxer 发布于:2016-11-18 18:25 分类:内存管理
同样的,本文是内存初始化文章的一份补充文档,希望能够通过这样的一份文档,细致的展示在初始化阶段,Linux 4.4.6内核如何从device tree中提取信息,完成内存布局的任务。具体的cpu体系结构选择的是ARM64。X-017-KERNEL-串口驱动开发之uart driver框架
作者:wowo 发布于:2016-11-16 22:09 分类:X Project
本文是“X Project”串口驱动开发的第二篇,将以“bubblegum-96”开发板为例,介绍在linux serial framework的框架下,编写串口driver以及console driver的方法和步骤(暂不涉及实现细节)。
注1:有关串口、TTY、console等概念,可参考本站“TTY子系统[1]”的文章。Linux serial framework的分析,会在后续的文档中补充(这里故意颠倒,以便让大家理解kernel framework的妙处)。
标签: Linux Kernel driver framework serial console uart_driver
X-016-KERNEL-串口驱动开发之驱动框架
作者:wowo 发布于:2016-11-10 22:12 分类:X Project
在过去的一段时间里,蜗窝上发表了一系列的关于内核各个子系统的分析文章,设备模型、device tree、中断子系统、clock framework、电源管理、GPIO、pinctrl等等,这些文章重理论、轻实践。随着“X Project”的进行,我们渐渐有机会把这些缺失的实践慢慢补回来。
串口驱动是进入Linux kernel之后最先遭遇的一个驱动,虽然不是很复杂,但要素齐全,使用到了kernel的各个子系统。因此我希望能借助串口驱动的开发过程,将这些子系统的使用一一串联起来,并记录为一份份单独的文章。
本文是这一系列文章的第一篇,借助串口驱动开发,学习Linux设备模型之下的驱动框架。
标签: driver serial 框架 串口 驱动 platform_driver
内存初始化代码分析(一):identity mapping和kernel image mapping
作者:linuxer 发布于:2016-11-10 19:07 分类:内存管理
本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程。想要了解一些概述性的、框架性的东西可以参考内存初始化文档。
本文的代码来自ARM64,内核版本是4.4.6,此外,阅读本文最好熟悉ARMv8中翻译表描述符的格式。
蓝牙协议分析(8)_BLE安全机制之白名单
作者:wowo 发布于:2016-11-10 14:20 分类:蓝牙
在万物联网的时代,安全问题将会受到非常严峻的挑战(相应地,也会获得最大的关注度),因为我们身边的每一个IOT设备,都是一个处于封印状态的天眼,随时都有被开启的危险。想想下面的场景吧:
凌晨2点,x米手环的闹钟意外启动,将你从睡梦中惊醒,然后床头的灯光忽明忽暗……
你的心率、血压、睡眠质量等信息,默默地被竞争对手收集着,并通过大数据分析你的情绪、健康等,随时准备给你致命一击……
我知道你家里有几盏灯、几台电器、几个人,知道你几点睡觉几时醒来,知道你一周做过几顿饭,甚至知道你有一个xx棒、一周使用几次、每次使用多久……
……
算了,不罗列了,有时间的话可以建个iot eyes的站点,专门收集、整理物联网安全有关的内容。这里就先言归正传。
经过前面几篇的蓝牙协议分析,我们对蓝牙(特别是蓝牙低功耗)已经有了一个比较全面的了解。随后几篇文章,我会focus在BLE的安全机制上。毕竟,知己知彼,才能攻防有度。
话说,蓝牙SIG深知物联网安全的水有多深,因此使用了大量的篇幅,定义BLE安全有关的机制,甚至可以不夸张的说,BLE协议中内容最多、最难理解的部分,非安全机制莫属。本文先从介绍最简单的----白名单机制(White list)。
标签: 蓝牙 Bluetooth BLE 白名单 white_list
X-015-KERNEL-ARM generic timer driver的移植
作者:wowo 发布于:2016-11-2 22:31 分类:X Project
本文将基于“Linux时间子系统之(十七):ARM generic timer驱动代码分析[1]”,以bubblegum-96平台为例,介绍ARM generic timer的移植步骤。
另外,我们在[2]中完成了ARM GIC驱动的移植,但还没有测试是否可用。刚好借助timer驱动,测试GIC是否可以正常工作,顺便理解Interrupt的使用方法。
功能
最新评论
文章分类
随机文章
文章存档
- 2024年2月(1)
- 2023年5月(1)
- 2022年10月(1)
- 2022年8月(1)
- 2022年6月(1)
- 2022年5月(1)
- 2022年4月(2)
- 2022年2月(2)
- 2021年12月(1)
- 2021年11月(5)
- 2021年7月(1)
- 2021年6月(1)
- 2021年5月(3)
- 2020年3月(3)
- 2020年2月(2)
- 2020年1月(3)
- 2019年12月(3)
- 2019年5月(4)
- 2019年3月(1)
- 2019年1月(3)
- 2018年12月(2)
- 2018年11月(1)
- 2018年10月(2)
- 2018年8月(1)
- 2018年6月(1)
- 2018年5月(1)
- 2018年4月(7)
- 2018年2月(4)
- 2018年1月(5)
- 2017年12月(2)
- 2017年11月(2)
- 2017年10月(1)
- 2017年9月(5)
- 2017年8月(4)
- 2017年7月(4)
- 2017年6月(3)
- 2017年5月(3)
- 2017年4月(1)
- 2017年3月(8)
- 2017年2月(6)
- 2017年1月(5)
- 2016年12月(6)
- 2016年11月(11)
- 2016年10月(9)
- 2016年9月(6)
- 2016年8月(9)
- 2016年7月(5)
- 2016年6月(8)
- 2016年5月(8)
- 2016年4月(7)
- 2016年3月(5)
- 2016年2月(5)
- 2016年1月(6)
- 2015年12月(6)
- 2015年11月(9)
- 2015年10月(9)
- 2015年9月(4)
- 2015年8月(3)
- 2015年7月(7)
- 2015年6月(3)
- 2015年5月(6)
- 2015年4月(9)
- 2015年3月(9)
- 2015年2月(6)
- 2015年1月(6)
- 2014年12月(17)
- 2014年11月(8)
- 2014年10月(9)
- 2014年9月(7)
- 2014年8月(12)
- 2014年7月(6)
- 2014年6月(6)
- 2014年5月(9)
- 2014年4月(9)
- 2014年3月(7)
- 2014年2月(3)
- 2014年1月(4)