串口通信技术浅析

作者:wowo 发布于:2016-6-24 22:50 分类:基础技术

最熟悉的陌生人!用这句话形容“串口”是再贴切不过的了。

对嵌入式工程师来说,“串口”是一个再熟悉不过的模块,熟悉到像喝水一样自然。与此同时,有关串口的很多细节,却被渐渐地模糊和忽略,例如:

我们经常挂在嘴边的serial、UART、RS232等概念,究竟是怎么回事?它们之间有何联系?有何区别?

串口的波特率(baud rate)是怎么定义和计算的?比特率(bit rate)又是怎么回事?二者的关系又是怎样?

为什么波特率有误差?通信过程中所容许的误差范围是多少?

本文将对上述问题,进行简单的总结和归纳,以便指导有关的开发工作。

阅读全文>>

标签: uart serial baud rate

评论(1) 浏览(17687)

X-004-UBOOT-串口驱动移植(Bubblegum-96平台)

作者:wowo 发布于:2016-6-18 9:56 分类:X Project

话说现在的u-boot长得和linux kernel越来越像,设备模型(driver model)、device tree、各种framework(gpio、pinctrl、clock、i2c、regulator、等等),各种概念,均和linux kernel保持一致。这对工程师(特别是linux驱动工程师)来说,是一个利好,因为熟悉了linux kernel相关子系统之后,去搞u-boot基本上就毫无压力了。

不过,对“蜗窝”来说,压力(或者说矛盾)就来了:要不要为u-boot中相关的子系统写分析文章?写吧,实在提不起兴趣,毕竟和kernel类似,我们的重点又在kernel分析上。不写吧,不符合我们的风格啊!

最后,鉴于时间的压力,只能选一个折衷方案:

对于“X Project” u-boot移植过程所涉及的driver模块,只写一篇移植说明,至于其它的,只能战略性放弃(当然,如果有同学有兴趣帮忙补上,我们还是很欢迎的)。

本文是这类文章的第一篇,介绍串口驱动(serial driver)的移植过程。因为u-boot跑起来之后,第一件事就是要把串口输出(console)准备好,以便后续模块的debug。

阅读全文>>

标签: uart x project u-boot uboot porting serial

评论(10) 浏览(14991)

DRAM 原理 2 :DRAM Memory Organization

作者:codingbelief 发布于:2016-6-14 22:43 分类:基础技术

在 DRAM Storage Cell 章节中,介绍了单个 Cell 的结构。在本章节中,将介绍 DRAM 中 Cells 的组织方式。

阅读全文>>

标签: SDRAM dram

评论(10) 浏览(41857)

通过点亮LED的方法调试嵌入式代码

作者:wowo 发布于:2016-6-12 22:10 分类:软件开发

在软件开发的过程中,debug(调试)是一个很重要的事情,因为没有百分之百正确的代码,一旦结果不符合预期,我们需要知道问题出在哪里了。

在PC环境下开发应用程序,我们不需要太操心,因为有各式各样的模拟器、调试器可供使用,我们可以追踪到每一行代码的执行过程和执行结果,找出问题只是时间问题而已。但在嵌入式环境下,就有些麻烦了,能用的手段,无外乎两种:

1)使用硬件仿真器定位问题。

2)使用日志输出定位问题。

对嵌入式工程师(特别是linux工程师)而言,鉴于使用硬件仿真器的诸多不便(成本高,无法保证人手一个;硬件连接复杂,需要预留特定接口;使用不方便;等等),日志输出几乎成为必备且唯一的debug手段。但是,总会有例外:

系统刚刚启动,在日志输出的通道(通常是UART接口)ready之前,怎么debug?

在不得不使用仿真器之前,我们还有一个简单的方法,就是点LED灯,本文将结合“X Project”“【任务2】启动到u-boot command line”实现的过程,对这个方法进行简单的介绍和总结。

阅读全文>>

标签: debug LED

评论(6) 浏览(11974)

DRAM 原理 1 :DRAM Storage Cell

作者:codingbelief 发布于:2016-6-8 16:41 分类:基础技术

接下了 X Project SDRAM 的任务,趁机整理下 DRAM、SDRAM、DDR SDRAM、LPDDR 等相关的内容。

这是第一篇,简单介绍下 DRAM Storage Cell 的相关内容。

阅读全文>>

标签: SDRAM dram

评论(15) 浏览(75080)

u-boot启动流程分析(2)_板级(board)部分

作者:wowo 发布于:2016-6-7 22:06 分类:u-boot分析

书接上文(u-boot启动流程分析(1)_平台相关部分),本文介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的、board有关初始化过程。该过程将持续u-boot的整个生命周期,直到main_loop(即传说中的命令行)。

注1:由于u-boot后初始化过程,基本上涉及到了所有的软件模块,因此本文不能一一分析,基本原则就是捡看着顺眼的、熟的下手了~。

阅读全文>>

标签: uboot board init relocate relocation dram

评论(26) 浏览(61994)

蓝牙协议分析(6)_BLE地址类型

作者:wowo 发布于:2016-6-7 11:40 分类:蓝牙

也许关注BLE的同学都注意到了,BLE设备有多种类型的设备地址,如Public Device Address、Random Device Address、Static Device Address、Private Device Address等等。如果不了解内情,大家肯定会被它们绕晕。不过存在即合理,这样看似奇怪的设计,实际上反映了BLE的设计思路以及所针对的应用场景。让我们通过本文一窥究竟。

阅读全文>>

标签: 蓝牙 BLE public random static private resolvable address

评论(46) 浏览(77114)

X-003-UBOOT-基于Bubblegum-96平台的u-boot移植说明

作者:wowo 发布于:2016-5-29 18:00 分类:X Project

本文是X Project “【任务1】启动过程-Boot from USB”的一部分,将以“Bubblegum 96boards”为例,介绍将u-boot移植到一个新的平台上的步骤和方法,并以此为契机,分析、理解u-boot的编译过程。

阅读全文>>

标签: bubblegum uboot porting

评论(42) 浏览(24072)

蓝牙协议分析(5)_BLE广播通信相关的技术分析

作者:wowo 发布于:2016-5-27 16:15 分类:蓝牙

大家都知道,相比传统蓝牙,蓝牙低功耗(BLE)最大的突破就是加大了对广播通信(Advertising)的支持和利用。关于广播通信,通过“玩转BLE(1)_Eddystone beacon”和“玩转BLE(2)_使用bluepy扫描BLE的广播数据”两篇文章的介绍,我们已经有了一个整体的认识。本文将依此为基础,从技术的角度,分析和理解BLE协议中有关广播通信的定义和实现。

注1:之前的蓝牙协议分析文章(如“蓝牙协议分析(3)_蓝牙低功耗(BLE)协议栈介绍”),偏向于从横向、从大而全的角度,介绍蓝牙协议,以便让大家有一个整体的认识。而从本文开始,我们会收敛到一个个的功能点上,以功能为出发点,从纵向的角度,游走于蓝牙协议的各个层次中,以加深对蓝牙协议的理解,进而达到融会贯通的目的。

阅读全文>>

标签: 蓝牙 BLE scan advertising 广播 discover connect

评论(57) 浏览(92861)

ARMv8之Observability

作者:linuxer 发布于:2016-5-25 18:22 分类:ARMv8A Arch

在ARMv8关于memory order描述章节中,大量使用了observer、observed、completion等术语,本文主要是澄清这些术语,为后续描述memory order和memory barrier相关指令打下基础。另外,在几个星期前,和codingbelief同学讨论DMB指令的时候,他提出了一个尖锐的问题:什么是PE observes memory access,是指 cpu 执行了 memory access 指令么?当时我对这些概念也比较模糊,未能回答他的疑问,现在希望这份文档可以解决这个问题。

阅读全文>>

标签: ARMv8 observer observed

评论(8) 浏览(11715)

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