自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 【转,总结的很好】SPI、IIC、UART区别

第一个区别当然是名字:      SPI(Serial Peripheral Interface:串行外设接口);      I2C(INTER IC BUS)      UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上:      SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时

2011-03-21 20:46:00 2002

原创 [转,非常不错]关于ARM的一些概念

关于ARM的一些概念 1.ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中断控制器; SPI:全双工串行接口; CAN:控制器局域网,一种串行通讯协议; PWM:脉宽调制器; ETM:嵌入式跟踪宏; CPSR:当前程序状态寄存器; SPSR:程序保护状态寄存器;

2011-03-21 20:41:00 570

原创 【原创】shell编程入门

根据国嵌一个小时的视频课程制作,虽然是入门,但是感觉很有用处的,没事的时候拿来看看,效率很高,很快就能了解shell。 Shell脚本的概念: 例子如下: echo是打印。echo后面的语句要加双引号 运行shell脚本: sh *.sh 或者直接:./*.sh 上图运行脚本,mkdir命令错误,因为tnt目录已经存在。 删除目录的命令 第一句一定要指定命令解析器: 看到/bin/sh目录下有个/bin/sh, 从颜色来看要知道这是个连接文件。

2011-03-18 22:09:00 543

原创 H264

    解码输出x’(n)    运动估计:牺牲计算量   补偿就是减。但是补偿和运动补偿是不一样的,补偿是单纯的当前帧减前一帧,运动补偿,是减运动估计后的一个预测帧

2011-03-18 20:01:00 485

原创 【原创】国嵌5-4-3 驱动

看这样几个问题? 1)怎么体现出来实在mybus这条总线上 2)驱动找到一个该处理的设备时,驱动做什么 3)驱动和设备怎么匹配的 1)怎么体现出来实在mybus这条总线上 这个结构体里的成员bus说明了这个驱动是位于哪个总线上的 2)驱动找到一个该处理的设备时,驱动做什么 调用myprobe 3)驱动和设备怎么匹配的 这个是由总线来决定的 看总线bus.c里的函数 设备的名字和驱动的名字进行比较 来看设备的名字 再来看驱动的名字 都是my_dev

2011-03-17 22:09:00 601

原创 【原创】国嵌5-4-3 驱动

看这样几个问题? 1)怎么体现出来实在mybus这条总线上 2)驱动找到一个该处理的设备时,驱动做什么 3)驱动和设备怎么匹配的 1)怎么体现出来实在mybus这条总线上 这个结构体里的成员bus说明了这个驱动是位于哪个总线上的 2)驱动找到一个该处理的设备时,驱动做什么 调用myprobe 3)驱动和设备怎么匹配的 这个是由总线来决定的 看总线bus.c里的函数 设备的名字和驱动的名字进行比较 来看设备的名字 再来看驱动的名字 都是my_dev

2011-03-17 22:01:00 729

原创 [原创]mini2440如何ping到pc

我的开发环境是windows、虚拟机里是Fedora、mini2440. 开始配置ip总是ping不通。 正确的配置: 开发板要和windows的ip要有相同的网关、DNS。ip要和windows的在同一个网段。 连接好网线,就能ping了。

2011-03-17 13:10:00 2199 1

原创 [原创]内核代码导读--应用程序如何访问驱动程序

如:在应用程序中调用read函数,系统调用会自动找到内核的vfs_read()函数(这是系统调用部分,不用管)。 那么就从vfs_read()这个函数看起。 (vfs_read()是个库函数,把函数从用户空间跳到内核空间) file结构体里有个成员是struct file_operations类型的。 这一行将调用驱动程序中的read函数。   上图中的file是struct file指针,看到下图,file结构体里有个file_operations类型的指针,而这个file_ope

2011-03-15 17:03:00 874

原创 【原创】内核符号导出

举例讲解: 例子中有两个内核模块: 第一个模块:hello.c 另一个内核模块 模块1用到了模块2里的函数。 编译。 编译后如果想加载模块成功必须满足以下: 1)先加载模块2,因为模块1要用到模块2的函数。 2)先加载模块2,模块1还是用不了模块2里的函数,必须将模块2的函数导出。导出就是让大家都看的见。     如何导出 在模块2里加上以下:

2011-03-14 21:55:00 581

原创 [转]虚拟机中的linux图形界面如何切换到字符界面

在虚拟机的配置中把Ctrl+Alt快捷键改成其他的。否则虚拟机截获Ctrl+Alt,Linux 根本拿不到。

2011-03-13 20:56:00 3738

原创 [转]Linux驱动程序开发》学习笔记--如何写linux最简单的hello驱动及问题*** missing separator. stop

最简单的hello,world程序,在内核上挂载和卸载我们自己编写的hello模块。说明:本文调试环境fc4,教材是《Linux Device Drivers》第3版英文电子图书。 一、编写hello.c文件 利用vi编辑器,我们键入下面的代码,并保存为hello.c文件。 /** * hello.c *     ------Test for kernel module */ #i nclude           #i nclude         MODUL

2011-03-13 20:29:00 2580

原创 【转】 请教GNU make的扩展语法!

小弟在分析>这本书上第2章的例子的时候,发现有很多关于makefile的语法搞不明白.还请高手指点一下,谢谢! 写的有点乱,请原谅! [例1] makefile: obj-m :=module.o 命令: make -C /usr/src/kernels/2.6.11-1.1369_FC4-i686 M='pwd' modules 问题: 1."obj-m"是在顶层makefile中定义的变量吗? 我记得makefile中变量应该是用"="赋值的,在这里用到的"

2011-03-13 20:15:00 1589

原创 [原创]在开发板上执行程序时提示 /bin/sh: Permission denied

网上找的: 解决了,是因为开发板与系统的交叉编译器版本不一致所导致,而且命令应该是 ./cock.   我的解决办法: chmod 777 hello

2011-03-13 19:06:00 6875

原创 Fedora 9 安装交叉编译工具arm-linux-gcc-4.3.2【转】

Fedora 9 安装交叉编译工具arm-linux-gcc-4.3.2 环境:Fedora 9 STEP 1: 下载arm-linux-gcc-4.3.2.tgz. 把arm-linux-gcc-4.3.2.tgz随便放在一个目录,我放在了/opt。 下载网站1:http://www.arm123.com.cn/linux/arm-linux-gcc-4.3.2.tgz           下载网站2:http://www.arm9.net/download-arm-linux-gcc

2011-03-13 14:00:00 2961 1

原创 /是根目录,./是当前目录

None

2011-03-11 14:23:00 1639

原创 makefile总结

还是看不懂实际的makefile文件,还有那些make命令也不知道这么用的含义是什么。 今天复习下国嵌的视频。之后再学习下内核配置、编译和安装。 今天主要完成这两个学习任务。   2.6的内核大概2w多个源文件(包括头文件),这么多文件如果手工用gcc一个个去编译,不现实。     先来看一个例子:   最终要得到hello 问题1:hello,main.o等,最前面的这些必须这样命名吗,我写成 1、2、3行吗? 写成1、2、3不行,目标的名字只是个名称,生

2011-03-10 17:09:00 866

原创 [转,不错]sizeof()用法汇总&&和strlen的区别

sizeof()用法汇总 sizeof()功能:计算数据空间的字节数 1.与strlen()比较       strlen()计算字符数组的字符数,以"/0"为结束判断,不计算为'/0'的数组元素。       而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。 总之,对于指针,sizeof操作符返回这个指针占的空间,一般是4个字节;而对于一个数组,sizeof返回这个数组所有元素占的总空间。char*与char[]容易混淆,一定要分清,而且c

2011-03-10 11:32:00 695

原创 arm开发板系统安装过程&&国嵌视频里是把supervivi下载到了nor flash里

步骤: 1、用jtag下载suervivi到nor flash里。supervivi只有247KB 2、安装usb下载驱动,打开dnw软件,连接usb下载线。 1)分区:       上面第一步下载的supervivi是下载到nor flash里,这里是格式化nand flash,选下面的X                    2)下载bootloader       选择v       选择v后,发现终端处于等待状态,wating a downlo

2011-03-09 18:06:00 3188

原创 grub属于bootloader

引导加载程序分为两个层次 1、固化在固件(firmware)中的boot程序,如BIOS 2、bootloader

2011-03-08 23:30:00 2154

原创 【转】Linux 里有/lib和/usr/lib,这两个目录下的库文件有什么区别吗?如果没区别为什么又要分开放呢

有区别的。/lib里面给的是root和内核所需so或者a之类的库文件,而/usr/lib是普通用户能够使用的。Linux的程序有两种模式,这个你应该知道,是用户模式和内核模式,和这个也是有关系的,不再冗述。 ================/lib和/usr/lib和/usr/local/lib的区别(zz)文章分类:操作系统简单说,/lib是内核级的,/usr/lib是系统级的,/usr/local/lib是用户级的./lib/ — 包含许多被 /bin

2011-03-08 23:24:00 19111

原创 内核驱动进阶班-2-1(嵌入式linux系统架构)

一个智能手机的软硬件架构   EVM板:评估板   看到:在开发流程的最后也可以开发驱动。和业务相关的驱动,例如产品中要加入wifi,那就做wifi的驱动。 有疑问了,为什么驱动开发不放到流程3,内核移植的时候做呢? 是因为我们需要有一个最小系统,到流程3是做出来一个最小系统。就是说启动后不需要网卡、wifi的驱动,一样可以运行。

2011-03-08 20:50:00 1255

原创 doble型数据在内存中的表示

立刻动手写一小段测试代码就知道了:int main(int argc, char ** argv){ int i; double x = 123456789.123456789; unsigned char* ptr = (unsigned char*)&x; for(i=0; i

2011-03-07 22:23:00 1233

原创 【转】大端格式和小端格式

首先:我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。   有时候,用C语言写程序时需要知道是大端模式还是小端模式。 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个

2011-03-07 21:53:00 1156

原创 【转】printf("%f/n",5)的输出结果为什么是0.000000

1,之所以没输出5,这是C语言设计的原因。2,之所以输出0,这是计算机体系结构的问题。具体来说:printf函数不会进行任何类型转换,它只是从内存中读出你所提供的元素的值(按照%d,%f等控制字符提示的格式)。C语言设计中,int类型一般是32bit或者16bit,而float一般是64bit,并且有可能使用科学计数保存。这点就和huhugo88所说一样,5在内存中为00000000,00000101。而且5一般都在静态区,程序的静态存储区默认是0,那么当用%f来读时,就

2011-03-07 21:31:00 9707 6

原创 arm裸机程序--LED程序设计

arm的逻辑程序需要一个汇编文件,这个在另一篇博文里写了。汇编文件用于初始化寄存器,跳转到main。这里主要看LED程序的c文件。 =================== delay的解释: 单位:   ============================================== 控制寄存器的设置: 3是11b,GBPCON是两位控制一个I/O,控制第5个端口的是10、11位,所以11在0、1位,需要左移10位。 注意,改变GBPCON的需要改变的位,

2011-03-05 22:11:00 1328

原创 【原创】arm是如何运行裸机程序的?

肯定是上电后自动运行某个地址的指令,这个了解。   这里说的是:我们常用c写裸机程序,这个c程序放在哪了,arm如何找到这个c的。   其实下载到板子里的c程序每次还要下载一个汇编文件,这个汇编文件有什么作用呢? 是作为启动代码,是arm上电后第一部分要执行的代码,设置c语言运行的环境,设置寄存器,设置好后,就会跳转到main函数。 可以看到下图汇编程序(标记处跳到main的代码) important(用于同志编译器要使用的标号在其它的源文件中定义) 下面这句跳转到main函数

2011-03-05 15:21:00 2732

转载 野指针(居然有三种类型,貌似第二和三有些类似)

<br />野指针<br />定义“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。成因野指针的成因主要有三种:  一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。  二、指针p被free或者delete之后,没有置为NULL,让人误以为p是

2011-03-05 10:05:00 1015

原创 书-收藏

<br />汇编语言 王爽

2011-03-03 16:16:00 557

原创 [原创]猜想驱动编程的过程

<br />1、驱动编程有汇编的多吗?<br />2、驱动编程linxu等操作系统给提供了哪些可以用的函数呢?<br /> <br /> <br />在实际的编程中,使用较多的方式是:程序的初始化部分用汇编语言完成,然后用c/c++完成主要的编程任务。<br />所以我猜测驱动编程用的应该不是汇编。主要还是c。<br /> <br />我觉得驱动编程就是要实现read(),open()这些API函数,我觉得操作系统起码能有c语言用来读、写寄存器。cpu就是靠地址来访问外围设备的各种寄存器来去外围设备通信的,

2011-03-01 22:11:00 495

国嵌视频讲义

国嵌视频讲义,上半部.下半部,有机会再传。国嵌的视频还是很好的,通俗易懂。

2011-12-09

空空如也

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

TA关注的人

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