ARM裸机
ben跑的蜗牛
这个作者很懒,什么都没留下…
展开
-
1.7.11.uart stdio的移植3
朱老师笔记1.7.11.1、在移植后的uart stdio项目中添加link.lds链接脚本,指定连接地址到0xd00200101.7.11.2、gcc可变参数及va_arg介绍(1)printf函数中首先使用了C语言的可变参数va_start/va_arg/va_end;(2)建议大家先去baidu“C语言可变参数”,然后按照别人的教程、博客实际写几个简单的变参的使用示例转载 2018-04-30 21:04:30 · 191 阅读 · 0 评论 -
1.8.8.S5PV210中断处理的编程实践
朱老师笔记1.8.8.1、上节中代码中的小问题主要集中在start.S中,原因就是不常写,格式忽略。解决方案就是编译时发现再解决。1.8.8.2、中断控制器初始化主要工作有:第一阶段绑定异常向量表到异常处理程序;禁止所有中断源;选择所有中断类型为IRQ;清理VICnADDR寄存器为0.1.8.8.3、中断的使能与禁止思路是先根据中断号判断这个中断属于VIC几,然后在转载 2018-04-30 21:03:49 · 207 阅读 · 0 评论 -
1.8.7.S5PV210中断处理的主要寄存器
朱老师笔记1.8.7.1、VICnINTENABLE和VICnINTENCLEAR(1)VICnINTENABLE 对应interrupt enable,INTENCLEAR对应interrupt enable clear(2)INTENABLE寄存器负责相应的中断的使能,INTENCLEAR寄存器负责相应的中断的禁止。(3)当我们想使能(意思就是启用这个中断,意思就是当硬件产生中转载 2018-04-30 21:03:25 · 344 阅读 · 0 评论 -
1.8.6.S5PV210的向量中断控制器
朱老师笔记1.8.6.1、异常处理的2个阶段(1)可以将异常处理分为2个阶段来理解。第一个阶段是异常向量表跳转;第二个阶段就是进入了真正的异常处理程序irq_handler之后的部分。1.8.6.2、回顾:中断处理的第一阶段(异常向量表阶段)处理。(1)第一个阶段之所以能够进行,主要依赖于CPU设计时提供的异常向量表机制。第一个阶段的主要任务是从异常发生到响应异常并且保存/恢复现场转载 2018-04-30 21:03:03 · 232 阅读 · 0 评论 -
1.8.5.异常向量表的编程处理
朱老师笔记1.8.5.1、像内存一样去访问异常向量表(1)S5PV210的异常向量表可以改变(在CP15协处理器中),以适应操作系统的需求。但是目前系统刚启动时,此时DRAM尚未初始化,程序都在SRAM中运行。210在iRAM中设置了异常向量表,供暂时性使用。(2)查210的iROM application note文档中iRAM的地址分配,可知,iRAM中的异常向量表起始地址为0xD转载 2018-04-30 21:02:47 · 355 阅读 · 0 评论 -
1.8.4.S5PV210的中断体系介绍
朱老师笔记1.8.4.1、什么是中断(1)中断的发明是用来解决宏观上的并行需要的。宏观就是从整体上来看,并行就是多件事情都完成了。(2)微观上的并行,就是指的真正的并行,就是精确到每一秒甚至每一刻,多个事情都是在同时进行的。宏观上面的并行并不等于围观的并行,有时候宏观上是并行的,微观上是串行的。(3)例子中一个人在看电影,快递来了暂停电影跑去收快递,收完快递继续回来看电影,这个例子转载 2018-04-30 21:02:26 · 170 阅读 · 0 评论 -
1.8.3.串口输出和按键消抖
朱老师笔记1.8.3.1、基于串口标准输出的按键调试(1)以之前的串口stdio的工程为基础来移植添加轮询方式按键处理。(2)注意USB下载方式可能有错误(有可能不下载,也有可能下载了执行不对),解决方案是用SD卡启动来替代。1.8.3.2、什么是按键消抖(1)按键这种物理器件本身会有抖动信号,抖动信号指的是在电平由高到低(也就是按键按下时)或者电平由低到高(也就是按键弹起时)转载 2018-04-30 21:02:15 · 380 阅读 · 0 评论 -
1.8.2.轮询方式处理按键
朱老师笔记1.8.2.1、X210开发板的按键接法(1)查原理图,找到按键对应的GPIO:SW5:GPH0_2SW6:GPH0_3 SW78910:GPH2_0123(2)原理图上可以看出:按下时是低电平,弹起时是高电平1.8.2.2、按键对应的GPIO模式设置(1)按键接到GPIO上,按键按下还是弹起,决定外部电路的接通与否,从而决定这个GPIO引脚的电压是高还是低;这个转载 2018-04-30 21:01:23 · 1036 阅读 · 0 评论 -
1.7.10.uart stdio的移植2
朱老师笔记1.7.10.1、修改Makefile进行printf移植1.7.10.2、Makefile及gcc的库文件介绍1.7.10.3、多文件夹裸机工程的结构解析1.7.10.4、编译运行及测试《朱老师物联网大讲堂》学习笔记学习地址:www.zhulaoshi.org首先还是start.S,然后进入到main.c,转载 2018-04-29 16:59:59 · 123 阅读 · 0 评论 -
1.7.9.uart stdio的移植1
朱老师笔记1.7.9.1、什么是stdio(1)#include (2)stdio:standard input output,标准输入输出(3)标准输入输出就是操作系统定义的默认的输入和输出通道。一般在PC机的情况下,标准输入指的是键盘,标准输出指的是屏幕。(4)printf函数和scanf函数可以和底层输入/输出函数绑定,然后这两个函数就可以和stdio绑定起来。也就是说我转载 2018-04-29 16:59:40 · 256 阅读 · 0 评论 -
1.7.8.S5PV210串行通信编程实战2
1.7.8.1、串口Tx、Rx对应的GPIO的初始化给GPA0CON的相应bit位赋值为相应值,用C语言位操作来完成。1.7.8.2、UCON、ULCON、UMCON、UFCON等主要控制寄存器依据上节中分析的值进行依次设置即可。1.7.8.3、波特率的计算和设置(1)第一步,用PCLK_PSYS和目标波特率去计算DIV_VAL: DIV_VAL = (PCLK / (bps转载 2018-04-29 16:59:18 · 193 阅读 · 0 评论 -
1.7.7.S5PV210串行通信编程实战1
1.7.7.1、整个程序流程分析(1)整个串口通信相关程序包含2部分:uart_init负责初始化串口,uart_putc负责发送一个字节1.7.7.2、串口控制器初始化关键步骤(1)初始化串口的Tx和Rx引脚所对应的GPIO(查原理图可知Rx和Rx分别对应GPA0_1和GPA0_0)(2)GPA0CON(0xE0200000),bit[3:0] = 0b0010 bit[7:4]转载 2018-04-29 16:58:58 · 187 阅读 · 0 评论 -
1.7.1,2,3.通信涉及的几个基础概念,串口通信的基本概念,串口通信的基本原理
通信涉及两个很重要的方面,1.对发送方而言是信息的表示方法,对接收方而言就是解析方法,2.信息的发送方法,即如何在传输介质上进行有效的传输,同步和异步,是否有统一的时钟,同步需要一个专门的信号线表示时钟,适合通信频繁的双方。电平信号和差分信号,电平信号中,有一个参考电平(一般是GND),而差分信号中,没转载 2018-04-29 16:58:41 · 196 阅读 · 0 评论 -
1.7.6.S5PV210串行通信接口详解3
1.7.6.1、串行通信与中断的关系(1)串口通信分为发送/接收2部分。发送方一般不需要(也可以使用)中断即可完成发送,接收方必须(一般来说必须,也可以轮询方式接收)使用中断来接收。(2)发送方可以选择使用中断,也可以选择不使用中断。使用中断的工作情景是:发送方先设置好中断并绑定一个中断处理程序,然后发送方丢一帧数据给transmitter,transmitter发送耗费一段时间来发送这一转载 2018-04-29 16:58:22 · 136 阅读 · 0 评论 -
1.7.5.S5PV210串行通信接口详解2
1.7.5.0、本来串口的功能就是上节讲过的部分,但是后来的技术发展给串口叠加了一些高级功能,在像210这类的高级SoC的串口控制器中,都有这类高级功能。1.7.5.1、FIFO模式及其作用(1)典型的串口设计,发送/接收缓冲区只有1字节,每次发送/接收只能处理1帧数据。这样在单片机中没什么问题,但是到复杂SoC中(一般有操作系统的)就会有问题,会导致效率低下,因为CPU需要不断切换上下文转载 2018-04-29 16:58:04 · 183 阅读 · 0 评论 -
1.7.4.S5PV210串行通信接口详解1
4.16转载 2018-04-29 16:57:28 · 213 阅读 · 0 评论 -
1.8.1.什么是按键
朱老师笔记1.8.1.1、按键的物理特性(1)、平时没人按的时候,弹簧把按键按钮弹开。此时内部断开的。(2)、有人按下的时候,手的力量克服弹簧的弹力,将按钮按下,此时内部保持接通(闭合)状态;如果手拿开,则弹簧作用下按钮又弹开,同时内部又断开。(3)、一般的按键都有4个引脚,这4个引脚成2对:其中一对是常开触点(像上面描述的不按则断开,按下则闭合);一对是常闭触点(平时不按时是闭合转载 2018-04-30 21:01:08 · 267 阅读 · 0 评论 -
1.4.2.裸机实验体验之SD卡下载
1.4.2.1、背景知识一般情况下,用USB下载来调试裸机程序比较方便;但是有时候电脑使用dnw会频繁蓝屏,这时候用SD卡下载调试是不错选择。把OM5打开GND,以从SD通道启动。从SD启动时会先从iNand(SD0)启动执行,当iNand启动做校验和时失败才会转为启动SD2。而我们做裸机实验时是通过SD2来提供裸机程序镜像的,因此需要先破坏内部iNand的uboot才可以强迫开发板从转载 2018-03-24 17:17:54 · 131 阅读 · 0 评论 -
1.5.1.汇编写启动代码之关看门狗
《朱老师物联网大讲堂》学习笔记学习网址:www.zhulaoshi.orgwatch dog timer 这就是看门狗现实中因为一些外部原因,比如恶劣的环境等,电子设备可能会跑飞或者死机在这种极端情况下,我们希望设备能够自动复位,进而重新启动,否则岂不是要一直卡在那里看门狗的作用就是用来帮我们实现自动复位的转载 2018-03-24 17:17:35 · 578 阅读 · 0 评论 -
1.5.3.汇编写启动代码之设置栈和调用C语言2
《朱老师物联网大讲堂》学习笔记学习地址:www.zhulaoshi.org上节,我们已经设置好了C运行时环境,接下来就要开始用C写程序了。在IO与内存统一编址下,寄存器的地址类似于内存地址,所以这里用C语言来读写寄存器,就是用C语言来读写内存地址,用C语言来访问内存,就要用到指针,下面就是已经形转载 2018-03-24 17:16:32 · 156 阅读 · 0 评论 -
1.4.1.裸机实验体验之usb启动配合dnw工具下载
1.4.1.1、背景知识介绍 回顾S5PV210的启动方式,必须将OM5打到VCC,才能从USB启动。 S5PV210的启动过程:开机时先执行内部的iROM中的BL0,然后BL0做了一系列的初始化后,再读取外部OMpin的设置来确定用户选择了从哪里启动。当检测到我们设置的是USB启动时,S5PV210就会从USB OTG接口试图连接主机进行下载启动。1.4.1.2、dnw工具介绍 dnw是一个软件...转载 2018-03-22 23:38:55 · 249 阅读 · 0 评论 -
1.5.2.汇编写启动代码之设置栈和调用C语言1
《朱老师物联网大讲堂》学习笔记学习地址:www.zhulaoshi.org一直以来我们都是在用汇编代码在写程序那么怎样才能用C语言来写程序,以及如何去调用呢?这就不得不提及“C语言运行时”,英文叫做runtime,这些环境条件,有汇编来提供,主要是设置栈,栈是C语言中的一种数据结构,局部变量都是由栈来实现的,转载 2018-03-22 23:21:32 · 154 阅读 · 0 评论 -
1.4.3.自己动手安装交叉编译工具链1
1.4.3.1、Windows中装软件的特点Windows中装软件使用安装包,安装包解压后有2种情况:一种是一个安装文件(.exe .msi),双击进行安装,下一步直到安装完毕。安装完毕后会在桌面上生成快捷方式,我们平时使用快捷方式来启动这些程序;另一种是所谓的绿色软件、免安装软件。这种不用安装,直接解压开里面就有exe可以直接双击执行。1.4.3.2、linux中装软件的特点linu转载 2018-03-25 00:12:36 · 187 阅读 · 0 评论 -
1.5.5.重定位引入和链接脚本1
《朱老师物联网大讲堂》学习笔记学习地址:www.zhulaoshi.org重定位引入和链接脚本位置无关编码位置有关编码我们在设计程序的时候会给程序指定一个运行地址,比如0xD0020010这里是通过链接器中指定来设置的,它的另一个说法也叫链接地址,链接地址可以通过上面的-Ttext或者链转载 2018-03-26 15:03:48 · 124 阅读 · 0 评论 -
1.5.4.汇编写启动代码之开iCache
朱老师物联网大讲堂》学习笔记学习地址:www.zhulaoshi.org前两节老师讲了一句话,我忘记写上来了,今天补上。SOC基本上都是通过类似GPIO,内存控制器等对外设进行读写控制。也有特殊的,像看门狗,就没有外设与之对应。好了接下来开始我们今天的主题icache那么,什么是icache呢它转载 2018-03-22 23:13:57 · 178 阅读 · 0 评论