数据寄存器

vxworks下gmac调试的总结

こ雲淡風輕ζ 提交于 2019-12-25 05:28:21
1:3280芯片手册详解过程: MAC 控制器支持 DMA 接收和发送,内部在接收和发送方向各有一个 2048 字节的 FIFO作为缓存。由于 FIFO 深度所限,MAC 控制器不支持硬件自动流控机制。 模式和带宽的切换 1:在做 MII 和 RMII 之间的切换前,应该先掉电 2:上电后软件重新配置芯片系统控制模块中MAC 的工作接口模式寄存器,之后再启动 MAC 控制器 3:需要注意的是,在收发功能开启的状态下不能对双工模式或速率进行改变(先关掉Mac收发,这样可以避免出现大量的错包的情况) 1:所有的发送中断和接收中断触发的条件都是dma操作完成(dma完成数据搬运的操作); 2:较早发送和接收中断说明数据帧较大不是一个buffer发送; 芯片的寄存器空间: MAC 模块支持以太网 PHY 的 MII 接口和 RMII 接口。 CSR(Control & Status 寄存器)共占有 8KB 地址空间,分为两段:DMA CSR 和 MAC CSR。 AHB Master 接口为 DMA 模块与系统主机的接口。 APB 接口即 CSR 接口,用于读写访问 DMA CSR 和 MAC CSR。 DMA 模块有独立的发送和接收引擎,进行系统内存与 MAC 间的数据搬运,将 CPU 的 干预最小化,只在帧发送或接收结束以及其他一些条件(如发生错误)下中断 CPU。 DMA

系统调用

帅比萌擦擦* 提交于 2019-12-25 02:12:54
glibc 对系统调用的封装   在用户态进程里调用open函数 【 int open(const char *pathname, int flags, mode_t mode) 】 在glibc 源代码中有个文件 syscalls.list , 里面咧着所有glibc 的函数对应的系统调用。 另外还有一个脚本 make-syscall.sh ,可根据配置文件,对于每个封装好的系统调用,生成一个文件。 另外还有一个文件 syscall-template.S 使用上面这个宏,定义系统调用的调用方式。 对于任何一个系统调用,会调用 DO_CALL 。 这个宏32位和64位定义不同。 在源代码注释中, int 就是interrupt 。中断的意思。 int $0x80 就是触发一个软中断,通过它就可以陷入(trap) 内核。   在内核启动时,其中会有一个软中断的陷入门,当接收到一个系统调用的时候,相应的文件就会被调用,然后通过 push 和 SAVE_ALL 将当前用户态的寄存器,保存在 pt_regs 结构中。 进入内核前,会保持所有的寄存器,然后调用 do_syscall_32_irqs_on 。在这里,将系统调用号从eax里面取出来,然后根据系统调用号,在系统调用表中找到相应的函数进行调用。并将找出来的参数取出来,作为函数参数。且参数对于的寄存器与linux 的注释是一样的。

AVR汇编初探之一《AVR单片机的CPU内部结构》

别说谁变了你拦得住时间么 提交于 2019-12-24 10:57:39
学单片机那么久了,感觉想要深入,还得看汇编语言,至少得了解单片机内部结构。 下面就以ATmega16为例,介绍一下AVR单片机结构和汇编语言。 AVR单片机的CPU内核结构 如上两图,左图是虚线框内AVR CPU的内核结构,右图是AVR单片机内核结构的方框图,可以看出AVR单片机的数据总线(CPU字长)是8位的,也就说它是8位单片机。 AVR采用了Harvard结构,具有独立的数据和程序总线,CPU在执行一条指令的同时,就将PC中指定的下一条指令取出,构成了一级流水线运行方式,实现了一个时钟周期执行一条指令,数据吞吐量高达1MIPS/MHz。 AVR CPU内核由几个重要的部分组成,它们分别是: A.算数逻辑单元ALU(Arithmetic Logic Unit) AVR ALU与32个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的ALU运算只需要一个时钟周期。ALU操作分为3类:算术、逻辑和位操作,此外还提供了支持无/有符号数和分数乘法的乘法器,操作结果的状态将影响到状态寄存器SREG(Status Register)。 B.程序计数器PC、指令寄存器和指令译码器 程序计数器PC用来存放下一条需要执行指令在程序存储器(ROM)空间的地址(指向FlashROM空间),取出的指令存放在指令寄存器中,然后送入指令译码器中产生各种控制信号,控制CPU的运行(执行指令)。

Uboot启动流程分析(二)

纵然是瞬间 提交于 2019-12-24 06:58:52
1、前言 在前面的文章Uboot启动流程分析(一)中,链接如下: https://www.cnblogs.com/Cqlismy/p/12000889.html 已经简单地分析了low_level_init函数,其调用流程如下: save_boot_params_ret | cpu_init_crit |   | |   lowlevel_init |   | |   s_init | _main 接下来,则继续往下分析_main函数。 2、_main函数 在save_boot_params_ret的最后,会运行bl _main这句代码,Uboot则将会跳转到_main函数中去运行,该函数的定义在arch/arm/lib/crt0.S文件中,_main函数的功能已经在文件中注释得很清楚了,先来看看_main函数实现的功能是什么,注释如下: /* * This file handles the target-independent stages of the U-Boot * start-up where a C runtime environment is needed. Its entry point * is _main and is branched into from the target's start.S file. * * _main execution

计算机组成与结构复习整理(五)

霸气de小男生 提交于 2019-12-24 01:27:53
指令系统与中央处理机组织 指令系统 基本概念 指令格式 一般格式 按指令所包含的地址个数将指令划分 指令长度 寻址方式 指令类型 指令类型 堆栈和堆栈存取方式 中央处理机组织 CPU的三种实现方式 CPU中的主要寄存器 单总线数据通路 CPU四项基本功能 CPU时序控制方式 CPU控制流程 一条完整指令的执行 ①Add (R3),R1 ②无条件转移指令的控制序列 CPU性能设计 指令系统 基本概念 ①程序员用各种语言编写的程序最后要翻译(解释或编译)成以指令形式表示的机器语言以后,才能在计算机上运行。计算机的指令有微指令、机器指令和宏指令之分。 微指令是微程序级的命令,属于硬件;宏指令是由若干机器指令组成的,属于软件;机器指令介于二者之间,因而是硬件和软件的界面。 ②一台计算机能执行的机器指令的集合统称位该机的指令系统。 指令格式 一般格式 操作码 地址码 OP D 按指令所包含的地址个数将指令划分 a.三地址指令:(D1)OP(D2)→ D3 b.二地址指令:(D1)OP(D2)→D2 c.单地址指令:(D)OP (A)→ A(累加寄存器) d.零地址指令:空操作、停机 指令长度 选取原则: ①指令长度应为存储器基本字长的整数倍。 ②指令字长应尽量短。 寻址方式 ①立即寻址:| OP | 操作数地址 | ②直接寻址:| OP | @间接地址 | ③间接寻址:| OP | Rx |

微处理器寄存器结构(通用寄存器、指针和状态寄存器)

我的梦境 提交于 2019-12-22 15:04:07
寄存器可以分为两大类,一类为通用寄存器,一类为指针寄存器和变址寄存器。 通用寄存器 通用寄存器主要包括:EAX、EBX、ECX、EDX EAX Accumulator 累加器,其中EAX(32位)、AH(16位)、AX,AL(8位) 累加器用作乘除法时由特殊用途,但通常情况下视为通用寄存器 EBX Base 基址寄存器,其中EBX(32位)、BH(16位)、BX,BL(8位) 基址寄存器用作存放访问存储单元的偏移地址 ECX Count 计数器,其中ECX(32位)、CH(16位)、CX,CL(8位) CL用于移位和循环移位计数,CX用作重复的串操作指令计数,CX或ECX用作LOOP/LOOPD计数 EDX Data 数据寄存器,其中EDX(32位)、DH(16位)、DX,DL(8位) 数据寄存器是一个用用寄存器,在乘除法运算时也可用于记录部分积和部分被除数 指针寄存器和变址寄存器 指针寄存器和变址寄存器包括:ESP、EBP、ESI、EDI ESP Stack Pointer 堆栈指针寄存器,该指针用于存储堆栈存储器数据 EBP Base Pointer 基址指针寄存器,该指针用于存放堆栈段的数据区的“基地址” ESI Source Index 源变址指针寄存器,用于寻址串操作指令的源数据串 EDI Destination Index 目的变址指针寄存器

sd卡驱动

有些话、适合烂在心里 提交于 2019-12-21 20:48:53
linux设备驱动那点事儿之SD卡驱动理论篇 (2011-08-01 13:56) 标签 : 电子产品 多媒体 存储器 消费类 分类: linux设备驱动程序分析 一.SD/MMC卡介绍 1.1.什么是MMC卡 MMC:MMC就是MultiMediaCard的缩写,即多媒体卡。它是一种非易失性存储器件,体积小巧(24mm*32mm*1.4mm),容量大,耗电量低,传输速度快,广泛应用于消费类电子产品中。 1.2.什么是SD卡 SD:SD卡为Secure Digital Memory Card, 即安全数码卡。它在MMC的基础上发展而来,增加了两个主要特色:SD卡强调数据的安全安全,可以设定所储存的 使用权限,防止数据被他人复制;另外一个特色就是传输速度比2.11版的MMC卡快。在数据传输和物理规范上,SD卡(24mm*32mm*2.1mm,比MMC卡更厚一点),向前兼容了MMC卡.所有支持SD卡的设备也支持MMC卡。SD卡和2.11版的MMC卡完全兼容。 1.3.什么是SDIO SDIO:SDIO是在SD标准上定义了一种外设接口,它和SD卡规范间的一个重要区别是增加了低速标准。在SDIO卡只需要SPI和1位SD传输模式。低速卡的目标应用是以最小的硬件开销支持低速IO能力。 1.4.什么是MCI MCI:MCI是Multimedia Card Interface的简称,即多媒体卡接口

51单片机bit、sbin、sfr、sfr_16有什么区别?

南笙酒味 提交于 2019-12-20 23:12:42
51单片机bit、sbin、sfr、sfr_16区别分析 1.bit和sbit都是C51扩展的变量类型。 bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,意义有点像Windows下VC中的BOOL。 sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。一旦用了sbi xxx = REGE^6这样的定义,这个sbit量就确定地址了。sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。 2.bit位标量 bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。 3.sfr特殊功能寄存器 sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。 sfr P1 = 0x90; //定义P1 I/O 口,其地址90H

CRC校验程序设计

。_饼干妹妹 提交于 2019-12-19 09:18:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 程序的宗旨:通过编写CRC的校验程序,加深对CRC原理的理解,同时学会将书本上的原理运用于实际,动手实践才能学得更快。 注:本文关于CRC原理那部分内容,来自网络搜集。 1. 需求分析 编写一个CRC校验的模拟程序,该程序实现的功能如下: 输入:一串二进制比特串 输出:CRC校验码 2. CRC校验原理分析 在此,我们主要从适合于编程实现的角度分析CRC校验的算法原理,而不只是书本上关于CRC原理的介绍。 Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误。 假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x)中x^k的系数。将g(x)乘以x^m,既将g后加m个0,然后除以m阶多项式h(x),得到的(m-1)阶余项r(x)对应的二进制码r就是CRC编码。 h(x)可以自由选择或者使用国际通行标准,一般按照h(x)的阶数m,将CRC算法称为CRC-m,比如CRC-8、CRC-32、CRC-64等。 g(x)和h(x)的除运算,可以通过g和h做xor(异或

stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)

≯℡__Kan透↙ 提交于 2019-12-19 02:18:20
  STM32的I/O口可以由软件配置成如下8种模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽输出、推挽式复用功能及开漏复用功能。每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CRL和CRH(模式、速度);数据寄存器IDR和ODR;置位/复位寄存器BSRR;复位寄存器BRR;锁存寄存器LCKR。 I/O口模式: GPIO的8种模式 通用输出 推挽输出(Push-Pull) 可以输出高、低电平,连接数字器件 开漏输出(Open-Drain) 开漏引脚不连接外部的上拉电阻时,只能输出低电平;如果需要同时具备输出高电平的功能,则需要接上拉电阻 复用功能输出 复用功能推挽输出 片内外设功能(I2C的SCL,SDA) GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用) 复用功能开漏输出 片内外设功能(TX1,MOSI,MISO,SCK,SS) 输入 模拟输入 应用ADC模拟输入,或者低功耗下省电 浮空输入 可以做KEY识别,外部按键输入 IO的电平状态是不确定,完全由外部输入决定 下拉输入 IO内部下拉电阻输入 不确定信号->低电平 上拉输入 IO内部上拉电阻输入 不确定信号->高电平    1.GPIO口配置步骤 ①使能PORTx(x=A~G)   APB2外设时钟使能寄存器(RCC_APB2ENR) 置1开启。清0关闭。 8-2位使能GPIO G-A