ARM裸机
文章平均质量分 73
。。。。
哈哈⊙ω⊙
像我这样平凡的人
展开
-
x210---电容式触摸屏学习笔记
2.1、电阻式触摸屏和电容式触摸屏的特点对比(1)耐久性 电容式触摸屏不容易坏,电阻式触摸屏易坏(2)抗干扰性 电容式触摸屏差一些,电阻式触摸屏要好一些电容式触摸屏依赖电容效应,当手机屏幕上有灰尘、水等杂物时,会影响电容式触摸屏的触摸响应电阻式触摸屏依赖外部的压力(3)精准度 电容式触摸屏差一些,电阻式触摸屏好一些电阻式触摸屏根据测量触摸点的电压,然后进行AD转换而电容式触摸屏是根据电容感应扩散的电流进行分析,电容IC本身算法计算存在缺陷。原创 2023-04-01 22:03:14 · 499 阅读 · 0 评论 -
x210---电阻式触摸屏学习笔记
(1)IO输入输出,是计算机系统中的一个概念。计算机的主要功能就是从外部获取数据然后进行计算加工得到输出数据并输出给外部(计算机可以看成数据处理器)。计算机和外部交互就是通过IO。每一台计算机都有个标准输入和标准输出,标准输出就是默认输出类设备,我的计算机可能有好多个途径可以输出信息,但有一条途径是我默认的,如果我没指定,就是从标准输出设备输出。1.2、常见输入类设备(1)键盘、鼠标、触摸屏、游戏摇杆、物联网传感器、(摄像头并不是一个典型的输入类设备)1.3、触摸屏的特点。原创 2023-04-01 22:01:49 · 347 阅读 · 0 评论 -
x210---LCD控制器学习笔记
1.1、什么是LCD?(1)LCD(Liquid Crystal Display)俗称液晶显示器.(2)液晶是一种高分子材料,可以在电信号的驱动下液晶分子进行旋转,旋转时会影响透光性,因此我们可以在整个液晶 面板后面用白光照(称为背光),可以通过不同电信号让液晶分子进行选择性的透光,此时在液晶面板前面看到的就是各种各样不同的颜色,这就是LCD显示。(3)被动发光和主动发光。原创 2023-04-01 21:51:45 · 446 阅读 · 0 评论 -
x210---ADC控制器学习笔记
譬如2个AD,A的量程是0~50V,B的量程是0~0.5V,A是12位的,B是10位的,可能B的精度比A的还要高。(1)模拟的就是连续的,现实生活当中的时间、电压、高度等都是模拟的(连续分布的,划分的话可以无限的更小划分)。(1)AD转换输出的数字值是有一定的位数的(譬如说10位,意思就是输出的数字值是用10个二进制位来表示的,这种就叫10位AD)。(2)CPU本身是数字的,而外部世界变量(如电压、温度、高度、压力···)都是模拟的,所以需要用CPU来处理这些外部的模拟变量的时候就需要做AD转换。原创 2023-04-01 21:38:22 · 257 阅读 · 0 评论 -
x210---I2C控制器学习笔记
1、物理接口:SCL + SDA(1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道。(2)SDA(serial data): 数据线,通信数据都通过SDA线传输2、通信特征:串行、同步、非差分、低速率(1)I2C属于串行通信,所有的数据以位为单位在SDA线上串行传输。(2)同步通信就是通信双方工作在同一个时钟下,一般是通信的A方通过一根CLK信号线传输A自己的时钟给B,B工作在A传输的时钟下。所以同步通信的显著特征就是:通信线中有CLK。原创 2023-04-01 21:33:00 · 134 阅读 · 0 评论 -
x210---iNand/eMMC/SDcard学习笔记
SD卡工作的时候就是一个一个的命令周期组合起来的,在一个命令周期中,主机先发送CMD给SD卡,然后SD卡解析这个命令并且执行这个命令,然后SD卡根据结果回发给主机SoC一个响应。(2)因为此时刚开始和SD卡通信,主机不清楚SD卡属于哪个版本(高版本和低版本的SD卡的读写速率不同,高版本的可以工作在低版本的速率下,低版本的SD卡不能工作在高版本速率下),所以先给SD卡发400KHz的低速率时钟,SD卡拿到这个时钟后就能工作了。(1)注意这里说的是SD卡内部的寄存器,而不是主机SoC的SD控制器的寄存器。原创 2023-04-01 21:27:09 · 535 阅读 · 0 评论 -
x210---Nandflash学习笔记
1、Nandflash接口从原理图可以看出Nand的型号和命名(K9F2G08为例子)K9F为三星公司一个系列2G表示Nand的大小是2Gbit(256MB)数据线有八根注意:Nand的数据线上传递的不止是要存取的数据,也有命令、地址2、Nand的结构这个Nand共128k页,1页=(2K + 64)Byte其中2K代表带内数据,用于存取有效信息 64代表带外数据,用于ECC校验,坏块标记等,因此,真实计算Nandflash容量时是不包含带外数据的,因为它不存放有效信息。1块=原创 2023-04-01 21:17:54 · 727 阅读 · 0 评论 -
x210启动方式
(3)IROM内的BL0做一系列初始化—>BL0代码根据OMPin判断启动模式,然后初始化相应的外部存储器—>然后从SD卡的block1开始读取16KB(8KB)到SRAM中执行BL1—>BL1初始化DDR,并且从第49扇区开始复制整个uboot(BL1+BL2)搬到DDR中指定位置(0x23E00000)去备用—>然后BL1继续执行直到ldr pc, =main时BL1跳转到DDR上的BL2中接着执行uboot的第二阶段—>uboot启动后在uboot命令行中去启动OS。原创 2023-03-17 20:06:34 · 69 阅读 · 0 评论 -
x210裸机程序中bss段是否会自动清空
BSS段清零的原因是因为这个段是BSS要说为什么要有BSS的话,历史就比较久远了。BSS段我所知道的起源是Unix最初的时候(当然,不排除可能有更早的情况)。变量分两种:局部变量、全局变量。根据C语法的规定,局部变量不设置初始值的时候,其初始值是不确定的,局部变量(不含静态局部变量)的存储位置位于栈上,具体位置不固定。全局变量(和静态局部变量)有专门数据段存储,初始值是0,具体位置是固定的。其实说到底,就两种,一种是位置固定(数据段里),一种是位置不固定的(栈上)。原创 2023-03-17 20:03:01 · 93 阅读 · 0 评论 -
S5PV210的时钟系统
时钟是同步工作系统的工作节拍例如:为什么需要时钟?SoC的时钟获得方式:为什么外部不直接用高频晶振产生高频信号直接给CPU?为什么要内部先高频然后再分频?210根据 “各设备所需时钟频率的高低和设备的类别” 将整个时钟体系分成三个时钟域,即主系统(MSYS)、显示系统(DSYS)和外围系统(PSYS),如图3-1所示。210时钟来源:晶振+时钟发生器+PLL+分频电路在典型的210应用程序中,210时钟域详解MSYS域:DSYS域:PSYS域:总结:高性能的时钟值:目的:(将对应时钟设置成如下数值)cl原创 2022-06-15 02:47:47 · 898 阅读 · 0 评论 -
重定位与链接脚本
位置无关码(pic):由汇编源文件(start.S)编译生成的可执行程序(.elf或.bin文件),这个程序放在“内存任何地方”都能运行成功。位置有关码(pdc):由汇编源文件(start.S)编译生成的可执行程序(.elf或.bin文件),这个程序只能放在“指定的内存上”才能运行成功。由此可以看出位置无关代码适应性更强,放在哪里都能运行,但位置无关码存在一些限制,不能完成所有功能,有时候不得不使用位置有关代码。设计程序时,我们会给程序指定一个链接地址(我们认为程序将来在此运行,假如指定的是0x0这个地址原创 2022-06-05 19:40:22 · 320 阅读 · 0 评论 -
S5PV210开发板用汇编设置栈和调用C语言
使用C语言前为什么要先用汇编设置栈?C语言程序运行时需要栈,因为C语言中的局部变量都是用栈来实现的,如果没有设置栈就使用C语言,局部变量就会落空,程序就会死掉,所以在使用C语言前,我们需要先在汇编编写的启动代码中设置栈。为什么使用51单片机和Ubuntu编写应用程序时我们没有设置栈依然能使用C语言?原因是在单片机中已经由硬件设置提供了一个默认可用的栈,而在应用程序中我们编写的C程序其实并不是全部,编译器(gcc)在链接时会帮我们自动添加一个头,这个头就是一段引导C程序能够执行的汇编代码,在这个代码中就原创 2022-05-27 02:43:20 · 151 阅读 · 0 评论 -
S5PV210开发板如何关闭看门狗
看门狗是什么?是SoC内部的一个定时器为什么需要看门狗?现实生活中由于一些外部环境因素,例如高温低温信号干扰,运行在电子设备上的程序容易跑飞和死机,在这种情况下,我们希望设备自动复位,而不是人为去手动复位。看门狗就是用来完成这个工作,定好时间后,当时间到了系统就会自动复位。为什么要关看门狗?一般CPU设计,默认CPU启动后看门狗是工作的,这么做的原因是因为怕我们自己编写的程序在启动代码阶段就死机了没人管;好处就是没有空档和漏洞,坏处就是需要我们在启动代码阶段不停喂狗,以防止OS未启动就复位了;但实原创 2022-05-27 02:10:49 · 676 阅读 · 0 评论 -
s5pv210v3s开发板下载裸机程序的两种方式
一.USB启动+dnw工具下载dnw是一个下载软件,可以通过USB线连接开发板和PC,然后将程序从PC烧录到开发板的BL1(除去校验头的部分)中。1.设置开发板为USB启动2.装USB驱动,驱动在“X210光盘资料\A盘\tools\USB驱动”目录中3.用USB线连接开发板和PC4.设置dnw下载内存地址。在dnw软件的菜单“Configuration”中设置Download Address为0xd0020010(除去了BL1前面16Byte的校验头,因为USB启动无需校验),确认即可。出现原创 2022-05-19 00:23:32 · 557 阅读 · 0 评论 -
s5pv210v3s开发板怎么从SD2启动以及如何更换镜像
1.输入登录账号和密码账号:root密码:1234562.破坏iNand中的bootloader以从SD2启动uboot环境下擦除开发板iNand中的uboot:movi write u-boot 0x30000000执行命令完毕后显示:此时iNand上的uboot已被破坏,无法启动安卓系统,此时SD0通道以启用失败,默认将会从SD2通道启动,所以我们需要烧写uboot到sd卡中,借用sd中的uboot启动安卓系统。3.按下复位键重启并插入烧好uboot的SD卡,然后按power键开机,倒计原创 2022-05-17 09:34:09 · 235 阅读 · 0 评论 -
ARM的异常处理机制
当异常产生时, ARM core: 1.拷贝 CPSR 到 SPSR_<mode> 2.设置适当的 CPSR 位: 2.1改变处理器状态进入 ARM 态 2.2改变处理器模式进入相应的异常模式 2.3设置中断禁止位禁止相应中断 (如果需要) 3.保存返回地址到 LR_<mode> 4.设置 PC 为相应的异常向量返回时, 异常处理需要: 1.从 SPSR_<mode>恢复CPSR 2.从LR_<mode>恢复PC Note:这些操原创 2022-05-12 23:37:42 · 419 阅读 · 0 评论 -
ARM汇编
汇编指令和伪指令的区别汇编指令是cpu机器指令的助记符,代表这个cpu的功能。伪指令本质不是指令,只是和汇编指令写在同一个代码中,它由编译器提供,用于指导编译过程,经过编译后伪指令最终不会生成机器码,不同的编译器提供的伪指令不同。两种不同风格的ARM指令Windows中IDE开发环境(如ADS、MDK等)常用: LDR R0, [R1]linux中常用:ldr r0, [r1]可以看到,不同环境下编写的汇编指令虽然只有大小写的区别,但编写的伪指令却大有不同,因为不同的编译器提供的伪指令不同。A原创 2022-05-12 02:26:21 · 364 阅读 · 0 评论 -
ARM的7种工作模式
Normal(普通模式),Privilege(特权模式)。ARM处理器有七种工作模式:包含: 1种用户模式 User : 用户模式,大部分任务进程执行在这种模式 6种特权模式: 特权模式包含: 5种异常模式: FIQ : "快速"中断模式 IRQ : "普通"中断模式 Supervisor : 复位或软中断执行时会进入这个模式,\ uboot引导linux内核就工作在这个模式下 Abort : 内存存取错误会进入这个原创 2022-05-09 03:12:35 · 2629 阅读 · 0 评论 -
RISC和CISC、统一编址和独立编址、冯诺依曼结构和哈佛结构
CISC:复杂指令集CPUCISC体系的设计理念是用最少的指令来完成任务(譬如计算乘加只需要一条指令即可),一条指令就代表一段复杂的电路,要支持多条指令功能就需要多段功能电路,因此CISC的CPU本身设计复杂,由于电路过于庞大,CPU只有那么一点大,因此CPU的制作工艺很复杂,但好处是编译器好设计,例如: c语言中的一条d=a*b+c; 编译生成汇编代码只有一条,直接乘加CISC出现较早,至今Intel还一直采用CISC设计。RISC:精简指令集CPURISC的设计理念是让软件来完成具体的任务原创 2022-04-20 02:33:36 · 1682 阅读 · 0 评论