03 2014 档案
摘要:前言 说到看门狗,应该不会陌生,看门狗说白了就是一个定时器,但是它有一个非常重要的功能就是复位系统。在A20里,看门狗的操作非常简单,只有两个寄存器,不需要操作时钟相关的东西,系统起来后可以直接使用,它的最大定时时间为16秒。一、目的 学习使用A20的看门狗,实现软件复位系统。二、源代码说明 start.S文件。首先禁止CPU的IRQ和FIQ,设置为管理模式,需要注意的是,这里设置异常向量表的起始地址为start.S文件里的第一指令的地址,学过ARM的都知道,ARM的异常向量表可以设置在低地址(0地址),也可以设置在高地址(0xffff0000地址,通常在使能了MMU后使用),但是目...
阅读全文
摘要:前言 在Cubieboard2裸机开发之(三)里用到了一个延时函数delay,它的延时时间是不精确的,因此为了能够精确延时,就需要定时器的配合。定时器可以精确延时的一个重要原因是它的计时时钟(或者说频率)是精确的,计时时钟越小,能实现的延时时间就越小。 A20的定时器模块比较强大,它不仅有6个普通的定时器,还有4个高速定时器,计时频率可达上百MHz,更重要的是它们操作起来非常简单、易懂。一、目的 学习使用A20的普通定时器,实现精确延时。二、源代码说明start.S文件。首先禁止CPU的IRQ和FIQ,设置为管理模式,然后设置堆栈指针,最后调用C语言的main函数。 1 /* 2 ...
阅读全文
摘要:前言 前面通过汇编语言点亮LED,代码虽然简单,但并不是很直观。这次使用熟悉的C语言来控制LED,但是需要注意的地方有两点,第一,要想使用C语言,首先需要在调用C语言代码之前设置好堆栈;第二,调用C语言函数时,是需要相对跳转还是绝对地址跳转,还是两者都可以,这就需要知道代码是否运行在链接地址处,是位置无关的还是位置有关的。从前面分析可以知道,我们的代码是运行在链接地址处的,因此可以用直接进行函数的调用。一、目的 使用C语言的方式操作板载LED。二、源代码说明start.S文件。首先禁止CPU的IRQ和FIQ,设置为管理模式,然后设置堆栈指针,最后调用C语言的main函数。 1 /* 2 ...
阅读全文
摘要:前言 电路原理在文章http://www.cnblogs.com/lknlfy/p/3583806.html中已经说明,两个LED的原理图是一样的。要使两个LED交替闪烁,只需要在点亮蓝色LED,熄灭绿色LED之后延时一段时间,然后再点亮绿色LED,熄灭蓝色LED,延时一段时间,如此不断循环即可,过程如图1所示。 图1 LED交替闪烁流程图一、目的 通过编写裸机程序,使板载的两个LED交替闪烁。二、源代码说明 程序比较简单,已给出详细注释,直接看代码好了,如下所示: 1 /* 2 * (C) Copyright 2014 Conan Liang 3 * 4 * two ...
阅读全文
摘要:前言 CUbieboard2板载两个LED,一个绿色的,一个蓝色的,其中绿色LED通过三极管与PH20管脚连接,蓝色LED通过三极管与PH21管脚连接,这里只以蓝色LED为例,电路原理图如图1和图2所示。 图1 LED所使用的管脚 图2 LED与三极管连接图由此可知,当PH21输出高电平时,三极管处于导通状态,从而蓝色LED会被点亮;当PH21输出低电平时,三极管处于截止状态,蓝色LED熄灭。一、目的 编写第一个裸机程序,点亮板载的蓝色LED。二、源代码说明 程序很简单,已给出详细注释,直接看代码好了,如下...
阅读全文
摘要:A20支持从NAND Flash、SPI NOR Flash、SD card(SDC 0/2)和USB启动。当系统上电时,首先检测Boot Select Pin(BSP)管脚,如果为低电平,则直接从USB启动,否则尝试从MMC0启动,如果启动失败则尝试从NAND启动,如果启动失败则尝试从MMC2启动,如果启动失败则尝试从SPI NOR启动,如果启动失败则尝试从USB启动,整个启动过程如图1所示。 图1 A20启动过程 下面以MMC0启动为例进行分析。当系统从MMC0启动时,首先会读取TF卡从8KB开始的数据,一共读取24KB,读到内部SRAM的0地址...
阅读全文
摘要:前言 昨天终于入手了一块Cubieboard2板子,今年4月入职从事的就是与之相关的工作,因此趁现在有时间就好好熟悉一下。一、主机环境1.PC主机WIN 7旗舰版1.虚拟机VM7.02.ubuntu12.043.4G的TF卡,读卡器二、安装交叉编译器 这个比较关键,试过用自己下载的arm-linux-gnueabihf的4.7版本在构建busybox的根文件系统时会出现经典的错误:kernel panic - not syncing: No init found. Try passing init= option to kernel,因此用ubuntu源里自带的交叉编译器,安装方法如下...
阅读全文