分类:
2008-12-20 01:21:55
Dm642启动制作与映像
一、原理与概述
二、复位启动与引导说明
Cpu 引导1K
三、引导代码与说明
1K引导4K
四、内存初始化以及简单文件启动
4K
五、启动结构与配置说明
六、启动1K代码说明
七、启动4K代码说明
八、sram运行说明
九、SDram运行说明
十、制作向导与应用
一、原理与概述
配置Dm642为EMIF启动,即设置 A22,A21 为有效,即1K拉高 。Cpu 上电复位后,默认配置Emif Ce0 Ce1 Ce2 Ce3 均为 8位同步存储,内部sram为地址模式0X00000000~0X3FFFF, 然后开始自动读取 0X90000000 处 1Kbyte 的代码到 内部Sram 0X00000000 ,然后跳转到 内部Sram 0X00000000处开始执行代码。
0x00000000的1K代码 (简称Boot_1K)主要任务是继续读取0X90000000,的引导代码,并且跳转执行。本设计中我们引导了0X90000000处 4K代码到 0X0003F000,并且调转到0X0003F100处。
0X0003F000的4K代码 (简称Boot_4K),则负责将 SDRAM初始化,IO初始化,并且再次引导启动代码到指定地址。其中我们使用了BootConfig结构体存放了启动初始化配置参数以及启动引导的代码与目标地址。
至此引导过程全部完成。
Boot4K为 Boot1K+Boot4K源代码。
BootLoadVersionMgr为VC项目, 产生Boot4K的映像(8,bin格式)
FlashTool为执行烧写的PC程序
注意问题:
1、 读写速率
a) 启动时外部存储使用 EMIF的时钟(设计中采用150M有效时钟, A20 ,A19),读取操作速度为外部时钟 频率/ (RDSETUP * RDSTRB) ,
本设计中EMIF采用150M, 所以Flash操作速率150M / (1111 11 1111 ) ~= 150K ,Flash读写速度一般都大于1M,因此CPU的启动基本不会有问题。
CE2 (0X100 ) ,对应地址0X90000000~ , 8 bit | ||||||||
WRSETUP | WRSTRB | WRHLD | RDSETUP | TA | RDSTRB | MTYE | WRHLDMSB | RDHLD |
1111 | 11 1111 | 11 | 1111 | 11 | 11 1111 | 0000 | 0 | 011 |
2、 上电复位
由于CPU启动需要约200CLOCK时钟周期, 因此在时钟同步完成 时候持续200*mms 即可复位处理器(Reset置高)约为1ms。实际中考虑按键等因素,复位匹配 为 4.7K上拉, 1K下拉, 1uf 复位电容即可。
3、启动默认配置 为 Ce2 0X90000000 为8 bit 同步存储,内部Cache 禁用 ,地址0X0000000 ~0X3FFFF 为可写可读 高速Sram.本设计为 300M
CPU引导完成后交付程序执行
3、 引导失败可能由于 Flash的地址、数据线连接失败,可以采用示波器查看以下信号
1、 CE2 是否有一个有效(---___---)
2、 ADDR[10..0]是否出现波形 —--
3、 DATA[7..0]是否出现波形
4、 FLASH_R是否有一个有效(---___---),要同步CE2
5、 通过仿真器察看 0X90000000地址的数据是否正确(确保数据线正确)
6、 通过仿真器察看 0X90000000~0X90000400数据是否正确(确保地址线正确)
二、复位启动与引导说明
Boot_1K 主要功能 将Boot_4K调入到Sram
以下参看代码(main.c):
void Init() ;
#pragma CODE_SECTION( c_int00,".BOOT_ENTRY_00000")
//将代码c_int00定位在初始位置
// BOOT_ENTRY_00000 : origin = 0x03F000, len = 0x000040
//.BOOT_ENTRY_00000 : {} > BOOT_ENTRY_00000
void c_int00()
{
&n
chinaunix网友2009-10-26 22:18:25
您好!关于这篇文章,您给的原文已经找不到,我在这里也看不到全文。能否Email一份给我?zhh.cui@gmail.com,谢谢!