×
单片机 > 单片机程序设计 > 详情

arm 裸板编程的总结下

发布时间:2021-06-25 发布时间:
|

day03 实验一:GPIO


==============================================================

一、用户手册导读

RAM ROM--可以执行程序


硬盘 nand flash --不能执行程序,必须被加载到内存中,才能执行

1.资源特性:


CPUS3c2440400MHz

内存(sdram)2个32M并联 = 64MB

NorFlash2M

NandFlash2Gb = 256MB

2.内存布局


sdram起始地址:0x30000000 ~ 0x34000000nGCS6

二、原理图

三、s3c2440 主芯片手册

1.Product Overview


1.s3c2440芯片的内部组成

ARM920T内核

MMU

高性能外设控制器--AHB Bus

普通外设控制器--APB Bus

4k的SRAM

内部总线

2.引脚封装

289pin FBGA

pin number

pin name

pin signal

3.SFR(special functional register)

r0-r15 --> ARM内核的寄存器

SFR ---> 各控制器上的寄存器

和内存统一编址

2.Programmers Model


3.ARM/Thumb Instruction Sets

4.各控制器的单独描述

5.Memory Controller

程序的运行地址:

SRAM or SDRAM

SDRAM的位置:

0x30000000 ~ 0x34000000

SRAM的位置:

Nor 启动:0x40000000 ~ 0x40001000 4k

Nand启动:0x0 ~ 0x1000 4k

四、GPIO实验


General purpose input/output ports


s3c24408 ports

GPA - GPH,GPJ

寄存器描述:


GPACON - GPJCON-->功能配置寄存器 (input/output/mux)

GPADAT - GPJDAT --> 数据配置寄存器 (high/low)

GPBUP - GPJUP --> 上拉寄存器 (yes/no)

Extern Interrupt controller register

==============================================================


day04 实验二:UART

==============================================================

1.如何学习操作一个外设


1.先看实物

9针公头

2.硬件连接(原理图)

s3c2440(GPH2,GPH3) --> max3232(电平转换,转换TTL电平为RS电平) ---> COM0

CON1,CON2,CON3提供串口外接

3.芯片手册(s3c2440 UART控制器)

1.UART控制器的内部组成(Block Diagram)

1.Transmiter

64FIFO

shifter

2.Receiver

64FIFO

shifter

3.BaudRate Generator--> Clock Source

4.APB

2.UART的操作

1.数据发送

可编程:8N1

产生break condition

2.数据接收

可编程:8N1

错误检测:

3.波特率

可编程:

UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1

4.AFC

disable

5.FIFO MODE

Non-FIFO

6.IR MODE

Normal Mode

3.寄存器

ULCON00x50000000//设置8N1,IR Mode

UCON00x50000004//clock selection , Interrupt or Polling or DMA, Interrupt trigger

UFCON00x50000008//disable FIFO

UMCON00x5000000C//disable AFC

UTRSTAT00x50000010//status register

UTXH00x50000020//transmiter holding register 发送缓冲寄存器

URXH00x50000024//reciever holding register接收缓冲寄存器

UBRDIV00x50000028//波特率设置寄存器

UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1

(int)(50 * 1000 * 1000/(115200 * 16) - 1) = 26

==============================================================


day05 实验三:时钟

==============================================================

1.实物

x2(s3c2440) ---------12MHz

x6(dm9000)---------25MHz

x1(rtc)--------- 32.768KHz

2.硬件连接(原理图)

3.芯片手册

1.时钟控制器组成:

1.时钟源选择(OM[3:2])

12MHz 晶振

外部时钟信号

2.两个PLL

MPLL用于FCLK,HCLK,PCLK

UPLL用于USB Block

3.时钟控制单元

4.HDIVN和PDIVN

2.开发板使用的时钟频率

FCLK(400MHz)-->ARM920T

HCLK(100MHz)-->AHB Bus(Interrupt,SDRAM,NANDFLASH)

PCLK(50MHz)-->APBBus(UART,IIC,SPI,IIS,GPIO)

3.PLL(Phase Locked Loop)

功能:倍频

M,P,S

locktime-->FCLK没有输出,CPU不工作

加电/reset之后,MPLL会自动开始工作,但是使用12MHz的系统时钟,除非写入一个有效的值

4.SFR

LOCKTIME 0x4C000000//变频锁定时间

MPLLCON 0x4C000004//设置PLL的输出频率92,1,1

CLKCON 0x4C00000C

CLKSLOW 0x4C000010//慢时钟设置disable 0

CLKDIVN 0x4C000014//设置FCLK的降频因子

CAMDIVN 0x4C000018//设置bit9为0

==============================================================


day06 实验四:异常和中断

==============================================================

一、异常


1.异常的种类和对应的异常模式、向量

异常模式 向量


--------------------------------------------------

ResetSVC0x0

Undefined InstructionUND0x4

SwiSVC0x8

Prefetch AbortABORT 0xC

Data AbortABORT 0x10

Reserve 0x14

IRQIRQ0x18

FIQFIQ0x1C

2.优先级


Reset

Data Abort

Prefetch Abort

FIQ

IRQ

SWI UND

3.产生异常之后,系统自动做的事情


1.备份返回地址

将pc-4放入对应异常模式的r14中

2.备份状态寄存器

将cpsr,保存到对应模式的spsr

3.强制切换到对应的异常模式

修改cpsr,强制切换模式

4.将pc值强制修改为对应的异常向量

5.如果产生异常之前处于Thumb状态,切换到ARM状态


6.对于有些异常,会禁用掉irq和fiq,防止不予预期的异常嵌套

4.产生异常之后,程序员应做的事情


1.安装异常处理程序

在异常向量表处存放一条跳转指令,跳转到真正的异常处理例程

注意:

不能使用BL

使用b指令应该考虑范围:+=32MB

使用ldr指令应该考虑文字池的位置


2.异常处理例程

1.保存现场

stmfd sp!,{r0-r12,r14}

2.获取中断编号


3.处理

bl swi_handler

注意:多个子程序嵌套注意保存r14的值

4.恢复现场

ldmfd sp!,{r0-r12,pc}^

二、中断(IRQ,FIQ)

1.中断控制器


SUBSRCPND

SUBMASK


SRCPND

MASK + MODE

if irq

(priority)

INTPND

2.中断的分类


内部中断

CPU内部的控制器产生的中断:Uart0,IIC

外部中断

外部设备产生的中断:key1-key6

3.中断产生之后,CPU做的事情:


和异常相同

相应的pending被自动置位

4.中断产生之后,程序员做的事情:


和异常相同

清除对应的pending位(写1清除)

5.中断相关寄存器


1.内部中断

SRCPND0X4A000000

INTMOD0X4A000004

INTMSK0X4A000008

PRIORITY0x4A00000C

INTPND0X4A000010

INTOFFSET 0x4A000014

子中断相关:


SUBSRCPND0X4A000018

INTSUBMSK0X4A00001C

2.外部中断


配置触发方式:

EXTINT0 0x56000088

eint0 - eint7

EXTINT1 0x5600008c

eint8-eint15

EXTINT2 0x56000090

eint16 - eint23

配置外部中断掩码

EINTMASK 0x560000a4

eint4 - eint23

配置外部中断未决

EINTPEND 0x560000a8

eint4 - eint23

6.关于中断处理程序,返回地址的修正

1.在产生异常之后,CPU总是会将PC-4保存到对应异常的LR中

2.对于不同的异常,对该返回地址需要进行相应的修正

swi不需要修正

irq/fiq-4



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计