Skip to main content

moregeek program

嵌入式:万字详解通信接口设计-多极客编程

常用的通信接口UART接口UART的工作原理UART(Universal Asynchronous Receiver and Transmitter,通用异步收发器)是广泛使用的串行数据传输方式。RS232C是通用的串行数据传输接口 标准,其DB9引脚定义如下:RS-232C接口的基本连接方式UART的功能和组成UART的主要功能是将数据以字符为单位,按照先低位后高位的顺序进行逐位传输。根据发送方

Read More

嵌入式:人机交互接口设计详解-多极客编程

键盘和LED的接口原理HA7279A是一片具有串行接口并可同时驱动8位共阴式数码管或64只独立LED的智能显示驱动芯片。该芯片同时可连接多达64键的键盘矩阵,一片即可完成LED显示及键盘接口的全部功能。HA7279A一共有28个引脚:RESET:复位端。通常,该端接+5V电源;DIG0~DIG7:8个LED管的位驱动输出端;SA~SG:LED数码管的A段~G段的输出端;DP:小数点的驱动输出端;R

Read More

嵌入式:arm定时器-多极客编程

S3C2410A的PWM定时器定时器概述S3C2410有5个16位定时器,其中定时器0、1、2、3、有PWM功能,定时器4只是一个内部定时器而无输出引脚。定时器0和定时器1具有死区发生器(dead-zone generator)。PWM定时器有:5个16位定时器2个8位预分频器,2个4位除法器。波形可编程(PWM)自动重装或短脉冲模式(One-shot Pulse Mode)死区发生器定时器工作原

Read More

嵌入式:ad接口设计-多极客编程

S3C2410A的A/D转换器S3C2410A的A/D转换器包含一个8通道的模拟输入转换器,可以将模拟输入信号(带有采样保持器)转换成10位数字编码。在AD转换时钟为2.5MHz时,其最大转换率为500KSPS,输入电压范围是0~3.3V。 A/D转换器的AIN5、AIN7还可以与控制脚nYPON(正的Y轴开关控制)、YMON (负的Y轴开关控制) 、nXPON (正的X轴开关控制)和XMON (

Read More

嵌入式:i/o接口扩展-多极客编程

嵌入式:I/O接口扩展S3C2410A共有117个多功能复用输入输出口(I/O口),分为8组PORT A~PORT H。PORT A除了作为功能口外,它只作为输出口使用;其余的PORT B~PORT H都可以作为输入输出口使用。8组I/O口按照其位数的不同,可分为:1个23位的输出口(PORT A)2个11位的I/O口(PORT B 和PORT H)4个16位的I/O口(PORT C、PORT D

Read More

嵌入式:arm的dma设计-多极客编程

一、DMA工作原理所谓DMA方式,即直接存储器存取(Direct Memory Acess),在DMA控制器的控制下,不通过CPU控制,高速地和I/O设备和存储器之间交换数据。S3C2410具有一个4通道DMA控制器。该DMA控制器位于系统总线(AHB)和外设总线(APB)之间。每个DMA通道均能在系统总线和(或)外设总线之间执行一次数据搬移。这样可以有四种DMA数据搬移:(1)源设备和目标都在

Read More

嵌入式:arm中断系统设计全解-多极客编程

一、ARM9的异常事件管理ARM920T能处理有8个异常,他们分别是:Reset,Undefined instruction,Software Interrupt,Abort (prefetch),Abort (data),Reserved,IRQ,FIQ ,它们的矢量表是:Address Instruct 0x00000000: b

Read More

嵌入式:s3c2410与s3c2440的区别-多极客编程

S3C2410A微处理器概述SAMSUNG公司的S3C2410A芯片是一款16/32位的RISC微处理器芯片,芯片内使用了ARM公司的ARM920T内核,采用了称为AMBA(Advanced Microcontroller Bus Architecture,先进微处理器总线结构)的总线结构。S3C2410A芯片组成介绍如下:ARM920T,内部包含两个协处理器、单独16KB指令Cache和MMU、

Read More

嵌入式:什么是atpcs-多极客编程

ATPCS介绍ATPCS(ARM-Thumb Produce Call Standard)是ARM程序和Thumb程序中子程序调用的基本规则,目的是为了使单独编译的C语言程序和汇编程序之间能够相互调用。这些基本规则包括子程序调用过程中寄存器的使用规则、数据栈的使用规则和参数的传递规则。寄存器的使用规则子程序间通过寄存器R0~R3来传递参数,这时,寄存器R0~R3可以记作A1~A4。被调用的子程序在

Read More

嵌入式:arm内嵌汇编及c和arm汇编相互调用-多极客编程

内嵌汇编在C程序中嵌入汇编程序可以实现一些高级语言没有的功能,并可以提高执行效率。armcc和armcpp内嵌汇编器支持完整的ARM指令集;tcc和tcpp用于Thumb指集。但是内嵌汇编器并不支持诸如直接修改PC实现跳转的底层功能。内嵌的汇编指令包括大部分的ARM指令和Thumb指令,但是不能直接引用C的变量定义,数据交换必须通过ATPCS进行。嵌入式汇编在形式上表现为独立定义的函数体。内嵌汇编

Read More

嵌入式:arm汇编语言程序设计基础教程-多极客编程

汇编语言程序设计的步骤① 合理地分配存储器资源,将前述的目标系统‘数据结构模型’表示到各存储器单元。② CPU寄存器数量有限,在程序中,大多数操作都要使用寄存器;并且有的操作使用特定的寄存器(如堆栈操作使用SP/R13等),程序中要合理分配各寄存器的用途。用计算机语言,对数据结构模型和流程图表示的算法进行准确地描述。① 语法调试:排除程序中的语法错误。② 功能调试:保证程序的逻辑功能正确性。用文档

Read More

嵌入式:arm协处理器指令总结-多极客编程

ARM支持16个协处理器,用于各种协处理器操作,最常使用的协处理器是用于控制片上功能的系统协处理器,例如控制ARM720上的高速缓存和存储器管理单元等,也开发了浮点ARM协处理器,还可以开发专用的协处理器。当一个协处理器硬件不能执行属于它的协处理器指令时,将产生未定义指令异常中断。利用该异常中断处理程序可以软件模拟该硬件操作。ARM协处理器指令根据其用途主要分为以下三类:用于ARM处理器初始化协处

Read More

嵌入式:交换指令之swp,mrs,msr-多极客编程

存储器与寄存器交换指令(SWP)交换指令把字或无符号字节的读取和存储组合在了一条指令中。这种组合指令通常用于不能被外部其他存储器访问(如:DMA访问)打断的存储器操作。一般用于处理器之间或处理器与DMA控制器之间共享信息的互斥访问。二进制编码格式汇编格式SWP{<cond>} {B} Rd,Rm,[Rn]本指令将存储器中地址为Rn处的字(B=0)或无符号字节(B=1)读入寄存器Rd,同

Read More

嵌入式:arm多寄存器存取指令详解-多极客编程

多寄存器传送指令可以用一条指令将16个可见寄存器(R0~R15)的任意子集合(或全部)存储到存储器或从存储器中读取数据到该寄存器集合中。如:可将寄存器列表保存到堆栈,也可将寄存器列表从堆栈中恢复。 这种指令有两个特殊用法: (1)允许操作系统加载或存储用户模式寄存器来保护或恢复用户处理状态。 (2)作为异常处理返回的一部分,完成从SPSR中恢复CPSR。 ​这种指令与单寄存器存取指令相比,多

Read More

嵌入式:load/store之单寄存器的存取指令 -多极客编程

ARM处理器是Load/Store型的,即它对数据的操作是通过将数据从存储器加载到片内寄存器中进行处理,处理完成后的结果经过寄存器存回到存储器中,以加快对片外存储器进行数据处理的速度。ARM的数据存取指令Load/Store是唯一用于寄存器和存储器之间进行数据传送的指令。在ARM系统中I/O操作是通过存储器映射进行寻址的,对I/O设备的操作可以和对存储器的操作一样,因此,也是使用Load/Stor

Read More

ebpf verifier常见错误浅析-多极客编程

本文摘自毛文安公众号《酷玩BPF》文章,作者毛文安。​​收藏:eBPF verifier常见错误整理​​如今eBPF程序的编写,很多都是基于bcc或者bpftrace进行,也有开发者直接基于libbpf库进行,我们目前使用最多的是基于Coolbpf编写。但是不管怎样,编写的xx.bpf.c程序,在加载到内核时,都必须经过内核的verifier校验器进行各种边界和内存检查,经常会碰到各种奇奇怪怪的

Read More

嵌入式:数据处理指令详解-多极客编程

ARM的数据处理指令主要完成寄存器中数据的算术和逻辑运算操作:数据处理指令分类数据处理指令二进制编码数据处理指令表数据处理指令根据指令实现处理功能可分为以下六类:数据传送指令;算术运算指令;逻辑运算指令;比较指令;测试指令;乘法指令。数据处理指令的特点所有操作数都是32位宽,或来自寄存器或来自指令中的立即数(符号或0扩展)如果数据操作有结果,则结果为32位宽,放在一个寄存器中(有一个例外是长乘指令

Read More

嵌入式:堆栈寻址、相对寻址与arm指令总结-多极客编程

堆栈寻址堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针(SP)的专用寄存器(R13)指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。根据堆栈的生成方式,又可以分为递增堆栈(Ascendi

Read More

嵌入式:arm指令集分类及编码-多极客编程

ARM指令集是32位的,程序的启动都是从ARM指令集开始。主要是以下三个方面:指令分类及指令格式条件执行指令集编码指令分类及指令格式ARM指令使用的基本格式如下: 〈opcode〉{〈cond〉} {S} 〈Rd〉,〈Rn〉{,〈operand2〉} < > 是必须项 , {}是可选项指令格式中符号说明:opcode操作码;指令助记符,如ADD、STR等。cond 可选的条件码;执行条

Read More

crc16码-多极客编程

1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;2.把第一个8位二进制数据 (既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;3.把CRC寄存器的内容右移一 位(朝低位)用0填补最高位,并检查右移后的移出位;4.如果移出位为0:重复第3步(再次右移一位);如果移出位为1:CRC寄存器与多项式A001(1010 0000 0

Read More