基于Hikey的"Boot from USB"调试

作者:wowo 发布于:2016-12-20 22:36 分类:X Project

话说在半年前,乐美客送给蜗窝几块Hikey(乐美客版)开发板[1],不过由于太忙,就一直把它们放在角落里思考人生,因此甚是愧疚。这几天,闲来无事,翻了下Hikey的资料,觉得挺有意思,就想花点时间让“X Project”在这个板子上跑起来。当然,按照“规矩”,先从“【任务1】启动过程-Boot from USB”做起,记录如下。

阅读全文>>

标签: USB boot u-boot spl hikey Hi6220V100

评论(1) 浏览(9670)

Linux serial framework(1)_概述

作者:wowo 发布于:2016-12-12 22:04 分类:通信类协议

串口设备(serial or uart,后面不再区分)是TTY设备的一种,Linux kernel为了方便串口驱动的开发,在TTY framework的基础上,封装了一层串口框架(serial framework)。该框架尽可能的屏蔽了TTY有关的技术细节(比较难懂),驱动工程师在编写串口驱动的时候,只需要把精力放在串口以及串口控制器本身即可。

本文将通过对serial framework的简单分析,理解上面的概念,并掌握基于该框架编写串口驱动的方法和步骤。

阅读全文>>

标签: Linux driver framework serial 框架 串口

评论(10) 浏览(15159)

快讯:蓝牙5.0发布(新特性速览)

作者:wowo 发布于:2016-12-8 11:05 分类:蓝牙

2016年12月6日,蓝牙SIG发布了5.0版本的核心规范,该规范从距离、速度等多个方面,对BLE进行了增强,蓝牙官网的总结如下[1]

With the launch of Bluetooth 5, Bluetooth® technology continues to evolve to meet the needs of the industry as the global wireless standard for simple, secure connectivity. With 4x range, 2x speed and 8x broadcasting message capacity, the enhancements of Bluetooth 5 focus on increasing the functionality of Bluetooth for the IoT. These features, along with improved interoperability and coexistence with other wireless technologies, continue to advance the IoT experience by enabling simple and effortless interactions across the vast range of connected devices.

相比蓝牙4.2,新增的特性包括[3]

Several new features are introduced in the Bluetooth Core Specification 5.0
Release. The major areas of improvement are:
• Slot Availability Mask (SAM)
• 2 Msym/s PHY for LE
• LE Long Range
• High Duty Cycle Non-Connectable Advertising
• LE Advertising Extensions
• LE Channel Selection Algorithm #2

下面对一些比较有意思的做个简单的介绍(后续有时间会做比较细致的分析)。

阅读全文>>

标签: 蓝牙 Bluetooth 5.0 2M Extensions

评论(10) 浏览(31344)

X-021-ROOTFS-基于busybox的最简rootfs的制作

作者:wowo 发布于:2016-12-5 22:50 分类:X Project

在前一篇文章[1]中,我们编写并成功运行了一个简单的init程序。于是,“【任务4】启动Linux kernel到命令行”就成了一个水到渠成的事情。当然,只有一个简单的程序还不够,我们要来点实在的,一个真正的根文件系统。

Linux系统中制作根文件系统的方法有很多种,基于一个个package一点点编译、利用buildroot、利用busybox、等等,本文将以嵌入式系统中普遍使用的busybox为例,介绍制作一个简单的rootfs的方法。

阅读全文>>

标签: rootfs busybox inittab rcS

评论(0) 浏览(11522)

X-020-ROOTFS-initramfs的制作和测试

作者:wowo 发布于:2016-12-3 11:08 分类:X Project

我们在“X-015-KERNEL-ARM generic timer driver的移植”中移植完ARM generic timer之后,Linux的启动已经走完了内核空间的旅程,即将冲破kernel走向用户空间,有“诗”为证:

[    0.142156] ---[ end Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.

意思很明显,kernel找不到可执行的init文件,无法继续下去了。还好,基本的串口驱动[1]开发完毕之后,我们可以把魔抓伸向用户空间了。牵涉到用户空间,麻烦就大了,块设备、文件系统、rootfs等等,不是三言两语就能搞定的。不过没关系,我们可以从最简单的ramdisk入手。

因此,本文将以initramfs为例,介绍kernel把CPU的控制权交给用户空间程序的过程。与此同时,本文也是串口驱动[1]和GIC驱动[2]的测试用例(这两个驱动移植完成后,一直没有测试,机会终于来了)。

阅读全文>>

标签: GIC initramfs randisk elf rootfs

评论(0) 浏览(8859)

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

评论(7) 浏览(10783)

蓝牙协议分析(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 安全

评论(38) 浏览(28645)

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

评论(1) 浏览(9389)

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

评论(2) 浏览(11595)

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

评论(0) 浏览(7526)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog