LPC3250应用

LPC3250采用ARM926EJ-S内核,运行频率可高达208MHz;
支持矢量浮点协处理器;
32kB 指令高速缓存和32kB 数据高速缓存;
高达256kB 的内部SRAM(IRAM);
可选择从不同的外部设备中启动:NAND Flash、SPI 存储器、USB、UART 或
静态存储器;
多层 AHB 系统为每个AHB 主机单独提供总线,包括CPU 的指令总线和数据总线、DMA 控制器的两条数据总线和USB 控制器的另一条总线,两条数据总线一条用于LCD、
另一条用于以太网MAC。一般情况下没有仲裁延迟,除非出现2 个主机同时访问同一个从机的情况。
DDR 和SDR SDRAM 以及静态设备的外部存储器控制器;
2 个NAND Flash 控制器。一个支持单级NAND Flash 器件,另一个支持多级
NANDFlash 器件;
1 个主机中断控制器(MIC)和
2 个从机中断控制器(SIC),支持74 个中断源;
1 个8 路通用AHB DMA 控制器(GPDMA),可与SD 卡端口、高速UART、I2S
端口和SPI 接口一同使用,来实现存储器到存储器之间的传输;
串行接口:
-带有特定 DMA 控制器的10/100 以太网MAC;
-USB 接口支持设备、主机(遵循OHCI)或On-The-Go(OTG),带有相关的DMA 控制器,由特定的PLL 来提供所需的48MHz USB 时钟;
-4 个标准UART,带有小数波特率发生器和64 字节FIFO,其中一个标准的UART支持IrDA;
-3 个其它的高速UART,在13MHz 的主振荡器作用下可支持高达921,600bps的板内通信;所有高速UART 都提供64 字节FIFO;
-2 个SPI 控制器;
-2 个SSP 控制器;
-2 个独立的主机I2C 接口,具有标准开漏管脚。I2C 总线接口支持单主机、从机和多主机的I2C 配置;
-2 个I2S 接口,每个具有独立的输入(RX)和输出(TX)通道。每个通道可在3个管脚上独立操作,或输入和输出通道可使用4 个管脚和1 个共用的时钟;
其它外设:
-LCD 控制器支持STN 和TFT 面板,带有特定的DMA 控制器。可编程的显示分辨率高达1024×768;
-加密数字(SD)存储卡接口,遵循SD 存储卡规范版本1.01;
-通用输入、输出和I/O 管脚,包括12 个通用输入管脚、24 个通用输出管脚和51个通用I/O 管脚;
-10 位、400kHz 的A/D 转换器,带3 个管脚的输入多路复用。或者,A/D 转换器可用作触屏控制器;
LPC3250内置16KB ROM程序,从以下4个源引导:UART5,SSP0(SPI模式),EMC 静态CS0存储器,NAND FLASH。从这4个源加载程序代码到内部IRAM.
当BOOT运行时,它保留IRAM的0X0000 E000 到0X0000 FFFF为堆栈,变量和其它软件功能。如果用户程序代码超过56KB,Boot加载以后将使IRAM保留空间受到破坏,发生错误。但EMC Boot不受此56KB的限制。
Boot程序开始读SERVICE_N输入脚,(GPI_01).若为0,程序作为一个服务Boot。传送到IRAM的代码将作为一个二次程序。若为1,BOOT将照例执行到正常引导模式。
正常引导模式开始于检测SSP0的SPI存储器引导表。如果成功,代码将copy到执行区IRAM。PC跳到代码块的首地址。软件控制权交给传送的代码。如果SPI引导失败,Boot 将检测EMC的CS0静态存储器,若代码有效,存储器被配置,Bootloader跳到0XE000 0004开始执行。若EMC代码无效,Bootloader检测NAND FLASH代码是否存在,若存在,传送一个代码块到IRAM,并且跳到首地址,软件控制权交给代码。
SPI引导模式:
Bootloader首先从SPI存储器读一个32bit的确认字和32bit的下载数据长度。若确认字无效或数据长度
是0XFFFF FFFF或0X0,就意味着SPI存储器没有连接或引导代码无效。则SPI引导失败并继续下一个引导器件。
若有效,Bootloader从SPI存取器读并copy所有的数据到IRAM的0X0地址。软后Bootloader设置BOOT_MAP寄存器为1并跳到0X0地址执行加载代码。
注意:Bootloader不检查下载代码长度。一个超过56KB的代码存储到IRAM将引起不可预测的错误。
确认字:0X13579BDF
SPI FLASH/EEPROM 数据格式:
-----地址---------------------内容-----
1 0XDF
2 0X9B
3  0X57
4  0X13
5 数据长度字节0
6 数据长度字节1
7 数据长度字节2
8 数据长度字节3
9 数据字节0
.. 数据字节1
..  ..
数据长度+7  最后一个数据字节(数据长度)
EMC 静态存储引导:
Bootloader首先读SPI1_DATIN脚的值,并把它写到EMCStaticConfig0 寄存器的PB位。然后Bootloader在地址0XE000 0000读存储器宽度配置位(MW)确定存储器宽度。如果没有有效的存储器宽度,EMC 引导失败Bootloader继续下一个boot引导。否则,Bootloader写存储器宽度值到EMCStatic
Config0寄存器,然后Bootloader检查0x0地址的确认字,如果无效,EMC引导失败Bootloader继续尝试下一个引导。否则,Bootloader设置BOOT_MAP 为1,并跳转到0XE000 0004 开始执行代码。施图伦
EMC 静态存储器CS0数据格式
地址存储内容
0x13579BDm[1]
0000
0xE000
Word
0004
0xE000
Word
1
0008
0xE000
...  ...
memory
...  Last
EMC
Word
in
m表示存储器宽度,(nn位没有用,应当设为0)
m内容存储器宽度
nn00  8-bit
nn01  16-bit
nn10  32-bit
nn11 Reserved
NAND FLASH 引导步骤
经过认证的NAND Flash器件:
制造商器件名容量IO宽度制造厂代码器件代码地址周期使用0X30命令SAMSUNG K9F5608Q0B  256 Mbit  8 bit  ECh  35h    3  no SAMSUNG K9K1208Q0C  512 Mbit  8 bit  ECh  36h    4  no SAMSUNG K9F1208Q0C  512 Mbit  8 bit  ECh  36h    4  no SAMSUNG K9F1G08Q0C  1Gbit  8 bit  ECh  A1h    4  Yes SAMSUNG K9F2G08Q0C  2Gbit 8 bit  ECh  AAh    5  Yes
从NAND Flash引导时,boot代码需要出有多少页要拷贝,和NAND Flash的型号。NAND Flash的第一块或第二块的第一页包含有代码的工作信息。Bootloader试图通过读器件ID识别NANDFlash 器件.如果上表的器件被连接,Bootloader将进入传输数据从NANDFlash器件到IRAM.如果读ID命令未能识别NAND FLASH器件,Bootloader将继续查询并试图测定是否有一个有效的ICR在NANDFLASH,并用有效的ICR计算出配置信息。
引导代码读出配置为16位的MLC NAND Flash控制器第一页。这意味着只有第一个字节如word0,2,4...包含Bootloader需要的数据。
LPC3250 memory map
==================================================
FFFF
TO
0XE3FF
EMC_CS3  0XE300
0000
--------------------------------------------------
0XE2FF
FFFF
0000
EMC_CS2  0XE200
TO
--------------------------------------------------
FFFF
0XE1FF
软件设计教程EMC_CS1  0XE100
0000
TO
--------------------------------------------------
EMC_CS0  0XE000
0XE0FF
FFFF
0000
TO
==================================================
0XBFFF
TO
FFFF
0XA000
EMC_DYSC1
0000
-
-------------------------------------------------
TO
FFFF
0X9FFF
0000
EMC_DYSC0
0X8000
==================================================
FFFF
0X0FFF
IROM  0X0C00
药事管理0000
TO
石油化工装置工艺管道安装设计手册--------------------------------------------------
0X0BFF
TO
FFFF
IRAM  0X0800
0000
--------------------------------------------------
DMA 0X0400 0000 TO 0X07FF FFFF
for
dummy
space
--------------------------------------------------
中小学电教
IROM OR IRAM            0X0000 0000 TO 0X03FF FFFF
Boot Map control register (BOOT_MAP - 0x4000 4014) 复位后,位0为0,IROM 映射到地址0.
LPC3250的引导过程:
1.上电复位,从地址0X0开始运行,(所有的ARM都是这个模式)LPC3250在0地址IROM
存储器。16KB。在IROM中是一段内部引导程序。完成上述的引导过程。
2.我们选择的是NAND引导方式。程序代码存储在NAND flash中。对NAND FLASH 分
区,从0到1是一段kickstart 引导代码。从2到20是一段S1L引导代码。20以后才是应用程序。因为内部IROM的boot程序只能引导很小的一段代码到内存执行。S1L的功能比较多,程序比较大,boot不能引导起来。所以只能在这里存放一个轻量级的kickstart。
3.内部IROM先加载kickstart,然后由kickstart加载S1L到内部IRAM执行。S1L的功能
比较丰富,驱动起SD卡,SDRAM,串口,NAND FLASH,SPI口等外部设备。
4.S1L在启动过程中可以通过串口监控启动过程。没有加载用户程序之前,按任意键就会
进入命令行模式。通过help 命令可以显示S1L的所有命令。
5.S1L在延时以后加载用户程序到外部SDRAM,然后关闭外设时钟,并把PC指针跳转到
0X80000000处。需要注意的是S1L在跳转之前,关闭了所有不用的外设时钟,在应用程序中如果要使用这个外设,必须打开时钟。否则就会驱动不成功。
6.用户程序开始运行,初始化之前必须要做的一件事就是拷贝向量表。因为ARM体系规
定所有的异常向量都是要跳转到从0x0开始的一段地址空间。LPC3250引导以后,会由bootloader程序把内部IRAM 从地址0X08000000映射到0x0处。用户程序需要把SDRAM的0x80000000开始的16个字的代码拷贝到0x08000000地址处。
CODE32
AREA    vectors,CODE,READONLY
ENTRY
reset ;/* 中断向量表*/
start
IF :DEF: OUT_CHIP
DCD SNorFlahMW_16
ENDIF
LDR PC, resetAddr
LDR      PC, undefinedAddr
LDR PC, swiAddr
LDR PC, prefetchAddr
LDR      PC, dataAbortAddr
IF :DEF: IN_RAM
DCD        |Image$$ROM_EXEC$$Length| + |Image$$IRAM$$Length|
ELSE
DCD 0
ENDIF
LDR PC, irqAddr
LDR PC, fiqAddr
resetAddr DCD resetInit undefinedAddr      DCD    undefined
swiAddr DCD softwareInterruptAdd prefetchAddr        DCD    prefetchAbort dataAbortAddr      DCD    dataAbort
nouse DCD 0
irqAddr            DCD    irqHandler
fiqAddr DCD fiqHandler
//#ifndef __IN_RAM
INT8U i;
INT32U *cp1,*cp2;
cp1 = (INT32U*)reset;
// #ifdef  __OUT_CHIP
// cp1 ++;
// #endif
cp2 = (INT32U*)0x08000000;
for(i=0;i<16;i++)
{
*cp2++ = *cp1++; //copy expression }
如何烧写引导程序
1.用一根平行串口线连接板子到PC机。
2.在PC机上运行
3.选择串口后点击“打开串口”按键。
4.粉泥网
5.点击“装载Bootloader”按键,程序会弹出对话框,按照说明短接跳线,点击确定
6.
7.复位开发板或者重新上电。
8.点击“一键更新Boot“,按照提示短接跳线,点击确定
9.复位开发板,稍等一会会提示成功。
10.至此,kickstart和S1L就烧写到FLASH 中。重新启动板子,会在串口输出提示信
息。
如何烧写用户程序
烧写用户程序,需要先烧写引导程序kickstart和S1L。
1.启动Tera Term串口监控程序,其它串口监控程序如DNX,SSCOM,超级终端也可以,
但是不能从串口下载程序。
2.连接板子的串口到PC机,给板子上电

本文发布于:2024-09-21 04:25:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/397507.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   引导   存储器   地址
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议