自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 -3dB, 半功率点与通带的一点理解

对于低通频率响应,随着信号的频率增加到一定的程度信号幅度会开始衰减。当信号的功率衰减到原有的一半时候有:  在坐标轴上对应的-3dB位置称为【半功率点】,如果用信号幅度(即电压)的变化来做衡量,因为功率与电压是平方关系,所以信号幅度衰减为原来的0.707倍的时候即半功率点 通常以-3dB位置为通带的截止频率,或者为通带与阻带之间的划分。对于通带的平坦度与阻带的衰减幅度,不同类型的滤

2013-06-07 12:05:03 17740

原创 虚拟机Ubuntu 12.04 LTS上搭建DHCP服务器流程

需要一个DHCP server用于测试MQX RTCS中的DHCP client功能.  1)虚拟机与主系统之间需要设置为Bridge桥接模式连接到相应的网卡,使得2者在局域网中是对等的关系。2)手动配置Ubuntu虚拟机的IP地址和子网掩码(局域网无需网关)同主机一致(比如IP=192.168.1.x,MASK=255.255.255.0),完成此步骤后两个系统可以互ping通。注意

2013-06-06 14:42:27 6618

原创 IAR与GCC支持浮点数的printf, sprintf格式化

在嵌入式软件开发过程中,如果要将浮点数格式化输出,经常会有不正确的结果出现。根本原因在于库中的printf, sprintf等函数的版本问题,由于支持全格式的时候占用的代码量和堆栈空间比较大,一般编译器默认都是实现标准甚至是最小的版本。在不同的平台上,几种不同的版本支持的格式不一样,举个例子:1)最小版本的printf仅支持整形格式化转义符%d以及字符串。2)标准版本的prin

2012-12-04 14:27:07 7573 1

原创 AVR ELF文件的生成与烧录

通常AVR芯片包括flash,eeprom,fuse,lockbits,user signature等几个非易失的内容需要在编程时烧录到芯片中,其中fuse部分是只有外部的编程器可以进改写,应用程序本身是无法更改的。在进行ISP烧录过程中,用户希望使用点一个按钮这样单一的动作来完成烧录,这就要求能把几个不同部分的擦出、烧写、比较的动作合成在一起来完成。可以使用ELF格式来完成这个目标,EL

2012-08-25 14:31:34 7516

原创 电容器与水桶的类比

第一部分:电容器的电容C的【定义式】和【决定式】1)平行板电容器电容C的【定义式】:电容器所存储电荷量Q与两端电压U的比值为电容器的电容C,即 C = Q / U。当存储1Q的电荷量时若电压为1V,那么电容为1F。上述定义式仅表示在电路中量度该物理量的一种方法,我们不可以说”平行板电容器的电容C跟两板间所带的电荷量Q成正比,跟两板间的电压U成反比”。因为电容器的电容C是客观存在的,

2012-03-09 22:20:48 3692

原创 AVR在IAR中将常量仅定义在FLASH上的细节

1)看一个普通的定义不用说,这种情况是肯定是test是在RAM中了char test[] = "Put String In Flash";如果是ARM平台的话,加个const就放到FLASH中了const char test[] = "Put String In Flash";但是在AVR中是行不通的,你会发现定义了这一行之后FLASH和RAM同时增加了(如果没有被编译器丢弃的话,

2012-03-03 11:14:33 11219 1

原创 VirtualBox调节Linux系统分辨率

安装完Fedora系统后Monitor中最大仅能设置1024*768的分辨率,如果在更大的主机系统桌面上全屏显示,则效果不佳。需要更改到与桌面相同的分辨率,如1440*900。我们同样需要先安装VirtualBox增强工具,完成后能使VirtualBox的Machine->A

2011-08-29 12:44:51 6022

原创 Atmel AT91SAM9x5系列ARM9

Atmel最新的AT91SAM9x5系列包括了5个型号的低功耗ARM926EJ-S处理器,公共的特性:400MHz ARM926EJ-S core / 16KB Data/Instruction Cache / DDR2 / MLC NAND / 3xHS USB HOS

2011-08-22 10:31:09 3671

原创 U-boot mkimage指定Linux内核地址时的两种方式

uImage的制作是使用的u-boot工具mkimage,build完u-boot后也会将mkimage build出來到/tools目录下,可以直接拿來用,它的作用就是在zImage的前面加上64个字节的头,让u-boot能够识别要加载内核的类型、加载地址等。基本格式:mk

2011-08-20 14:27:49 3182 1

原创 简单记录一下Linux gadget serial的工作

Linux支持连接各种USB从设备,同时也支持自己作为设备插入到其他主机当中。最典型的例子就是Android OS的手机,插入电脑可以被识别为U盘之类的设备。对于SOC来说,这部分直接对应了USB Device部分的操作。为了避免与作为主机时支持的"设备驱动 (U

2011-08-15 21:09:55 7821 1

原创 Atmel ARM9启动流程与Bootstrap的大小内幕

AT91SAM系列的ARM内置了一片bootrom, 如果选择了合适的BMS电平, 那么芯片启动后会将bootrom映射到0x0地址. 启动bootrom后会从外面的的NVM(dataflash, nandflash..)中去寻找是否存在"合法"的固件程序. 如果有就将这个固件拷贝到内部SRAM中来运行. 而这个固件程序我们一般放置的就是bootstrap. 再由它去完成u-boot和kern

2011-03-24 15:56:00 6443 4

原创 VirtualBox设置Shared Folder的步骤

<br />VirtualBox也有与VMware类似的Shared Folder的功能. 使得主机与虚拟机之间可以共享文件.<br />废话少说. 开工.<br /> <br />环境:<br />主机:Windows XP<br />虚拟机:Ubuntu 10.10<br /> <br />第一步:安装VBoxGuestAdditions工具. 这个类似于VMware Tool. 但容易安装得多. 先将VirtualBox安装后的目录下的VBoxGuestAdditions.iso加入到VirtualB

2011-02-28 15:26:00 16595

原创 在Source Insight中批量导入"不识别"文件类型.

<br />Source Insight默认可以识别C/C++/Perl/XML这些文件类型. 新建一个工程的时候可以使用add tree将相关的文件添加进去. <br />Source Insight识别文件是通过文件的后缀名来实现的, 因此用户一些自定义的后缀文件或一些不支持的后缀是无法实现自动添加的. (比如嵌入式中的汇编文件经常使用.s的后缀. 但Source Insight的汇编格式仅支持.asm后缀).<br />我们可以通过设置工程来达到批量导入"不识别"的文件类型.<br />Options

2011-01-28 12:17:00 9253 3

原创 不同硬件平台下,C/C++中的构体填充与对齐分析

在C语言中我们定义的结构体的大小常常不是所有成员变量大小的总和(大于或者等于),这是因为编译器“暗中”执行了“对齐”的动作,使得访问更有效率,当然也会牺牲一定的空间。对于8位机来说,内部总线的宽度是8位的,所以无论是存取8位的数据,还是16或32位数据,从什么地址开始存取都是无关紧要的,因为所有的访问最终都会拆分成单个字节访问,因此在8位机上,结构体的大小就等于所有成员大小的累加和。对于3

2011-01-24 14:13:00 1282

原创 Fedora14中使用root登录图形界面

<br />从Fedora11之后的发行版, 系统就禁止了直接从root登录到图形界面.<br />我们做程序开发时有的时候会不方便. 在网上搜索了一下解决方案.<br /> <br />1) 进入到/etc/pam.d/目录下 : cd /etc/pamd.d/<br />2) 切换到root权限 : su - root<br />3) 用vim打开gdm和gdm-password两个文件.分别用"#"注释掉 auth required pam_succeed_if.so user != root qui

2011-01-23 16:40:00 1397

原创 LCD控制器信号分析

总结一下学习LCD Driver的过程中对RGB接口的信号分析.RGB接口通常都具备以下几个信号线DATA[0..23]:数据DCLK:点时钟EN:数据使能HSYNC:水平同步(行同步)VSYNC:垂直同步(帧同步) DCLK是LCD控制器与LCD驱动之间的点同步信号. 每一个时钟周期在DATA线上传输的就是一个像素点的RGB数据.HSYNC是LCD控制器与LC

2010-12-28 20:23:00 1771

原创 Singleton模式(下)

我们来看看利用Singlton模式来编程的几个细节.首先是线程安全问题, 我们的Instance方法只在第一次创建类的实例, 但是如果有两个线程同时访问Instance. 则存在潜在风险.来分析一下, 假设有两个线程A, B. 当A进入Instance(), 发现该对象还没有创建, 进入if()分支. 此时由于时间片到或者被抢占等原因, 线程A被挂起, 开始运行线程B. 此时B也调用Instance()同时也发现对象没有创建, 进入if()分支创建了一个类对象. 二当A线程再次运行回来的时候它会再创建一个类

2010-07-03 09:56:00 671

原创 Singleton模式(上)

Singleton单例模式, 保证一个类仅有一个实例, 并且提供一个访问它的全局访问点.教科书式的Singleton模式:#include using namespace std;class Singleton{public: static Singleton *Instance (void) { if(m_pInstance == NULL) { m_pInstance = new Singleton

2010-07-01 20:22:00 744

原创 非C++内建型别A和B, 在哪几种情况下B能隐式转化为A?

// Case 1 : B公有继承自Aclass B : public A{ ...}// Case 2 : B实现了隐式转化为A的转化class B { operator A();}// Case 3 : A实现了non-explicit的参数为B的构造函数class A { A(const B&);}// Case 4 : 赋值操作A

2010-05-12 22:33:00 3649 1

转载 c++ 之类的前置声明

刚开始学习c++的人都会遇到这样的问题:定义一个类 class A,这个类里面使用了类B的对象b,然后定义了一个类B,里面也包含了一个类A的对象a,就成了这样:一编译,就出现了一个互包含的问题了,这时就有人跳出来说,这个问题的解决办法可以这样,在a.h文件中声明类B,然后使用B的指针。//a.h//include "b.h"class B;class A{ ..

2010-05-08 17:17:00 605

转载 从一道面试题谈Linux下fork的运行机制

某外企面试linux开发职位面试题:给出如下C程序,在linux下使用gcc编译:#include "stdio.h"#include "sys/types.h"#include "unistd.h"int main(void){ pid_t pid1; pid_t pid2; pid1 = fork(); pid2 = fo

2010-04-16 15:39:00 891

空空如也

空空如也

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

TA关注的人

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