- 博客(30)
- 资源 (4)
- 收藏
- 关注
原创 定时器、看门狗和RTC
什么是定时器(timer)定时器是SoC中常见外设(1)定时器与计数器。计数器是用来计数的(每隔一个固定时间会计一个数);因为计数器的计数时间周期是固定的,因此到了一定时间只要用计数值×计数时间周期,就能得到一个时间段,这个时间段就是我们定的时间(这就是定时器了)。(2)定时器/计数器作为SoC的外设,主要用来实现定时执行代码的功能。定时器相对于SoC来说,就好象闹钟相对于人来说意义一样。定时器有什么用(1)定时器可以让SoC在执行主程序的同时,可以(通过定时器)具有计时功能,到了一定时间(计时结
2021-11-24 00:55:09
2126
原创 ARM串口通信
电子通信概念1:同步通信和异步通信 **(1)、同步和异步的区别:首先很多地方都有同步和异步的概念,简单来说就是发送方和接收方按照同一个时钟节拍工作就叫同步,发送方和接收方没有统一的时钟节拍、而各自按照自己的节拍工作就叫异步。 (2)、同步通信中,通信双方按照统一节拍工作,所以配合很好;一般需要发送方给接收方发送信息同时发送时钟信号,接收方根据发送方给它的时钟信号来安排自己的节奏。同步通信用在通信双方信息交换频率固定,或者经常通信时。 (3)、异步通信又叫异步通知。在双方通信的频率不固定时(有时
2021-11-24 00:53:57
1031
原创 arm裸机的按键设置和中断
按键的物理特性 **(1)、平时没人按的时候,弹簧把按键按钮弹开。此时内部断开的。 (2)、有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通(闭合)状态;如果手拿开,则弹簧作用下按钮又弹开,同时内部又断开。 (3)、一般的按键都有4个引脚,这4个引脚成2对:其中一对是常开触点(像上面描述的不按则断开,按下则闭合);一对是常闭触点(平时不按时是闭合的,按下后是断开的)**按键的电学原理(结合原理图分析) **(1)硬件接法: SW5:GPH0_2 SW6:GPH0_3 SW78
2021-11-24 00:53:09
646
原创 arm裸机块设备
RAM 内存ROM 外存NorFlash(可总线式访问)NandFlash(块设备) SLC 可靠性高,缺点是容量做不大MLC 容量可以做很大很便宜SD卡与SRAM/DDR/SROM之类的东西的不同:SRAM/DDR/SROM之类的存储芯片是总线式的,只要连接上初始化好之后就可以由SoC直接以地址方式来访问;但是SD卡不能直接通过接口给地址来访问,它的访问需要按照一定的接口协议(时序)来访问。SD卡支持两种读写协议:SD协议和SPI协议。SPI协议特点(低速、接口操作时序简单、适合
2021-11-24 00:52:32
837
原创 S5PV210的时钟系统
1.6.1.SoC时钟系统简介1.6.1.1、什么是时钟?SoC为什么需要时钟?(1)时钟是同步工作系统的同步节拍。(2)SoC内部有很多器件,譬如CPU、串口、DRAM控制器、GPIO等内部外设,这些东西要彼此协同工作,需要一个同步的时钟系统来指挥。这个就是我们SoC的时钟系统。1.6.1.2、时钟一般如何获得(1)SoC的时钟获得一般有:* 外部直接输入时钟信号,SoC有个引脚用来输入外部时钟信号,用的很少。* 外部晶振+内部时钟发生器产生时钟,大部分低频单片机都是这么工作的。* 外部晶
2021-11-24 00:51:11
189
原创 链接脚本与重定位
程序段的概念:代码段、数据段、bss段(ZI段)、自定义段段就是程序的一部分,我们把整个程序的所有东西分成了一个一个的段,给每个段起个名字,然后在链接时就可以用这个名字来指示这些段。也就是说给段命名就是为了在链接脚本中用段名来让段站在核实的位置。段名分为2种:一种是编译器链接器内部定好的,先天性的名字;一种是程序员自己指定的、自定义的段名。先天性段名:代码段:(.text),又叫文本段,代码段其实就是函数编译后生成的东西数据段:(.data),数据段就是C语言中有显式初始化为非0的全局变量bss
2021-11-23 23:48:12
439
原创 cache 高速缓存内存
cache是一种内存,叫高速缓存。从容量来说:CPU < 寄存器 < cache < DDR从速度来说:CPU > 寄存器 > cache > DDRcache的存在,是因为寄存器和ddr之间速度差异太大,ddr的速度远不能满足寄存器的需要(不能满足cpu的需要,所以没有cache会拉低整个系统的整体速度)整个系统中CPU的供应链由:寄存器+cache+DDR+硬盘/flash四阶组成,这是综合考虑了性能、成本后得到的妥协的结果。210内部有32KB icac
2021-11-23 23:47:18
1236
原创 串口驱动的安装
右键“计算机”,点管理。点击设备管理器。点击端口,如果安装了驱动就会有。上图中的COM4端口在终端中是需要的,但是端口是不确定的,当你接到不同地方它的端口号可能是COM1\2\3。要解决这个问题需要选择端口号在强制占用它。右键端口在这里插入图片描述终端的设置...
2021-11-23 23:46:24
14254
原创 LED灯涉及的寄存器
查阅原理图,发现开发板上一共有5颗LED。其中一颗D26的接法是:正极接5V,负极接地。因此这颗LED只要上电就会常亮。因此我们分析这颗LED是电源指示灯。剩下4颗LED的接法是:正极接3.3V,负极接了SoC上的一个引脚(GPIO),具体详细接法是:D22:GPJ0_3D23:GPJ0_4D24:GPJ0_5D25:PWMTOUT1(GPD0_1)(172页和143页)GPJ0CON, (GPJ0 control)GPJ0控制寄存器,用来配置各引脚的工作模式 GPJ0DAT, (GPJ0.
2021-11-23 23:45:43
802
原创 (有错误)1012 数字分类 (20 分)
输入格式:每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。输出格式:对给定的 N 个正整数,按题目要求计算 A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。若其中某一类数字不存在,则在相应位置输出 N。输入样例 1:13 1 2 3 4 5 6 7 8 9 10 20 16 18结尾无空行输出样例 1:30 11 2 9.7 9结尾无空行输入样
2021-11-23 20:00:35
203
原创 1008 数组元素循环右移问题 (20 分)
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。输入样例:6 21 2 3 4 5 6结尾无空行输出样例:5 6 1 2 3 4结尾无空行#include<stdio.h>int main(void){ int i,j,t,q,sum; int time[100]; if(scanf("%d %d",&
2021-11-23 19:58:57
282
原创 1006 换个格式输出整数 (15 分)
让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出 n。输入样例 1:234结尾无空行输出样例 1:BBSSS1234结尾无空行输入样例 2:23
2021-11-23 19:57:18
429
原创 1004 成绩排名 (20 分)
读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩… … …第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。输出格式:对每个测试用例输出 2 行,第
2021-11-23 19:56:14
93
原创 uboot的环境变量
文章目录环境变量的作用环境变量的优先级默认的环境变量环境变量在uboot中工作方式SD卡中环境变量分区DDR中环境变量总结环境变量的作用环境变量影响uboot的运行,决定uboot的一些特性;例如uboot开机自启的倒计时就是由bootdelay环境决定的。环境变量的优先级在没有定义环境变量的时候,uboot就会使用代码中给的默认的环境变量值。如果有定义了环境变量就会优先使用定义的环境变量。例如机器码,在(我用的版本)uboot中没有定义板子的环境变量的机器码,所以当你启动内核的时候,就回去校验
2021-11-23 17:55:41
421
原创 1001 害死人不偿命的(3n+1)猜想
#include<stdio.h>int main(void){ unsigned int i = 0,j = 0; if(scanf("%d",&i) == 0) printf("重新输入:/n"); while(i > 1) { if(i % 2 == 0) i = i / 2; else i = (3 * i + 1) / 2;
2021-11-19 09:34:17
555
原创 movi.c分析
#include <common.h>#include <s5pc110.h>#include <movi.h>#include <asm/io.h>#include <regs.h>#include <mmc.h>#if defined(CONFIG_SECURE_BOOT)#include <secure_boot.h>#endifextern raw_area_t raw_area_contr
2021-11-06 17:03:40
155
原创 移植Samsung uboot
文章目录第一个问题在编译uboot成功之后,烧录到板子里。第一个问题在烧录进板子里后,通过串口连上板子观察板子的信息;板子启动,灯亮了,供电锁存了,但是串口并没有信息,所以我们确定了需要修改的大致范围在 start.S 中我们做了中断处理、设置状态寄存器cpsr、设置cache、mmu、确定启动介质sd/nand。然后调用lowlevel_init。这个函数是对一些底层的东西进行初始化。首先是 压栈,在我们调用lowlevel_init时我们不确定或者确定要再调用函数时,就需要压栈。因为阿巴阿
2021-11-06 16:51:41
111
原创 uboot中bss的理解
一个程序里面包含有数据段、代码段、BSS段。而BSS段中存放的是一些未初始化的静态变量、全局变量,为了合理的使用内存,那么在最后编译出来的.bin文件中BSS段是不存在的。针对这个我自己给自己提出问题,以下答案依据个人理解,可能我描述有些问题,也可能我理解的不对,希望有朋友给我指出来,谢谢!1、既然BSS段在最终编译出来的文件中是不存在的,那么,BSS还有什么作用呢?答:因为在程序编译链接后,在指令代码中会指令访问未初始化全局、静态变量的地址,而在编译链接的时候,所以对应BSS段的地址还是会分配给这些变
2021-10-24 17:49:15
358
原创 start.S分析
文章目录头文件包含预留校验头与中断异常向量表头文件包含/* * armboot - Startup Code for S5PC110/ARM-Cortex CPU-core * * Copyright (c) 2009 Samsung Electronics * * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; y
2021-09-19 23:51:22
371
原创 lowlevel_init 函数分析
lowlevel_init函数主要用做底层的初始化,在start.S中确定启动介质后就要调用这个函数。uboo\board\samsung\x210文章目录
2021-08-17 10:46:48
730
原创 u-boot链接脚本分析
位置在include/board/samsung/x210目录下文章目录/*© Copyright 2002Gary Jennejohn, DENX Software Engineering, gj@denx.deSee file CREDITS for list of people who contributed to thisproject.This program is free software; you can redistribute it and/ormodify it
2021-08-15 20:27:52
125
原创 主mkconfig分析
文章目录传参整体传参#!/bin/sh -e# Script to create header files and links to configure# U-Boot for a specific board.## Parameters: Target Architecture CPU Board [VENDOR] [SOC]## (C) 2002-2006 DENX Software Engineering, Wolfgang Denk <wd@denx.de>#
2021-08-15 19:38:05
83
原创 Makefile分析
文章目录1.1 版本号1.2 静默编译1.3 静默编译1.1 版本号## (C) Copyright 2000-2008# Wolfgang Denk, DENX Software Engineering, wd@denx.de.## See file CREDITS for list of people who contributed to this# project.## This program is free software; you can redistribute it an
2021-08-12 10:33:05
931
原创 ARM中常见的汇编指令
ARM中常见的汇编指令数据传输指令mov r0,r1 mov r0,#0xff 传递mvn r0,r1 mvn r0,#0xff 按位取反传递算数指令addsubrsbadcsbcrsc逻辑指令and 与orr 或eor 异或bic 位清除指令比较指令cmpcmntstteq乘法指令mvlmlaumullu
2021-04-01 19:51:47
772
原创 ARM的七种模式与37个寄存器 笔记
ARM处理器的工作模式非特权模式User : 非特权模式(也叫用户模式),大部分任务执行都在这种模式。用户模式特权模式FIQ : 当一个高优先级(fast)中断产生时将会进入这种模式。 快速中断IRQ : 当一个低优先级(normal)中断产生时将会进入这种模式。 普通中断Supervisor : 当复位或软中断指令执行时将会进入这种模式。 管理者模式Abort : 当存取异常时将会进入这种模式。Undef : 当执行未定义指令时会进入这种模式。
2021-03-31 20:40:08
1033
原创 ARM笔记
S5PV210启动过程内存SRAM: 静态内存 特点是容量小、价格高。特点是不需要软件初始化直接上电就能用。DRAM: 动态内存 特点是容量大、价格低。缺点是上电后不能直接使用,需要软件初始后才 能使用。单片机:内存需求量小,而且希望开发尽量简单,适合全部使用SRAM。嵌入式系统:内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部使用DRAM。外存NorFlash:特点是容量小,价格高,优点是可以和CPU直接总线式连接,CPU上电就能直接读取
2021-03-31 11:39:32
48
原创 ARM裸机基础笔记
从源代码到CPU的执行过程如果用 C编写源代码,就会经过编译器编译成汇编源代码。第三步的Elf格式不是固定的,在瘟都死里是EXE格式,Elf是Linux里的格式。这个时候CPU就可以执行这个文件了。从可执行文件到CPU的执行过程程序存放在Flash,通过总线传给DDR(内存)。然后CUP从内存里边读一条指令解释一条指令再执行一条指令,反复循环,知道执行完。RISC 与 CISC 的区别PISC(精简指令集):是一种起源于80年代执行较少类型计算机指令的微处理器。它的指令系统相对简单,它只要求
2021-03-29 23:55:23
219
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人