自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

转载 (KEILv5)使用matlab绘制从KEIL memory导出的内存数据

使用matlab绘制从KEIL memory导出的内存数据如标题,某些时候我们需要分析keil调试过程中的数据,比如从I2S、SPI、I2C或者UART获取到的波形数据,这些数据时数字流,通过逻辑分析仪是没有办法直观的观察其波形,因此,我们需要把数据导出来,通过合适的工具使数据可视化,比如一些规律的波形图。下面我将提供一种方法供参考高潮来了第一步:导出数据到本地KEIL通过UL...

2017-06-09 18:41:00 1122

转载 Cortex-M3 Bit-Banding

Cortex-M3 Bit-Banding1. 概述CM3的存储器系统支持所谓的“位带”(bit-band)操作。通过它,实现了对单一bit的原子操作。位带操作仅适用于一些特殊的存储器区域中。从汇编角度看:与传统方法的比较:在位带区中,每个比特都映射到别名地址区的一个字——这是个只有 LSB才有效的字。支持位带操作的两个内存区的范围是:0x2000_0000-0x2...

2016-12-12 10:54:00 253

转载 (linux)LED子系统

数据结构(/include/linux/leds.h)enum led_brightness { LED_OFF = 0, LED_HALF = 127, LED_FULL = 255,};led_classdev代表led的实例:struct led_classdev { const char ...

2016-09-18 09:18:00 210

转载 cygwin添加到有右键菜单

cygwin添加到有右键菜单前提为了在windows中使用cygwin编译指定文件代码更为方便,所以动心思琢磨把cygwin添加到右键菜单,百度了一下,发现很多这样的教程,但是有问题,比如添加了但是右键点击文件夹名并没有cd跳转到该文件名目录下,不断尝试后发现了更好的路径方法。添加右键菜单开始->运行->regedit;在HKEY_CLASSES_ROOT\Dire...

2016-09-09 20:15:00 154

转载 (linux)BSP(板上支持包)概述

1. BSP概述BSP即Board Support Package,板级支持包。它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上。对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互。BSP是所有与硬件相关的代码体的集合。一个成熟的商用操作系统,其被广泛应用的必要条件之...

2016-08-08 00:06:00 1515

转载 (C)程序控制块(TCB)

程序控制块1. 程序控制块从代码上看,程序控制块就是一个结构体.例如: typedef struct tcb{ char * tast_name; //任务名字 int p; //任务重要级别 int v_number; //版本号 void (*fun)(void); //指向存储任务代码空间地址...

2016-07-27 18:55:00 1478

转载 (C)位字段(bit-field)

位字段(bit-field)在存储空间很宝贵的情况下,有可能需要将多个对象保存在一个机器字中,一种常用的方法是:使用类似于编译器符号表的单个二进制位标志集合,外部强加的数据格式(如设备接口等寄存器)经常需要从字的分值中读取数值.通常采用的方法是:定义一个于相关位的位置对应的"屏蔽码"集合,如: #define KEYWORD (1<<0) #def...

2016-07-27 18:53:00 126

转载 (C)结构数组

结构数组对于大小相同但是类型不同的数组,定义结构体数组对其很有帮组.例如: char *keyword[NKEYS]; int keycount[NKEYS];这两个数组大小相同,因此 可以用另一种不同的组织方式,也就是结构数组.形如: struct key{ char *word; int count; ...

2016-07-27 18:53:00 89

转载 (深入理解计算机系统)过程调用

过程调用1. 栈帧结构说明:返回值在相对%ebp偏移量为4的位置;第一个参数放在相对于%ebp偏移量为8的位置;支持过程调用和返回的指令:一个过程调用的整个汇编流程示意:转载于:https://www.cnblogs.com/yanghong-hnu/p/5700869.html...

2016-07-24 15:24:00 190

转载 (深入理解计算机系统)大端模式和小端模式

Big-Endian大端模式和Little-Endian小端模式定义Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。网络字节序:TCP/IP各层协议将字节序定义为Big-Endian,因此TCP/IP协议中使用的字节序通常称之为网络字节序...

2016-07-24 15:23:00 167

转载 (深入理解计算机系统)内存对齐

内存对齐为何要内存对齐平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。性能原因:经过内存对齐后,CPU的内存访问速度大大提升。内存对齐的规则许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓...

2016-07-24 15:21:00 235

转载 (深入理解计算机系统)AT&T汇编指令

AT&T汇编指令学习(GCC)寄存器命名原则:相比inter语法,AT&T语法格式要求所有的寄存器都必须加上取值符"%".操作码命令格式:源/目的操作数顺序:Intel语法格式中命令表示格式为:"opcode dest, src"; "操作码 目标, 源"AT&T语法格式表示为:"opcode src, dest"; "操作码 源, 目标"操...

2016-07-24 15:20:00 552

转载 (深入理解计算机系统)编译,链接和装载

编译连接目标文件的格式可重定位文件:包含代码和数据 可被用来链接成执行文件或者共享目标文件 linux(.o) windows(.obj) 可执行文件:包含可以执行的程序系统可以直接执行的文件linux (ELF文件,无后缀) windows (.exe) 共享目标文件:包含代码和数据跟可重定位文件和共享目标文件链接,产生新的目标文件动态连接器将共享目...

2016-07-24 15:19:00 112

转载 (C)struct结构体指针

结构体指针  指针结构与指针的关系亦有两重:其一是在定义结构时,将指针作为结构中的一个成员;其二是指向结构的指针(称为结构指针)。前者同一般的结构成员一样可直接进行访问,后者是本节讨论的重点。结构指针说明的一般形式是:      struct (结构类型名称) * (结构指针变量名);例如:struct date * pdate, today;说明了两个变量,一个是指向结构d...

2016-07-23 22:52:00 355

转载 (linux)BSP板级支持包开发理解

1. 概述嵌入式系统由硬件环境、嵌入式操作系统和应用程序组成,硬件环境是操作系统和应用程序运行的硬件平台,它随应用的不同而有不同的要求。硬件平台的多样性是嵌入式系统的主要特点,如何使嵌入式操作系统在不同的硬件平台上有效地运行,是嵌入式系统开发中需要解决的关键问题。解决的方法是在硬件平台和操作系统之间提供硬件相关层来屏蔽这些硬件的差异,给操作系统提供统一的运行环境,这种硬件相关层就...

2016-07-23 22:29:00 173

转载 TortoiseSVN使用笔记

TortoiseSVN版本冲突详解 下列步骤展示了如何将分支A中的修改合并到分支B。1.在分支B的本地副本目录中选择"合并(Merge)"。2.选择“合并一个版本范围(Merge a range of revisions)”,点击下一步。3.输入分支A的svn服务器端路径(注意:此路径应与步骤1中的分支B本地路径相对应)。4....

2016-07-23 21:59:00 71

转载 (linux)idr(integer ID management)机制

最近研究进程间通信,遇到了idr相关的函数,为了扫清障碍,先研究了linux的idr机制。IDR(integer ID management)的要完成的任务是给要管理的对象分配一个唯一的ID,于是可以通过这个数字找到要管理的对象。应用IDR机制时要包含头文件<linux/idr.h>。struct idr { struct idr_layer *top; ...

2016-07-23 21:50:00 196

转载 (linux)struct inode 和 struct file

转自:http://www.cnblogs.com/QJohnson/archive/2011/06/24/2089414.html1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode { struct ...

2016-07-23 21:19:00 114

转载 cygwin使用笔记

1.在cygwin里访问Windows盘cd/cygdrive/ccdc:2.整合cygwin命令到Windows中假设cygwin安装在d:/develop/cygwin,则将d:/develop/cygwin/bin添加到系统变量PATH中(最好加在windows前面,这样的话,有些相同的命令的话,是先执行cygwin的命令,而不是windows命令,比如find)就可...

2016-07-23 20:52:00 409

转载 (C)结构数组

对于大小相同但是类型不同的数组,定义结构体数组对其很有帮组.例如: char *keyword[NKEYS]; int keycount[NKEYS];这两个数组大小相同,因此 可以用另一种不同的组织方式,也就是结构数组.形如: struct key{ char *word; int count;...

2016-07-07 11:59:00 78

转载 (C)位字段(bit-field)

在存储空间很宝贵的情况下,有可能需要将多个对象保存在一个机器字中,一种常用的方法是:使用类似于编译器符号表的单个二进制位标志集合,外部强加的数据格式(如设备接口等寄存器)经常需要从字的分值中读取数值.通常采用的方法是:定义一个于相关位的位置对应的”屏蔽码”集合, 如: #define KEYWORD (1<<0) #define ...

2016-07-07 11:57:00 117

转载 (C)非局部跳转语句(setjmp和longjmp)

1. 特点非goto语句在函数内实施跳转,而是在栈上跳过若干调用帧,返回到当前函数调用路径上的某一语句. 头文件包含#include Void longjmp(jmp_buf env,int val); 返回值:若直接调用则返回0,若从longjmp调用返回则返回非0值 注: setjmp参数evn的类型是一个特殊的类型jmp_buf,这一数据类型是...

2016-07-07 11:56:00 93

转载 (C)volatile关键字

1. 作用volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。 如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。 下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这...

2016-07-07 11:52:00 80

转载 (C)strcpy ,strncpy与strlcpy

1. 背景好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。2. strcpystrcpy 是依据 /0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。 strcpy 常规的实现代码如下:char * strcpy(char *to,...

2016-07-07 11:38:00 111

转载 数字音频技术

数字音频技术声音的基本概念声音是通过一定介质传播的连续的波重要指标: 振幅:音量的大小 周期:重复出现的时间间隔 频率:指信号每秒钟变化的次数 声音按频率分类:次声波: < 20HZ 人耳可听: 20Hz~20kHz 超声波: > 20kHz声音的类型波形声音:包含了所有声音形式。 语...

2016-07-01 14:45:00 180

转载 Ruby入门笔记

Ruby入门到精通Ruby环境的搭建(windows)1.获得和安装Ruby从 http://rubyforge.org/frs/?group_id=167 下载最新RubyInstaller 安装需要勾选”Add Ruby executables to your PATH” 安装结束后,运行ruby -v 显示版本号。如果正常显示Ruby版本号,表示安装成功...

2016-07-01 14:43:00 107

转载 python学习笔记

python学习笔记1.关于#!/usr/bin/env python这只是告诉操作系统这个脚本的解释、执行程序的具体位置,加了这个头,在”X”类操作系统中就直接可以这样执行脚本了“hello.py”,否则的话就得这样执行“python hello.py”. 区别: #!/usr/bin/python #直接告诉计算机执行程序的具体位置 ...

2016-07-01 14:38:00 76

转载 uCOS-ii笔记

ucos ii system文件结构上层:应用软件,用户代码中层:与处理器无关代码 与应用程序相关配置文件 与处理器有关代码 下层:硬件(cpu,interupt,timer,gpio,iis…) 内核结构ucos的内核机构可以从以下的代码可以看出,应用支持10个事件控制块,5个事件标志...

2016-07-01 14:36:00 206

转载 蓝牙BlueTooth技术学习理解

1.BLUETOOTH基本了解BLUETOOTH出自丹麦Bluetooth SIG 蓝牙技术联盟,非盈利组织.主要任务是发布蓝牙规格、管理资格认证程序、保护蓝牙商标及宣传蓝牙无线技术.重要网站 蓝牙SIG的官网: www.bluetooth.org蓝牙技术应用网站: http://www.bluetooth.com蓝牙技术规范 使...

2016-07-01 14:32:00 406

转载 FAT和EXFAT文件系统

文件系统文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法.在移动存储设备上比较常用的有FAT文件系统和ExFAT文件系统。FAT分区依据FAT表中每个簇链的所占位数分为fat12、fat16、fat32三种格式;exFAT是为了解决FAT32等不支持4G及其更大的文件而推出的文件系统。知识点bios...

2016-07-01 14:30:00 917

转载 uCOS-II模拟(VS2010&WIN32)

转自http://www.amobbs.com/thread-5462878-1-1.html自学uCOS-II源码,在论坛上上看到大神在WIN7 Visual Studio 2010环境下调试uCOS-II 2.91。故转载过来跟着调试学习。1. 下载uCOS-II 2.91官方下载地址:http://micrium.com/page/downloads/source_...

2016-04-02 00:41:00 578

转载 MIPS汇编指令集

MIPS汇编MIPS指令集MIPS指令集属于精简指令集MIPS的所有指令都是32位,指令格式简单,而X86的指令长度不是固定的。简单的指令和格式易于译码和流水线操作,但是代码密度不高,导致二进制文件大MIPS有32个通用寄存器REG,为什么是32个而不是更多呢? 因为更多的寄存器需要更多的指令空间对寄存器编码,也会增加上下文切换的负...

2016-03-30 16:55:00 2834

转载 (深入理解计算机系统) 实时系统

实时系统概念前后台系统后台是各种面向硬件的程序,如中断,定时器,gpio等。 前台是:main(){ while(1) { ; }}循环中不断调用各种函数实现功能。代码临界段指处理时不可分割的代码,一旦这部分代码运行就不可以打断、 为了确保代码能正常运行,进入临界段代码钱需要关中断,执行完...

2016-03-30 16:53:00 158

转载 I2S总线协议理解

I2S总线Inter IC Sound总线又称集成电路内置音频总线。I2S对数字音频设备之间的音频数据传输而制定的一种总线标准。采用了沿独立的导线传输时钟与数据信号的设计,通过将数据和时钟信号分离,避免了因时差诱发的失真,为用户节省了购买抵抗音频抖动的专业设备的费用。I2S模型I2S有3个主要信号1).串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的...

2016-03-30 15:31:00 1034

转载 gitbash使用

gitbash是什么git bash是Windows下的命令行工具。 基于msys GNU环境,有git分布式版本控制工具。 主要用于git版本控制,上传下载项目代码。 GNU环境,就是说如果你喜欢linux/unix的环境,就可以选择使用git bash。 里面有你熟悉的linux工具,tar,grep,awk等,且可以安装编译环境gcc,make等。参考:...

2016-03-21 11:06:00 457

转载 (C\C++)inline关键字

背景(C&C++中)inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。表达式形式的宏定义如:#define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))取代这种形式的原因如下: 1. C中使用#define这种形式宏定义的原因是因为,C语言是一...

2016-03-21 10:33:00 74

转载 (linux)main.c中的初始化

main.c中的初始化head.s在最后部分调用main.c中的start_kernel() 函数,从而把控制权交给了它。 所以启动程序从start_kernel()函数继续执行。这个函数是main.c乃至整个操作系统初始化的最重要的函数,一旦它执行完了,整个操作系统的初始化也就完成了。 如前所述,计算机在执行start_kernel()前处已经进入了386的保...

2016-03-21 10:08:00 281

转载 FAT和FAT32文件系统的原理

[转自]http://www.sjhf.net/Article/sjhfdoc/200404/1.html一、硬盘的物理结构: 硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头...

2016-03-19 12:13:00 575

转载 (C)do{...}while(0);的用法及意义

实际上,do{…}while(0)的作用远大于美化你的代码。 总结起来这样写主要有以下几点好处:1. 辅助定义复杂的宏避免引用的时候出错: 举例来说,假设你需要定义这样一个宏: #define DOSOMETHING()\ foo1();\ foo2();这个宏的本意...

2016-03-18 10:25:00 110

转载 (算法之美)求二进制中1的个数

问题  任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少有人见到本文中所有的算法。如果您上头上有更好的算法,或者本文没有提到的算法,请不要吝惜您的代码,分享...

2015-12-30 15:39:00 84

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除