- 博客(17)
- 资源 (29)
- 收藏
- 关注
原创 I2C总线(三)裸机驱动程序
S5PV210的I2C控制器有三个主要的寄存器,分别是I2CCON、I2CSTAT、I2CDS。SOC内部内置了硬件控制器来控制通讯时序,写软件时只需要向控制器中写入配置值即可,控制器会产生适当的时序在通信线上和对方通信。1. 结构框图(1)时钟部分,时钟来源是PCLK_PSYS,经过内部分频最终得到I2C控制器的CLK,通信中这个CLK会通过SCL线传给从设备。(2)I2C总线...
2018-01-19 22:57:52 1016
原创 SPI总线(一)总线结构
概念:SPI串行外设接口,是一种高速的、全双工、同步的通信总线。采用主从模式(Master Slave)架构,支持多个slave,一般仅支持单Master。 总线结构:SPI接口共有4根信号线,分别是设备选择线(片选SS)、时钟线(SCK)、串行输出数据线(MOSI)、串行输入信号线(MISO)。 ...
2018-01-17 23:06:23 2616
原创 I2C总线(二)EEPROM - AT24C02简介
概念:电可擦除可编程只读存储器,类似于flash的固态存储器。 1. EEPROM 可以按位擦写,flash只能大片擦除2. EEPROM 一般容量都不大,一般都在64Kbit以下3. AT24C02 存储容量2K bit,内容分为323页,每页8Byte,共256Byte,操作时有两种寻址方式:芯片寻址和片内子地址寻址。...
2018-01-17 22:28:08 2634
原创 I2C总线(一)硬件结构 及 IIC时序
一、电器特性概念:I2C中心是 两线式 串行总线,用于连接微控制器及其外围设备。I2C总线只有两根双向信号线:SDA:数据线 SCL:时钟线控制原理:通过控制SCL和SDA线高低电平时序,产生I2C总线协议所需的信号进行数据传输。在总线空闲状态,这两根线一般被上面所接的上拉电阻拉高,保持高电平。I2C传输速率:100kbit/s ~ 3.4Mbit/s二、总线寻...
2018-01-17 21:08:58 8766
转载 野指针及c++指针使用注意点
野指针及c++指针使用注意点避免野指针的产生“野指针”的成因主要有:1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。char *p; //此时p为野指针 2)指针p被free或者delete之后,没有置为NULL,
2018-01-16 23:25:32 272
原创 C++ 虚拟继承
概念:解决不同途径继承来的同名的数据成员内存有不同的拷贝函数造成数据不一致的问题,将共同的基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数也只有一个映射。 解决问题:解决了二义性问题,节省了内存,避免了数据不一致的问题。 使用情景:当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),
2018-01-16 20:20:54 237
原创 Busybox 设置登录用户名、密码
一、配置Busybox 二、设置/etc/init.d/rcS文件 添加 /bin/login三、设置/etc/inittab不需要登录:::respawn:-/bin/sh需要登录:::respawn:/sbin/getty -L ttyAM0 115200 vt100四、添加/etc/nsswitch.conf、/
2018-01-15 19:58:31 7975 1
转载 C++ 类对象大小计算(二)含有虚函数类
五、包含虚函数的类 包含虚函数的类,对象生成时,会在类对象当中插入一个指针,这个指针称做虚函数表指针,简称虚表指针(vPtr)。该指针指向一个虚函数表(简称虚表),虚函数表中存储了虚函数的入口地址。基类当中有虚函数时,会产生该虚函数表;创建基类对象,对象中的vPtr会指向该表;调用虚函数时,是通过vPtr在此表当中寻找函数入口地址的。 当派生类继承含有虚函数的子
2018-01-13 16:49:31 891
转载 C++ 类对象大小计算(一)常规情况
C++类对象计算需要考虑成员变量大小,内存对齐,是否有虚函数,是否有虚继承等1. 空类#include using namespace std;class A {};class B : public A{};class C : public B{};int main() { A a; B b; C c; cout<<"size of a:"<<si
2018-01-13 16:24:08 2861 1
转载 虚函数与纯虚函数
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:class A{public: virtual void foo
2018-01-13 15:11:30 186
转载 字节对齐问题探讨
引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。 现在,我们编写一个简单的程
2018-01-13 14:30:26 608
转载 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
2018-01-11 22:00:47 200
原创 TQ210 屏幕颜色操作
一、LCD操作步骤在应用程序中,操作/dev/fbn的一般步骤如下:(1) 打开/dev/fbn设备文件。open("/dev/fb0",O_RDWR); (2) 用ioctl()操作取得当前显示屏幕的参数,如屏幕分辨率、每个像素点的比特数。根据屏幕参数可计算屏幕缓冲区的大小。ioctl函数是实现对设备的信息获取和设定,第一个参数为文件描述符,第二个参数为具体设...
2018-01-11 19:48:31 577
原创 framebuffer 帧缓冲
1、framebuffer 帧缓冲 帧缓冲(framebuffer)是Linux 系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。 framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的...
2018-01-11 19:42:56 3111
原创 static 的作用
1. 在函数体内,一个被声明为静态的变量,在该函数被调用的过程中其值不变;2. 在模块内(但在函数体外),一个被声明为静态的变量,可以被该模块内的任何函数调用,但不能被模块外的函数调用,是一个本地的全局变量;3. 在模块内,一个被声明为静态的函数,只可以被该模块内的其他函数调用,也就是说被限制在本地范围内使用
2018-01-10 22:47:12 214
原创 #define 与 const 的特点及区别
#define1.只是用作文本替换2.生命周期起于预处理段、止于编译期3.存在于代码段4.只是一个常数、一个命令中的参数,并没有实际的存在5.无数据类型const1.存在于数据段、堆栈有分配空间2.编译运行阶段使用3.有实际的存在,并可被调用、传递4.有数据类型,编译运行时会进行类型检查define 注意“边缘效应”, 例:#define
2018-01-10 22:13:08 358
原创 #define的使用
1.简单的define定义#define MAXTIME 1000一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。2.define的“函数定义”d
2018-01-10 20:43:05 415
RX8025驱动-STM+Linux
2019-01-27
freetype-2.4.10.tar.bz2 安装包
2018-02-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人