自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 linux的dd命令使用

dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 1. 命令简介 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file 输入文件名,缺省为标准输入。 of=file

2014-03-03 15:50:25 770

转载 字符设备驱动程序之poll机制

最近看了一下Linux Poll 机制的实现,看了韦老师的分析文档,总结如下: int poll(struct pollfd *fds,nfds_t nfds, int timeout);总的来说,Poll机制会判断fds中的文件是否可读,如果可读则会立即返回,返回的值就是可读fd的数量,如果不可读,那么就进程就会休眠timeout这么长的时间,然后再来判断是否有文件可读,如果有,返回fd

2014-03-02 10:41:17 1049

转载 makefile中的三种变量

1.递归展开式变量第一种风格的变量是递归方式扩展的变量。这一类型变量的定义是通过“=”或者使用指示符“define”定义的。这种变量的引用,在引用的地方是严格的文本替换过程,此变量值的字符串原模原样的出现在引用它的地方。如果此变量定义中存在对其他变量的引用,这些被引用的变量会在它被展开的同时被展开。就是说在变量定义时,变量值中对其他变量的引用不会被替换展开;而是变量在引用它的地方替换展开的同时

2014-02-26 20:13:52 4029 1

转载 VMware的四种网络连接方式

1.名词解释FTP(File Transfer Protocol):文件传输协议使得主机间可以共享文件。SSH:Secure Shell(缩写为SSH),由IETF的网络工作小组(Network Working Group)所制定;SSH为一项创建在应用层和传输层基础上的安全协议,为计算机上的Shell(壳层)提供安全的传输和使用环境。NFS:是Network File System的

2014-02-26 15:27:36 985

原创 C++语言笔记系列之九——析构函数

1.析构函数(1)作用:用来释放一个对象,在对象删除前用来做一些清理工作。(2)特点:析构函数是类的特殊函数,函数体可以写在类内,也可以写在类外。析构函数的函数名和类名相同,但是在析构函数之前加上了“~”。2.析构函数需要注意的几个知识点(1)析构函数无形参,无返回值,不可以随意调用且不可重载。从这里可以看出,析构函数和构造函数的区别主要在于形参和重载这两方面。(2)只

2014-02-25 20:11:21 1339

原创 C++语言笔记系列之八——构造函数

1.构造函数作用:创建对象的时候,由系统自动完成对象的初始化工作,每创建一个对象时,系统将自动调用该对象的构造函数。一个对象若未设定构造函数,则系统会自动添加一个无参无操作的构造函数,每个对象完成创建时必须调用构造函数。2.构造函数的表示(1)构造函数的函数名与其类名同名。(2)构造函数是类的成员函数,访问权限一般被设置为public。(3)构造函数无返回值类型。3.构

2014-02-25 16:03:06 1164

原创 C++语言笔记系列之七——变量的作用域和使用方法

1.类的作用域类名::数据成员类名::成员函数2.区分局部变量、全局变量和类中的数据成员局部变量:在一个函数内定义的变量,作用域是在函数体内生效,在函数内直接使用。全局变量:在函数外和类体外定义的变量,作用域是从定义点一直到程序结束。注意:全局变量只可以在类外生效而不能在类内生效。类的数据成员:在类内定义,在类内生效。3.全局变量和局部变量同名在同一个函数内,局

2014-02-25 09:39:16 1635

原创 C++语言笔记系列之六——函数的重载、函数缺省参数

1.函数的重载(1)在同一个C++程序中出现多个同名函数。(2)函数重载的条件:重载函数有不同的形参类型表;重载函数有不同的参数个数。这两个条件满足一个即可:但是在函数的调用的时候会存在隐形的变量类型的提升:字符型->整型、float型->double型在判定是否满足重载的时候一定要先将类型提升考虑到,例如:int abs(int);int abs(char);这两

2014-02-24 22:00:54 1842

原创 C++语言笔记系列之五——引用(&)和this指针详解

1.this指针(1)this指针是一个类所隐含的指针,一个类(注意不是对象)只有一个this指针,this指针是该类的所有对象所共享的。(2)当通过一个对象访问该对象的成员时,默认this指针指向该对象。例如:class Location{public:    int x;    int y;    void Init(int a, int b);};

2014-02-24 10:05:18 2168

原创 STM32调试485(sp3485)技术总结

1.首先说明一下本人这次使用的STM32芯片是STM32F103RB,使用的资源是片内的USART1。2.下面是我的电路连接图:做一下简单的说明:(1)PA8是sp3485的发送/接收使能端,sp3485只能支持半双工的通信,所以这个引脚就是来控制这个芯片到底是收数据还是发数据的。(2)在有些电路连接中,sp3485的A和B端会一个被连接一个上拉电阻到3.3V,另一个会连接一个

2014-02-22 21:29:27 42253 5

原创 C++语言笔记系列之四——类的成员函数、对象

1.类的成员函数的实现类的成员函数可以在类内实现,但成员函数的函数体不要过于复杂,且尽量少使用循环语句,switch语句。注:类内实现的成员函数,也称为内联函数。类的成员函数可以在类外实现,在类外实现成员函数时,必须加类的作用域。例如:数据类型  类名::函数名(形参)    {        函数体    }注:在类外实现的成员函数,在类内必须进行声明。例如:

2014-02-20 16:51:37 1080

原创 C++语言笔记系列之三——类的定义以及private、public、protected访问权限

1.类的定义class 类名{private:私有数据成员和成员函数protected:受保护的数据成员和成员函数public:公有成员和成员函数};2.访问权限public:可以被类外任何程序段访问,作为类被外部访问的接口。private:只能够被类内部的公有成员和友元类成员访问,其他类的成员函数、派生类的成员函数、该类的对象均不可以访问。pr

2014-02-17 17:05:56 2726

转载 在C语言中实现面向对象

C语言是结构化和模块化的语言,它是面向过程的。但它也可以模拟C++实现面向对象的功能。那么什么是对象呢?对象就是一个包含数据以及于这些数据有关的操作的集合,也就是包含数据成员和操作代码(即成员函数)。用C语言实现面向对象功能主要就是实现拟“类”的继承,函数的重载等操作,这些主要是通过结构体和指针函数实现的。      在C++和Java中,多态行为是由一种动态连接机实现的,比如,在C++中定义

2014-02-13 17:09:18 830

转载 const int *p,const * int p,int const *p

1 从const int i 说起      有了const修饰的ic 我们不称它为变量,而称符号常量,代表着20这个数。这就是const 的作用。ic是不能在它处重新赋新值了。     认识了const 作用之后,另外,我们还要知道格式的写法。有两种:const int ic=20;与int const ic=20;。它们是完全相同的。这一点我们是要清楚。总之,你务必要记住const 与

2014-02-13 16:45:46 696

转载 volatile关键字

就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.简单地说就是防止编译器对代码进行优化.比如如

2014-01-24 08:59:37 663

原创 基于中断的LED驱动程序

1.linux中程序切换到后台去运行,第一种办法是在输入命令的时候在末尾加上&符号:# ./test &如果测试程序已经在运行了,这个时候可以按ctrl+z将程序切换到后台去运行。将后台运行的程序切换到前台:# fg如果有多个后台程序,可以先使用jobs命令,然后使用fg+数字来指定将某个程序切换到前台。# top这个命令可以查看各个进程使用CPU的比例(类似于wind

2014-01-23 22:03:40 888

原创 第七章 驱动开发_第一个字符型设备(LED)驱动

1.下图是驱动的基本示意图应用程序调用open,read,write等函数,open等函数是在c库中是实现的(通过swi + value指令就会触发一个异常),这个异常进入内核空间,内核空间就会根据不同的值调用sys_open,sys_read,sys_write等函数,这些函数根据打开的不同的文件的属性找到更为底层的驱动程序。2.对于一个最为简单的字符型驱动程序,最简单的做法就是让上

2014-01-11 09:30:27 1009 1

原创 文件系统制作&NFS

1.内核怎样启动第一个应用程序(1)打开一个设备open("/dev/console");sys_dup(0);sys_dup(0);注释:open函数打开一个文件(第一个文件标号为0),sys_dup(0)表示复制第一个文件,所以printf,scanf,err三个都指向终端/dev/console。(2)通过run_init_process来启动程序,这个函数如果传入的

2014-01-08 21:59:24 883

原创 第三课 protel学习系列——protel功能拓展

第三课1.     将99做的元件库导入到AD中:选中两个Lib文件→单击右键→选择导出→新建一个文件夹→将导出的东西放到这个文件夹中→AD的元件库在右边栏中→点击出现→点击元件库之后→选择Libraries→Installed→选择刚才导出的再点击Install→文件类型记得选为所有文件。2.     新建一个工程:file→new→Project→PCB Project→在左边出现的工

2014-01-08 09:56:50 2130

原创 第二课 protel学习系列——原理图的绘制&PCB绘制基础

1.     File→new→双击Documents→新建Schematic Document→更改名字。2.     Design→Options→将设计纸的大小改为A4(Standard选项)→上方(Organization)→添加信息→上方(Sheet Options)→Title Blo→修改样式→添加样式之后需要将此改为ANSI。3.     修改鼠标:Tools→Prefer

2014-01-08 09:55:27 2485

原创 第一课 protel学习系列——原理图库和封装库的制作

1.       运行protel时可以先运行 ENprotel软件,会让protel设计变得非常简单。2.       建立一个新的工程:file→new(此时可以为项目设置密码)→对Database File Name重新命名→点击Browse选择目录→找到目录后点击保存。3.       工程建立完成之后→双击Documents→在空白处单击右键→选择new来新建一个元件库。4.

2014-01-08 09:53:16 3727

原创 WORD学习笔记

1.  工具栏的显示和隐藏。在菜单栏点击右键,即可出现需要显示的工具栏。2.   保存文档时可以设置密码,在另存为界面时,点击工具→安全选项。3.   编辑→清除→格式:完成对所选内容的格式的清除。4.   如果有语法错误的地方,可以选择有错误的位置,点击鼠标右键,选择忽略错误。5.   点击视图→web版式:这样选择之后每行的内容刚好放满就会自动换到下一行。6.   视图→显

2014-01-08 09:50:37 1280

转载 C语言文件操作

c语言文件操作13.3 文件的打开与关闭 文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。13.3.1 文件的打开(fopen函数)

2014-01-08 09:45:23 1424

原创 第四章 裸机_裸机开发知识补充

原理图部分:1.芯片内部上拉功能的使用,在外接按键或者用作中断功能的时候可以将内部上拉功能使能,这样就避免了在外部电路需要接一个上拉电阻。2.2440的内存控制器会根据CPU发出的地址范围自动将对应芯片的片选端使能,能实现的原因是各个外设映射的地址不一样。3.协议:(1)你说的别人能听懂:双方约定信号的协议。(2)你说的语速要让别人接受:双方满足时序要求。4.UART:Un

2014-01-08 09:42:20 908

原创 s3c2440的2440init.s详解_补充

1.S3C2440支持两种启动方式:NAND FLASH和NOR FLASH。网上有很多文章分析TQ2440的启动文件2440init.s。介绍的很详细,我这里只是把S3C2440上电后的程序流程描述下。不管在哪种启动方式下,ARM上电启动都是从0X00000000开始运行。下面是复位程序入口。AREA Init,CODE,READONLYENTRYResetEntryb

2014-01-08 09:37:51 1391

原创 s3c2440的2440init.s详解

;=========================================; NAME: 2440INIT.S; DESC: C start up codes;       Configure memory, ISR ,stacks;        Initialize C-variables; HISTORY:; 2002.02.25:kwtark: ver 0

2014-01-08 09:36:35 2160

转载 RO、RW和ZI段详解

要了解RO,RW和ZI需要首先了解以下知识:     (1)    ARM程序的组成此处所说的“ARM程序”是指在ARM系统中正在执行的程序,而非保存在ROM中的bin映像(image)文件,这一点清注意区别。一个ARM程序包含3部分:RO,RW和ZIRO是程序中的指令和常量RW是程序中的已初始化变量ZI是程序中的未初始化的变量由以上3点说明可以理解为:RO就是

2014-01-08 09:34:20 2300

转载 ubuntu常用命令

查看软件xxx安装内容#dpkg -L xxx查询软件xxx依赖哪些包#apt-cache depends xxx查询软件xxx依赖哪些包#apt-cache depends xxx查看内核#uname -a查看Ubuntu版本#cat /etc/issue查看内核加载的模块#lsmod查看PCI设备#lspci查看USB设备#lsusb

2014-01-08 09:32:22 682

转载 环境变量和防火墙

1.修改系统环境变量(1)把编译器路径加入系统环境变量,运行命令#gedit /root/.bashrc编辑/root/.bashrc 文件,在最后一行添加:export PATH=$PATH:/usr/local/arm/4.3.2/bin重新登录系统(不必重启机器,开始->logout 即可),使以上设置生效,在命令行输入arm-linux-gcc –v,会出现如下信息,这

2014-01-08 09:31:04 847

原创 第三章 裸机_第一个裸机程序(中)

1 使用ADS 创建LED 工程本节通过一个简单的具体实例,介绍如何使用 ADS集成开发环境。包括如何创建一个新的工程,如何配置编译选项,并编译生成可以直接烧写到Flash中的bin 格式二进制可执行文件。1.1 建立一个工程在 ADS 集成开发环境中,点File->New,打开如图所示窗口:可以看到有 7 种工程类型可以选择:ARM Excuteable Im

2014-01-08 09:25:29 831

原创 内核启动之内核启动流程

1.创建一个sourceInsight工程将Linux-2.6.22.6_jz2440中的所有代码加入,然后移除掉Arch,然后将Arch中的Boot、Common、Configs、Kernel、Lib加入,Mach-s3c2410、Mach-s3c2440加入,将Mm、Mwfpe、Oprofile、Tools、Vfp加入,将plat-24xx加入;去掉include目录,然后将include

2014-01-06 21:36:13 840

原创 内核启动makefile分析

1.子目录下的makefilea.c和b.c要编译进内核:obj-y+=a.o b.oa.c和b.c要联合组成一个模块:obj-m+=ab.o(ab.o是一个名字)ab-objs:=a.o b.o(objs是固定的)执行时:a.c-->a.o b.c-->b.o a.o&b.o-->ab.ko2.顶层的makefile顶层的makefile中并没有找到uImage,

2014-01-06 16:03:57 1053

原创 内核启动过程的配置

1.制作内核的几个步骤A.解压缩B.打补丁C.配置(3种方法):make menuconfig、使用默认的配置,在上面修改(推荐)、使用厂家提供的配置文件D.编译注:查找默认配置文件:find -name "*defconfig*"2.配置内核的第二种方法详解在arch/arm/configs里面找到s3c2410与2440比较类似,所以选择使用这个来修改。执行ma

2014-01-05 11:19:23 708

原创 第六章 驱动开发_JTAG接口和supervivi

1.BSP是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。2.JTAG接口可以用来烧写程序,除此之外,JTAG接口在开发中最常见的用途是单步调试,不管是市面上常见的JLINK还是ULINK,以及其他的仿真调试器,最终都是通过JTAG接口连接的。标准的JTAG 接口是4 线:TMS、TCK、TDI、TD

2014-01-03 21:50:31 1100

原创 第五章 驱动开发_Nand flash启动 & Nor flash启动 & 时钟倍频

1.开发板通过配置的时钟一般较低,通过倍频器倍频得到高频率?这是因为CPU的主频是通过外频乘以倍频得来的,而外频是整个系统的基准频率,当外频提高时,如不作任何调整,PCI频率、内存频率、前端总线或HT总线频率等都会随之提升,因此有时就会出现超频后硬盘不正常的现象,在超频时往往锁定PCI频率并设置内存异步,就是这个原因。而对于倍频来说它与周边其它部件无关,提升倍频不会对它们造成影响,从另一方面

2014-01-03 21:50:29 1315

原创 第四章 驱动开发_vivi、uboot、eboot的区别

简单的说它们都是bootloader,所完成的任务也大同小异。vivi是mizi开发的用于s3c241x/s3c244x 的linux bootloader, 友善之臂移植了USB下载功能后就成了现在看到的superviviu-boot是一个广泛用于ARM平台的bootloader,目前也支持s3c241x/s3c244x,可以用来启动LinuxEboot是WinCE平台下的bootlo

2014-01-03 21:50:27 1081

原创 第三章 驱动开发_fdisk命令 & cp命令 & 主次设备号

1. 使用linux下的fdisk工具进行分区。用root用户登录到你的linux系统,查看你系统的分区#fdisk -l会出现以下的信息:Device Boot Start End Blocks Id System/dev/sda1 * 1 64 512000 83 Linux/dev/sda2 64 2611 20458496 8e Linux LVM根据提示信息可以判断出此系

2014-01-03 21:50:25 772

原创 第二章 驱动开发_devfs设备文件系统详解

Devfs,也叫设备文件系统(DeviceFilesystem),设计它的唯一目的就是提供一个新的(更理性的)方式管理通常位于 /dev的所有块设备和字符设备。您也许知道,典型的 /dev树包含数百个块特殊文件和字符特殊文件,它们全都在根文件系统上。每个特殊文件都可以让用户空间进程轻松地与内核设备实现交互。举例来说,通过对这些特殊文件执行操作,您的X 服务器就能够访问视频硬件, fsck

2014-01-03 21:50:22 1054

原创 第一章 驱动开发_驱动开发基本知识

1. # 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串.例如, 命令 #define to_string( s ) # s将会使编译器把以下命令 cout 理解为 cout 使用##连结##前后的内容. 例如, 命令#define concatenate( x, y ) x ## y...

2014-01-03 21:50:20 780

原创 你必须知道的495个C语言问题整理三

1.为什么大家都说不要使用gets()?跟fgets() 不同, gets() 不能被告知输入缓冲区的大小,因此不能避免缓冲区的溢出。标准库的fgets() 函数对gets() 作了很大的改进, 尽管它仍然不完善。2. fgetops/fsetops 和ftell/fseek 之间有什么区别? fgetops()和fsetops() 到底有什么用处?ftell() 和fseek() 用长

2014-01-03 21:50:18 943 1

空空如也

空空如也

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

TA关注的人

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