- 博客(16)
- 资源 (9)
- 收藏
- 关注
原创 DJYOS-ZigBee协议栈移植系列小文之二-ZigBee协议栈框架
ZigBee协议栈架构图物理层(PHY) ZigBee是一种短距离无线通信与网络技术,其数据交换最终是通过无线信道完成。物理层的任务就是通过无线信道进行安全、有效的数据通信,为MAC层提供服务。物理层定义物理无线信道和MAC层之间的接口,提供物理层数据服务和物理层管理服务。通过该接口维护物理层相关的管理对象的数据库(PIB)。完成的任务有:无线收发机的激活与关闭、信道能量
2015-06-16 14:58:47 1225
原创 DJYOS-ZigBee协议栈移植系列小文之一ZigBee网络技术概述
前期移植了ZigBee协议栈freakz到DJYOS上,打算出一个系列小文与诸位看官分享移植过程,敬请各位看官指正,欢迎拍砖。ZigBee网络特点Zigbee是基于IEEE802.15.4标准的低功耗个域网协议。其特点是:1.低功耗,两支干电池可支持节点工作半年以上。这是Zigbee的突出优势(在传感控制领域)。相比较,蓝牙能工作数周、WiFi可工作数小时。2.低速度,最高
2015-05-18 14:17:55 1758 1
原创 《小谈DJYOS中断线的配置方法》
中断是嵌入式系统中一个魅力十足亮点, 关于DJYOS对中断的内部巧妙的处理机制,各位看官可阅读《都江堰操作系统与嵌入式系统设计》中第六章节“中断”相关内容以及DJYOS源码中int.c/int.h中相关内容。本文探讨两点:DJYOS中中断处理流程以及如何将自己板子上的中断快速地挂接到DJYOS的中断系统。 DJYOS中断控制块的结构示意图如图1所示:图1 DJYOS中
2015-05-18 14:03:45 893
原创 上电后DJYOS如何从第一步跑到熟悉的main函数里
不知有多少搞嵌入式软件程序猿都是从main函数开始自己的第一行代码。遥想当年,第一次编写嵌入式软件代码还是在IAR的开发环境下写的,当时按照傻瓜式说明从安装开发IAR,配置开发环境到建立工程。还记得IAR自动生成了一个main.c文件,并且该文件中自动生成了voidmain();函数,只需在main函数中编写自己的代码,编译,烧录,调试,系统会自动从main函数的第一行开始运行,看到流水灯跑起来时
2015-04-20 10:52:41 598 1
转载 为什么寄存器比内存快?
阮一峰的网络日志 » 首页 » 档案上一篇:梁漱溟:做学问的八个境下一篇:什么是 Event L分类: 理解计算机为什么寄存器比内存快?作者: 阮一峰日期: 2013年10月14日计算机的存储层次(m
2013-11-04 10:34:10 573
转载 C底层若干细节
上次在网上偶遇一题,大致如下:假设str为在任何函数外申明的变量,分别指出以下str在何时初始化,存于何处,并画出其内存结构图:1) char str[] = "hello";2) char str[] = {'h', 'e', 'l', 'l', 'o'};3) char *str = "hello"; 4) const char str[] = "he
2013-11-01 13:44:34 905
转载 关于总线
◆ 什么是总线?所谓总线(Bus),一般指通过分时复用的方式,将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。是电脑中传输数据的公共通道。任何一个微处理器都要与一定数量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路与CPU直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外
2013-10-24 09:47:41 579
转载 C语言字节对齐 (一篇很好的说明文档)
文章最后本人做了一幅图,一看就明白了,这个问题网上讲的不少,但是都没有把问题说透。 一、概念 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。 二、为什么要字节对齐 需要字节对齐的根本原因在于CPU访
2013-10-18 14:24:26 470
转载 字节序(大/小端)和字节位宽对嵌入式软件可移植性的影响
本文谈谈嵌入式cpu的字节序和字节位宽对软件可移植性的影响,假设有A、B两台不相同的计算机之间互相通信。有下列数据结构定义:union data_pack{ unsigned long word; unsigned char bytes[4]; };在A计算机中,用下列语句:union data_pack bufA;
2013-10-17 16:10:57 846
原创 几个关于CPU的概念
1. CPU位长/位长 电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU。同理32位的CPU就能在单位时间内处理字长为32位的二进制数据。当前的CPU大部分是32位的CPU,但是字长的最佳是CPU发展的一个趋势。AMD已经将推出64位的CPU-Atlon64。未来必然是64位CPU的天下。
2013-10-17 16:09:07 702
转载 关于SDRAM
SDRAMSDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。目 录1演变
2013-10-12 14:07:26 857 1
原创 关于芯片时钟几个概念
输入时钟 /内核时钟/系统时钟板上给CPU供时钟的晶振叫做输入时钟, 输入时钟进入芯片后,会被倍频,通过PLL寄存器可以设置,倍频后时钟会给VCO,然后由VCO分出内核和系统时钟。内核时钟是CPU内核运行的速度,即执行指令的速度,通常都很快,但系统外设不能运行的太快,通常会工作在系统时钟下,如外部的SDRAM,通常最快为133MHz,这个时钟就是系统时钟。SPI速度最快为1/4系统时钟,约
2013-10-11 14:18:45 752
转载 CPU存储器大小端及栈增长方向
栈增长和大端/小端问题是和CPU相关的两个问题。在内存管理中,与栈对应是堆。对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方式是向下的,是向着内存地址减小的方向增长。在内存中,“堆”和“栈”共用全部的自由空间,只不过各自的起始地址和增长方向不同,它们之间并没有一个固定的界限,如果在运行时,“堆”和 “栈”增长到发生了相互覆盖时,称为“栈堆冲突”,系统肯定垮台。
2013-10-09 18:02:44 651
转载 关于Bootloader
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的
2013-10-07 16:59:34 755
转载 C语言中sizeof用法中关于边界对齐的问题
本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总结出VC中sizeof的主要用法。1、sizeof应用在结构上的情况请看下面的结构:struct MyStruct{double dda1;char dda;int type};对结构MyStruct采用sizeof会出现什么
2013-10-05 17:10:40 669
驱动框架设计 + 通俗易懂
2020-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人