
4412裸机
文章平均质量分 82
csprimer
邮箱:aaron.yj@qq.com
展开
-
4412裸机程序之点亮LED
4412裸机程序之点亮LED看一下Tiny4412原理图:在Tiny4412核心板上有4个可编程控制LED,我们来点亮led1, led1右边接3.3V电源,左边接GPM4_0接口,把GPM4_0设成低电平led灯亮,设成高电平led灯灭。GPM4_0叫GPIO(通用输入输出接口)属于4412片内外设,每个片内外设都有相应的特殊功能寄存器可以控制,通过4412的启动流程原创 2015-11-14 14:47:46 · 2234 阅读 · 0 评论 -
4412裸机程序之IIC
IIC总线是个比较重要的模块,很多外设都通过IIC来传输数据,下面大致说下IIC总线协议原理:IIC只有2条线,SDA(数据线)/SCL(时钟线),分为主机(IIC控制器)和从机(EEPROM),2条线上可以挂很多从机设备,主机通过向从机发地址,哪个从机响应了,就与哪个从机通信。当SCL/SDA都为高电平时,拉低SDA作为起始信号, SCL为高,拉高SDA做为原创 2015-11-14 15:19:37 · 1450 阅读 · 0 评论 -
4412裸机程序之中断
CPU运行过程中怎么检测外部事件的发生呢,如usb设备插入,按键按下。1.通过查询的方式,程序循环查询设备的状态,实现比较简单就是占用CPU资源比较高。2.中断的方式,当事件发生时主动触发一个中断,CPU会终止当前正在执行的任务,响应中断,调用相应的中断处理程序,等中断处理完继续执行当前的任务。我们以按键为例,前面有用查询的方式检测按键是否按下,现在看程序以中断方式监测到按键按下要原创 2015-11-14 15:15:29 · 2018 阅读 · 0 评论 -
4412裸机程序之mmu
内存管理单元MMU,负责虚拟地址到物理地址的转换,并提供硬件进制的内存访问权限检查,操作系统通过MMU可以实现各个用户进程自己独立的地址空间,通过内存权限的检查可以保证每个进程使用的内存不被其他进程破坏。具体操作系统怎么运用MMU的就比较复杂了,我们只看看最原始的裸机程序怎么配置寄存器操作MMU建立虚拟地址到物理地址映射,了解其原理。ARM提供4种映射长度:段(1M),大页(64K),原创 2015-11-14 15:06:21 · 1572 阅读 · 0 评论 -
4412裸机程序之ddr
这一节我们要把程序拷到ddr里去运行,ddr初始化后就可以使用,也是配置DRAM控制器寄存器,初始化流程比较复杂我们就先不研究了。代码直接从网上拷的说明如下:我们生成两个文件,BL2.bin和main.bin,其中BL2.bin文件的链接地址是0x02023400;(使用的是位置无关码,程序可以在任意可用的内存中运行),main.bin 文件的链接地址是0x43E00000(使用的并不是位原创 2015-11-14 15:03:19 · 1003 阅读 · 0 评论 -
4412裸机程序之常用gcc/makefile/arm汇编指令
常用gcc/makefile/arm汇编指令这3个工具平时用的比较少,基本上是看了忘,忘了看,我们只记住几个常用的命令,不懂的可以用到再查。推荐资料:>,>(1)arm-linux-gcc 选项-c预处理、编译和汇编源文件,但是不作连接,编译器根据源文件生成 OBJ 文件。缺省情况下,GCC 通过用`.o'替换源文件名的后缀`.c',`.i',`.s'等,产生 OBJ 文件原创 2015-11-14 15:02:30 · 1131 阅读 · 0 评论 -
4412裸机程序之UART串口
通用异步收发器UART,就是通常所说的串口,左边是4412板子右边是pc,两边都可以通过TxD,RxD按照某种协议传送和接收数据,具体原理不用太细纠通过配置寄存器,就可以按uart的协议传送数据。主要就是配置uart GPIO,时钟来源,波特率,工作模式,然后就可以通过读写URXH0和UTXH0寄存器传送数据。代码如下// GPIO#define GPA0CON (*(原创 2015-11-14 15:00:57 · 3104 阅读 · 0 评论 -
4412裸机程序之时钟控制
理解时钟的概念可以先看看基本的模电/数电的书,>,数字电路以时钟脉冲驱动,简单的情况就是一个时钟周期传1个字节数据, 时钟就是cpu的动力,没有时钟cpu就无法运行。看一下4412的时钟流程图,里面涉及3个概念:MUX:多路复用,即从多个输入源中选择一个PLL:把低频率的输入时钟提高后输出DIV:分频器,把高频率的输入时钟降频后输出tiny4412外接24M晶振原创 2015-11-14 14:56:37 · 702 阅读 · 0 评论 -
4412裸机程序之按键控制LED
这1节我们通过按键来控制led,按下按键K1,4个灯全亮,松开全灭。看一下原理图K1与XNI26/GPX3_2相连,我们把GPX3_2配置成输入接口,从原理图可以看出当按键断开时XNI26与1.8v电压相连,显示高电平,当按键按下时XNI26与地相连,显示底电平。这样我们只有读XNI26/GPX3_2状态就可以判断按键是按下还是松开。代码如下://l原创 2015-11-14 14:52:16 · 1393 阅读 · 0 评论 -
4412裸机程序之lcd
下面代码是在x4412板子上做的,Tiny4412最新板子背光打不开。#include "regs.h"#define RGB888(r, g, b) (((r) void clean_screen(unsigned long *fb, int w, int h){ // green int i, j; for (i = 0; i原创 2015-11-28 14:19:17 · 2959 阅读 · 0 评论