- 博客(89)
- 资源 (4)
- 收藏
- 关注

原创 无线接收信号强度(RSSI)那些事儿
本文所述的原理适用于所有无线传输技术,只是用蓝牙来举例。应该说,嵌入式企鹅圈更加偏重于嵌入式和物联网、安卓技术原理方面的知识分享和传播,其次才是实践,尽管很多开发者都很浮躁地希望能够立刻获得例程源码。本人一直都认为,只有通晓理论,才能把实践做得更好,才能成为真正的专家级工程师,否则就永远都是码农一枚。一、应用 无线接收信号强度(RSSI)在距离测算方面的应
2017-03-31 13:21:12
48562

原创 深入理解Linux字符设备驱动
文章从上层应用访问字符设备驱动开始,一步步地深入分析Linux字符设备的软件层次、组成框架和交互、如何编写驱动、设备文件的创建和mdev原理,对Linux字符设备驱动有全面的讲解。
2016-03-20 11:09:13
7465

原创 固件空中升级(OTA)与固件二次引导的原理和设计
蓝牙固件空中升级(OTA)涉及到蓝牙无线通信、固件外存分布、固件内存分布(定制链接脚本)、固件二次引导等技术,完整和完美地设计和实现OTA,是一名嵌入式物联网软件工程师最好的技术体现。
2016-03-10 18:31:33
9704

原创 加速度传感器的原理和应用-手机翻转、失重检测、运动检测、位置识别
讲解加速度传感器(LIS3DH)的工作原理和应用,如静止运动检测、失重检测、手机翻转识别、位置识别等等。
2016-02-21 14:28:29
20741
1

原创 物联网网络编程、Web编程综述
本文是基于嵌入式物联网研发工程师的视觉对网络编程和web编程进行阐述.可以视为嵌入式企鹅圈发布微信Wifi接入解决方案的首篇原创技术分享
2016-02-02 00:02:31
5532
2

原创 从零开始搭建微信硬件开发环境全过程——1小时掌握微信硬件开发流程
笔者决定在嵌入式企鹅圈2016年的首篇文章中,发表微信硬件物联领域极具实践价值的文章,它将能指引和帮助任何有兴趣于物联网开发的童鞋们快速掌握微信硬件开发流程,只需一个小时,而再不需要通过揣摩微信硬件浩瀚的文档资料来完成艰难构建。
2016-01-11 23:57:42
30752
4

原创 以蓝牙开发的视觉解读微信Airsync协议
笔者对IOT和微信硬件平台的整个框架和技术都比较熟悉,并且已经在TI的CC254X和Dialog的DA14580上实现了微信Airsync协议通信。现在回过头来,从开发的角度,对微信Airsync协议进行重新解读,以帮助新进入物联网领域的开发者更快地掌握微信蓝牙设备通信开发,以让产品快速接入微信硬件平台。
2015-11-30 20:30:24
11752
1

原创 物联网核心协议—消息推送技术演进
消息触达能力是物联网(internet ofthings, IOT)的重要支撑,而物联网很多技术都源于移动互联网。本文阐述移动互联网消息推送技术在物联网中的应用和演进。
2015-10-29 18:16:55
5528
1

原创 揭开智能配置上网(微信Airkiss)的神秘面纱
本文介绍微信利用Airkiss技术对wifi设备进行智能配置上网的场景,并分析其实现的原理。
2015-10-21 23:06:44
17515
16

原创 一张图读懂基于微信硬件平台的物联网架构
本文从物联网的核心要素、物联网的关键场景、微信硬件平台的通信协议分析三个维度去分析基于微信硬件平台的物联网架构。
2015-10-15 18:28:51
13054
5

原创 如何快速理解一个全新的嵌入式操作系统(续)
如何快速理解一个全新的嵌入式操作系统的要点:项目框架、任务调度、任务间通信、消息的来源和处理、HAL!
2015-10-03 23:29:03
4397
2

原创 如何快速理解一个全新的嵌入式操作系统
在软件大局观作为学习新系统的背景知识的基础上,从软件需求的角度入手就能快速理解和掌握一个全新的系统。本文以TI蓝牙BLE CC254x的源码库和工程为例进行分析研究。
2015-09-28 11:12:15
7437
2

原创 从需求的角度去理解Linux系列:总线、设备和驱动
这是一篇有关如何学习嵌入式Linux系统的方法论文章,也是从需求的角度去理解Linux系统软件的开篇,期待此系列文章日后会是学习嵌入式Linux的标杆!
2015-09-23 21:08:52
10979
16

原创 Protocol buffer序列化及其在微信蓝牙协议中的应用
微信和蓝牙外设的通信协议采用了Protocol buffer对消息包体进行打包。在时间和空间性能上,Protocol buffe比XML更具优势。本文对Protocol buffe打包的微信蓝牙消息体进行分析。
2015-08-13 10:03:25
7157
1

原创 字符设备驱动、平台设备驱动、设备驱动模型、sysfs的关系
绝对干货~~学习Linux设备驱动开发的过程中自然会遇到字符设备驱动、平台设备驱动、设备驱动模型和sysfs等相关概念和技术。对于初学者来说会非常困惑,甚至对Linux有一定基础的工程师而言,能够较好理解这些相关技术也相当不错。本文横向比较关联各个驱动相关的知识点和纵向剖析Linux整个驱动软件层次,传道授业解惑!!
2015-07-24 23:27:36
5117
2

原创 Linux 设备文件的创建和mdev
本文是嵌入式企鹅圈开篇--《linux字符设备驱动剖析》的姐妹篇,在上述文章里面我们详细描述了字符设备驱动框架涉及的驱动注册、通过设备文件来访问驱动等知识,并明确通过device_create接口并结合mdev来创建设备文件,但没有展开这个知识点。本文将从代码级去理解Linux设备类和设备文件的创建过程。通过这两篇文章,我们将可以对linux字符设备驱动的机制和脉络有全面的认识。
2015-07-06 10:43:47
6181

原创 链接脚本在编程中的高级运用之二——运行时库和C++特性支持
我们在链接脚本在编程中的高级运用之一可变长数组中已经讲述了编译链接的原理,并且以uboot命令为例详细介绍链接脚本如何实现可变长数组。本章在前者的基础上继续讲述链接脚本在运行时库中的高级应用技巧,以及编译器如何支持类对象的构造和析构函数。本章的应用原则上类似于可变长数组,但本章更加侧重讲述运行时库的实现原理,其不仅通过链接脚本的section来实现可变长数组去支持任意多类对象的构造函数和析构函数,而且还支持特定函数体的“可变长”。
2015-06-03 10:33:38
2304

原创 链接脚本在编程中的高级运用之一:可变长数组
作为嵌入式软件工程师,应该要清楚程序的每一条指令在哪里,什么时候会被加载到内存,什么时候会被执行。链接脚本会明确告诉你程序的代码和数据在内存中的分布。精确控制代码和数据在内存中的分布是高效利用内存资源的前提。自定义链接脚本是资深嵌入式软件工程师的必备技能,更是嵌入式架构师的最基本要求。此外,灵活定制链接脚本在编程方面有更高级的应用。
2015-05-25 17:44:42
2071

原创 软件和硬件都是对生活的高度抽象---论中断控制(ARM体系编程)
不同的芯片体系设计在集成电路系统设计阶段其实都遵循大体一致的设计思想,芯片设计发展那么多年,真正为人所熟知的就是X86架构和ARM架构,当然还有日渐没落的MIPS,其他都是一些简单的控制器芯片体系。而硬件模块设计又是高度抽象于现实需求,很多时候,X86、ARM和MIPS只有底层寄存器和指令级别的差异,对于软件驱动基本是一致的。本文论及ARM体系的中断控制,以基于Cortex A8的S5PV210为例。中断是一种异步工作机制,也是嵌入式处理器的一个核心工作机制,对于实时操作系统来说必不可少。
2015-04-20 22:40:56
2658

原创 编译原理
编译过程就是把预处理的文件进行一系列此法分析,语法分析,语义分析以及优化后生产相应的汇编代码文件。主要分为5部分,分别是:词法分析、语法分析、语义分析、中间语言生产和目标代码生产与优化。本文图示介绍编译原理的整个过程。
2014-09-11 23:00:28
2740

原创 CPU指令的流水线执行
指令集是CPU体系架构的重要组成部分。CPU的指令执行一般包括取指、译码和执行,这是经典的三级指令执行流水线。本文阐述CPU流水线设计的由来和改进技术以及软件开发人员对于流水线需要注意的问题。
2014-07-13 23:22:09
10014
2

原创 SoC嵌入式软件架构设计之七:嵌入式文件系统设计
系统区(system disk,SD)包括操作系统、驱动、中间件、应用和字库、UI资源等文件,本文讲述SD区的文件系统设计。文件系统最主要的目标是为了实现单个文件的定位和读写。因为一般代码都是不可自修改的,即量产之后不会有写操作,所以嵌入式系统的SD文件系统就是为了能够简单、高效地定位某个文件和读取文件中的数据。本文将阐述SD文件系统的设计要点。
2014-05-13 23:16:01
2869

原创 SoC嵌入式软件架构设计之六:API设计方法
在嵌入式系统中,驱动都是以API的方式提供给应用进行调用。这里介绍嵌入式系统的API设计和管理实现方法。
2014-05-11 22:05:43
3545

原创 集成电路设计分工
正规的集成电路设计公司在进行片上系统(SoC)设计时都有明确的岗位分工,甚至会以部门的形式来区分各部分的职责,而且很多时候集成电路设计公司还会提供整体解决方案,包括芯片、软件和硬件,生产商直接按这个方案买其他的电阻电容等元器件即可生产、测试和销售。流程分工包括:市场、System design、IC digital、IC analog、IC verify、IC tapout、IC封装和测试、Firmware、应用开发等。
2014-05-07 12:27:00
3283

原创 SoC嵌入式软件架构设计之五:可执行程序的重构
本节讲述代码分块(Bank)管理思想下可执行文件的重构,即对程序编译后的可执行文件进行重新组织、打包,以在加载阶段获得最高的执行效率,减少内存占用。要使执行效率高,意味着可执行文件的格式尽可能简单,解析执行文件的流程简单,相应地,解析过程代码量少,即能够减少内存的占用。
2014-05-05 23:22:02
3386

原创 SoC嵌入式软件架构设计之四:内存空间规划分配
本文继续阐述基于低端控制器CPU的SoC固件架构设计。这一节讲述内存空间的具体规划分配,包括嵌入式固件系统软件层次、程度段组成、物理内存分块设计和具体的程序内存空间分配原则。
2014-05-04 23:48:49
5304

原创 SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则
上一节讲述了在没有MMU的CPU(如80251、MIPS M控制器系列、ARM cortex m系列)上实现虚拟内存管理的集成硬件设计方法,新设计的内存管理管理单元要实现虚拟内存管理还需要操作系统、代码分块(Bank)的支持。Bank设计是为了实现不同时刻运行的Bank(代码块)运行在同一块内存上,所以在运行之前操作系统需要将已存在内存的代码/数据进行缓存处理,并加载将要运行的Bank到该内存上。为了实现这个目的,需要明确几个设计原则。
2014-05-03 14:50:27
5954
2

原创 SoC嵌入式软件架构设计之二:没有MMU的CPU实现虚拟内存管理的设计方法
多个应用程序在同时竞争使用同一块物理内存,其必然会导致某个时刻只存在程序的某个片段在执行,也即是所有程序代码和数据分时复用物理内存空间—这就是内存管理单元(MMU)工作核心作用所在。 本文要谈的是控制器领域SoC的内存管理单元的软、硬件设计,其重要的理念同样是代码和数据分时复用物理内存空间,在保障系统功能和性能的基础上最大限度地节省物理内存的目的。
2014-04-30 23:14:00
7779

原创 SoC嵌入式软件架构设计之一:系统内存需求评估
内存是SoC(System on Chip,片上系统)集成设计的重要模块,是SoC中成本比重较大的部分。内存管理的软硬件设计是SoC软件架构设计的重要一环,架构设计师必须要在成本和效率中取得平衡,做到在节省内存的同时保证整个系统的性能。系统内存需求评估是对嵌入式软件架构师的最基本要求,同时也是其最重要的技能之一。一般在SoC项目立项的时候,架构师就要完成系统内存需求评估。
2014-04-28 00:00:59
7551
1

原创 32位和16位指令集模式自动切换机制
我们都知道MIPS架构体系是32位精简指令集(MIPS32),事实上MIPS在进入控制器市场时还推出了MIPS16e指令集模式,号称能够使编译后的代码减少30%左右。内存资源紧缺型系统一般会使用MIPS16e模式进行编译,以缩减内存使用量,达到降低成本的目的。 本文说明两种指令模式的切换机制,并用实例来详细说明两者之间是如何进行切换的。
2014-04-26 17:40:05
6382
1
S5PV210 IROM SPEC
2014-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人