文章分类 -  linux 驱动

vivi bootloader解析
摘要:vivi是韩国mizi公司设计的一款主要针s3c2410平台的bootloader,其特点是体积小,功能强大,运行效率高和使用方便。 vivi代码虽然比较小巧,但麻雀虽小,五脏俱全,用来学习bootloader还是不错的。代码在http://download.csdn.net/detail/yu4700/4388601可以下载到。 vivi源代码结构 包括arch/drivers/include/init/lib/scripts/util等几个目录 |-arch ------------------- 此目录主要包含所有vivi支持的目标板的子目录 | |- s3c2410 ----... 阅读全文
posted @ 2013-02-21 19:51 爱哎唉 阅读(412) 评论(0) 推荐(0)
ARM汇编语言指令总结
摘要:ARM处理器有9种寻址方式:1、寄存器寻址,2、立即寻址,3、寄存器器移位寻址,4、寄存器间接寻址,5、基址寻址,6、多寄存器寻址,7、堆栈寻址,8、块拷贝寻址,9、相对寻址。 ARM指令集:ARM指令基本格式如下: {}{S} ,{,} 其中<>的内容是必须的,{}的内容是可选的。OPCODE指令助记符,COND执行条件,S是否影响CPSR中的值,Rd目标寄存器,Rn第一个操作数的寄存器,OPERAND2第二个操作数。灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式:1)#immed_8r——常数表达式;2)Rm——寄存器方式;3)Rm,shift——寄 阅读全文
posted @ 2013-02-21 19:21 爱哎唉 阅读(945) 评论(0) 推荐(0)
Tiny 6410 按键中断驱动笔记
摘要:1.先查看《Tiny6410SDK-1103底板原理图》,找到按键部分: 从上图可知,当按键按下时,相当于接地,即低电平,从而产生一个由高电平到低电平的跳变。 Tiny6410的底板有8个按键:2.查看《Tiny6410-1170CPU核心板原理图》,找到EINT0的连接图: 从上图可知: EINT0接GPN0 EINT1接GPN1 EINT2接GPN2 ENIT3接GPN3 EINT4接GPN4 EINT5接GPN5 EINT19接GPL11 EINT20接GPL12知识点:由s3c6410外部触发的中断就是外部中断,由s3c6410内部触发的是内部中断,像watchd... 阅读全文
posted @ 2013-02-21 18:41 爱哎唉 阅读(244) 评论(0) 推荐(0)
Tiny6410 LED 裸机驱动笔记
摘要:1.先查看《Tiny6410-1170CPU核心板原理图》,找到LED部分: 从上图可知,当nLED_1为低电平时,LEDx就会亮。2.再在《Tiny6410-1170CPU核心板原理图》中找到nLED_x连接图(应该就在附近): 从上图可知: LED1连接GPK4 LED2连接GPK5 LED3连接GPK6 LED4连接GPK7知识点:GPIO:GPIO,英文全称为General-PurposeIOports,也就是通用IO口。嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多... 阅读全文
posted @ 2013-02-21 18:40 爱哎唉 阅读(266) 评论(0) 推荐(0)
S3C6410处理器介绍
摘要:S3C64xx系列的应用处理器芯片是三星主推的,三星目前推出了S3C6400和S3C6410,都是基于ARM11架构的,而且硬件管脚兼容,应该说大致的功能基本相同,比较明显的区别就是S3C6410带有2D/3D硬件加速。大致看了一下,S3C6410是一个强大的应用处理器,我不是在这里做广告,呵呵,因为我正在使用它,有了它,可以做很多东西。下面,我对S3C6410做个简单介绍,该芯片大小为13x13mm,424管脚,芯片架构如图:ARM Core:采用ARM1176JZF-S的核,包含16KB的指令数据Cache和16KB的指令 数据TCM,ARM Core电压为1.1V的时候,可以运行到553 阅读全文
posted @ 2013-02-21 18:22 爱哎唉 阅读(1173) 评论(0) 推荐(0)
ARM启动代码研究
摘要:1:PRESERVE8:Reguire8和Preserve8C和汇编有8位对齐的要求,这两个伪指令可以满足此要求,存在REQUIRE8<——> PRESERVE8的对应关系,但不是说有一个REQUIRE8就要有一个 PRESERVE8,如果是一个c文件和一个汇编文件的调用,也就涉及一个PRESERVE8或者是一个REQUIRE8.另外,REQUIRE8和PRESERVE8并不完成8 byte 对齐的操作,对齐由ALIGN完成。将ADS的代码移植到KEIL MDK上需要做的修改:当用户拥有ADS遗留工程的所有源代码时,使用MDK重新编译链接全部代码是最好的解决方法,MDK中的新版本编 阅读全文
posted @ 2013-02-21 17:44 爱哎唉 阅读(280) 评论(0) 推荐(0)
怎样从零基础学习嵌入式
摘要:嵌入式Linux工程师的学习需要具备一定的C语言基础,因此面对许多朋友只是在大一或者大二学习过C(还不一定认真学了,呵呵!),之后基本就不再用过的情况,建议零基础学习嵌入式的朋友们在学习之前先复习一下C语言基础这块。要提醒大家的是,复习时不能只关注基本语法,对于常用的数据存储及处理方式,例如:数组、结构体等也要关注,有条件的话一定在机器上亲自敲敲代码、分析理解一下具体案例代码编写的思路,让自己慢慢进入一名嵌入式开发人员的状态。此外,在时间允许的情况下,对于零基础学习嵌入式建议大家看一下有关计算机操作系统工作原理以及计算机组成原理等方面的专业书籍。对于进程、线程、任务调度、总线、I/O等基本概念 阅读全文
posted @ 2013-02-21 17:31 爱哎唉 阅读(3539) 评论(1) 推荐(0)
ARM汇编伪指令介绍
摘要:在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称 为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。在 ARM 的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。符号定义( Symbol Definition )伪指令 符号定义伪指令用于定义 ARM 汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。 常见的符号定义伪指令有如下几种: — 用... 阅读全文
posted @ 2013-02-21 09:32 爱哎唉 阅读(170) 评论(0) 推荐(0)
ARM汇编伪指令
摘要:ARM 汇编程序的由机器指令,伪指令和宏指令组成。伪指令不像机器指令那样在处理器运行期间由机器执行,而是汇编程序对源程序汇编期间由汇编程序处理。在前面的 指令集章节中,我们已经接触了几条常用到的伪指令,如ADR 、ADRL、LDR、NOP 等,把它们和指令集一起介绍是因为它们在汇编时会被合适的机器指令代替,实现真正机器指令操作。宏是一段独立的程序代码,它是通过伪指令定义的,在程序中 使用宏指令即可调用宏。 当程序被汇编时,汇编程序将对每个调用进行展开,用宏定义取代源程序中的宏指令。A.4.1 符号定义伪指令 符号定义伪指令用于定义ARM 汇编程序的变量,对变量进行赋值以及定义寄存器名称,该类伪 阅读全文
posted @ 2013-02-20 22:09 爱哎唉 阅读(306) 评论(0) 推荐(0)
ARM指令集 daq
摘要:ARM指令集 6种类型(53种主要助记符) : 数据处理指令(22种主要助记符) 跳转指令(4种主要助记符) Load/Store指令(16种主要助记符) 程序状态寄存器指令(2种主要助记符) 协处理器指令(5种主要助记符) 软件中断指令 (2种主要助记符) 数据处理指令 数据处理指令大致可分为3类: 数据传送指令; 算术逻辑运算指令; 乘法指令 比较指令。 数据处理指令只能对寄存器的内容进行操作,而不能对内存中的数据进行操作。所有ARM数据处理指令均可选择使用S后缀,并影响状态标志。 数据处理指令1 MOV 数据传送指令 格式:MOV{<cond>}{S} <Rd>, 阅读全文
posted @ 2013-02-20 20:42 爱哎唉 阅读(448) 评论(0) 推荐(0)
ARM指令集66
摘要:ARM指令集可以分为6类,即跳转指令、数据处理指令、程序状态寄存器(PSR)传输指令、Load/Store指令、协处理器指令和异常中版产生指令。下面分别对这6种指令进行介绍。 1.跳转指令 在ARM中有两种方式可以实现程序的跳转:一种是刀‘转指令;另一种是直接向PC寄存器(R15)中写入目标地址值。 通过直接向PC寄存器中写入目标地址值可以实现在46B地址空间中任意跳转,这种跳转指令又称为长跳转。如果在长跳转指令之前使用MOV LR,PC等指令,则可以保存将来返回的地址值,这样就实现了在46B地址空间中的子程序调用。 在ARM版本5及以上的体系中,实现了ARM指令集和Thumb指令集的... 阅读全文
posted @ 2013-02-20 20:38 爱哎唉 阅读(164) 评论(0) 推荐(0)
ARM汇编指令ttt
摘要:ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。一、跳转指令跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令;Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令:1、B 阅读全文
posted @ 2013-02-20 20:36 爱哎唉 阅读(571) 评论(0) 推荐(0)
arm寄存器与arm汇编杂记
摘要:一、arm寄存器arm总共有37个寄存器,31个通用,6个状态寄存器。但不能同时访问,具体的访问情况视cpu工作情况而定!但在任何时候,通用寄存器R14~R0、程序计数器PC(r15)、一个或两个状态寄存器都是可访问的。通用寄存器分类:未分组:R0~R7分组:R8~R14程序计数器PC(R15)二、arm工作状态1、usr态ARM处于用户态模式时,可见的通用寄存器是16个,即R0-R15。外加一个CPSR(Current Program Status Register,当前程序状态寄存器),总共是17个。其中3个有特殊用途:R15――程序计数器PC,R14――程序链接寄存器LR,R13――堆栈 阅读全文
posted @ 2013-02-20 16:01 爱哎唉 阅读(254) 评论(0) 推荐(0)
ARM汇编指令ARM寻址方式、汇编指令、伪指令
摘要:1、寻址方式所谓寻址方式就是:处理器根据指令中给出的地址信息来寻找物理地址的方法。1)立即寻址立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就是在指令中给出的。只要取出指令也就是取得了操作数,这个操作数被称为立即数,对应的寻址方式也就叫做立即数寻址。例如:△:ADD R0,R0,#1;R0<-R0+1△:ADD R0,R0,#0X3F;R0<-R0+0X3F2)寄存器寻址寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常使用的一种方式,也是一种执行效率较高的寻址方式。例程:ADD R0,R1,R2;R0<-R1+R23)寄存器间接寻址寄存器 阅读全文
posted @ 2013-02-20 15:46 爱哎唉 阅读(928) 评论(0) 推荐(0)
ARM汇编指令
摘要:1、ARM工作模式从编程的角度来看,ARM微处理器的工作状态一般有两种,并可在两种工作状态之间进行切换:△:第一种为ARM状态,此时处理器执行32位的的字对齐的ARM指令。△:第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。1)存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字 阅读全文
posted @ 2013-02-20 15:44 爱哎唉 阅读(328) 评论(0) 推荐(0)
ARM工作模式
摘要:一、存储器格式(字对齐):Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。存储器格式 1、大端格式:高字节在低地址,低字节在高地址; 2、小端格式:高字节在高地址,低字节在低地址;指令长度:Arm微处理器的指令长度是32位的,也可以为16位(thumb状态下)。Arm微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。注:所谓的指令长度是一条完整的指令 阅读全文
posted @ 2013-02-20 15:33 爱哎唉 阅读(145) 评论(0) 推荐(0)
ARM寄存器介绍
摘要:在移植操作系统的时候,尤其是在移植Boot Loader的时候必须了解ARM处理器的寄存器。在Boot Loader里有一段很重要的处理器初始化程序是用ARM汇编写的,有几个关键参数需要传递,关于这些参数在后面介绍Boot Loader时会有详细的描述。ARM处理器含有37个寄存器,这些寄存器包括以下两类寄存器。(1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。(2)6个状态寄存器:状态寄存器也是32位的寄存器,但是只使用了其中的12位。1.通用寄存器在ARM处理器的7种模式下都有一组对应的寄存器组。在任意时刻,可见的寄存器组包括15个通用寄存器R0~R14、一个或两个 阅读全文
posted @ 2013-02-20 15:17 爱哎唉 阅读(1193) 评论(0) 推荐(0)
ARM寄存器
摘要:ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决 微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。一、ARM工作状态下的寄存器组织通用寄存器:通用寄存器包括R0~R15,可以分为三类: ─ 未分组寄存器R0~R7 ─ 分组寄存器R8~R14 ─ 程序计数器PC(R15)未分组寄存器R0~R7: 在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进... 阅读全文
posted @ 2013-02-20 15:16 爱哎唉 阅读(649) 评论(0) 推荐(0)
ARM指令集
摘要:ARM 指令列表ADC带进位的32位数加法ADD32位数相加AND32位数的逻辑与B在32M空间内的相对跳转指令BIC32位数的逻辑位清零BKPT断点指令BL带链接的相对跳转指令BLX带链接的切换跳转BX切换跳转CDP CDP2协处理器数据处理操作CLZ零计数CMN比较两个数的相反数CMP32位数比较EOR32位逻辑异或LDC LDC2从协处理器取一个或多个32位值LDM从内存送多个32位字到ARM寄存器LDR从虚拟地址取一个单个的32位值MCR MCR2 MCRR从寄存器送数据到协处理器MLA32位乘累加MOV传送一个32位数到寄存器MRC MRC2 MRRC从协处理器传送数据到寄存器MRS 阅读全文
posted @ 2013-02-20 15:14 爱哎唉 阅读(356) 评论(0) 推荐(0)
opencv 入门
摘要:内容简介OpenCV概述资料链接OpenCV 命名约定编译命令C程序实例GUI 命令窗口管理输入设备 OpenCV 基础数据结构图像数据结构矩阵与向量其他数据结构图像处理创建与释放图像结构空间读入与存储图像读取图像元素图像转换绘图命令矩阵操作创建与释放矩阵结构空间读取矩阵元素矩阵/向量操作视频序列处理从视频序列中抓取一帧获取/设定帧信息存储视频文件简介OpenCV概述什么是OpenCV开源C/C++计算机视觉库.面向实时应用进行优化.跨操作系统/硬件/窗口管理器.通用图像/视频载入、存储和获取.由中、高层API构成.为Intel®公司的 Integrated Performance 阅读全文
posted @ 2013-02-20 14:37 爱哎唉 阅读(248) 评论(0) 推荐(0)