SD卡引导WinCE启动引发的种种有关问题
发布时间:2010-06-13 21:54:52 文章来源:www.iduyao.cn 采编人员:星星草
SD卡引导WinCE启动引发的种种问题
前几天在调试SD卡引导WinCE内核的Bootloader,功能调试成功后系统可以从SD卡启动,但是发现有以下问题:
SD卡只能工作在5MHz以下,确切的说SDIPRE的预分频值只能是13,如果换成其它频率,那么在Bootloader运行完毕跳转到内核启动地址(比如0x30200000)的时候会卡死,不知道是什么原因。这样的话从上电开机到内核初始化大约需要一分钟的时间,其中大部分时间应该是消耗在了内核拷贝的过程上。接着,内核初始化完毕以后又需要等待大约2分钟才能在LCD上看到桌面,这是为什么?我回忆了一下,如果是Nand引导的话,会事先通过EBOOT将TOC写到Nand的Block1中,启动的时候Bootloader会根据TOC的指示加载内核镜像,这样从内核初始化完毕到看到系统桌面大约2秒,不知道上面的现象是不是这个原因,如果是的话如何解决?如何在SD卡中实现?
请教各位指点~
我的SD卡容量128MB,支持的最高工作频率是50MHz(从CSD读出来的),我的程序是参照坛里一位前辈的修改的:
http://topic.csdn.net/u/20090811/16/B0924B18-F28D-41FA-8656-3450C331D40A.html
我把主要代码再贴一遍:
void xmain(void)
{
INT8U ret;
U32 j;
MMU_EnableICache();
ChangeClockDivider(3, 1);
ChangeMPllValue(127, 2, 1); //405MHZ
Isr_Init();
Uart_Init(0, 115200);
Uart_Select(0);
Delay100us(12000);
Uart_Printf("The main is running\n");
NF_Init();
ret = SD_Initialize();
if (ret == NO_ERR)
{
//初始化SD卡成功
Uart_Printf("SD_Initalize Success\n");
ret = FAT_Init();
if (ret == NO_ERR)
{
//初始化FAT成功
Uart_Printf("\nFAT Initalize Success\n");
FAT_DisDir("\\");
RunByBootFile("\\BOOT.TXT");
}
else
{
//初始化FAT失败
Uart_Printf("\nFAT Initalize error:%d\n", ret);
}
}
else
{
//初始化SD卡失败
Uart_Printf("SD_initalize error:%d\n", ret);
}
Uart_Printf("\nPress Key 'U' Enter USBMON\n");
for (j = 0;j < 10;j++)
{
Uart_Printf("*");
Delay100us(12000);
if (rUTRSTAT0 & 0x1) //UART 有数据输入
{
ret = RdURXH0();
if ((ret == 'U') || (ret == 'u'))
{
Uart_Printf("\nUSBMON\n");
Run_USBMON(); //启动USBMON
}
}
}
Uart_Printf("\n");
ret = RunImageFromNand(1, 0);
Uart_Printf("\nBoot ERROR:%d", ret);
while (1);
}
/*********************************************************************************************************
** Function name: SD_Initialize
** Descriptions: initialize SD/MMC card
** 初始化SD/MMC卡
** Input: sd_struct *sds: SD卡信息结构体 sd_struct *sds: the information structure of SD Card
** Output: 0: 正确 >0: 错误码 0: right >0: error code
** Created by: MingYuan Zheng 郑明远
** Created Date: 2006-01-09
**-------------------------------------------------------------------
** Modified by:
** Modified Date:
**------------------------------------------------------------------
********************************************************************************************************/
INT8U SD_Initialize(void) //(sd_struct *sds)
{
INT8U response[16], ret;
SD_HardWareInit(); /* 1. 初始化SD/MMC接口硬件 Initialize the hardware of SD/MMC interface */
sds.timeout_erase = 0x7fffff;
sds.timeout_read = 0x7fffff;
sds.timeout_write = 0x7fffff;
Debug_Printf("\nSD_Initialize start");
ret = SD_ResetSD();
if (ret != NO_ERR) /* 2. 发出CMD0命令复位SD卡 send CMD0 command to reset SD/MMC card */
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
管道的另一端上无任何进程
我写了一个程序,运行正常。
后来,用上了sqlite数据库,然后编译部署都正常,但在WINCE 6模拟器上不能自动运...
-
Power键点亮屏幕的问题
我在程序里面成队使用了:
PowerPolicyNotify(PPN_UNATTENDEDMODE,TRUE);
PowerPolicyNotify(PPN_UNATTEND...
-
求助一个问题:windowsmobile ipl读分区的问题
ipl通过 BP_ReadData读 ramimage 分区信息 读取的时候发现必须要偏移0xc800才能读正...
-
vs2005+DevEmul_SDK.msi后仍旧没有“armv4”选项
OS:win7
IDE:先前有装vs2010做winForm,后装了vs2005(完全安装)
装完后安装了DevEmu...
-
Win7 64位操作系统如何安装arm9开发板的usb下载驱动啊
按照教程操作,超级终端打开也连上了,但是系统貌似对SECBULK.sys SECBULK.inf...
-
嵌入式开发工具
谁用过 LAZARUS 开发过嵌入式系统 ?
------解决方案--------------------
Lazarus 做 PC 上的程序,做嵌入式可能...
-
请推荐几个wince游戏软件下载的地方
最近开始玩wince,请推荐几个好的地方,可以下载游戏,软件的.多谢拉!
------解决方案--------...
-
FAT32 与单片机
根目录下文件与目录项数从那里得
还有根目录的下一簇从哪得
不是说根目录也是一个文件吗 它的目录项在哪里
---...
-
谁可以推荐一个WinCE下的视频播放器,最好可以播放AVI、RMVB、MP3等格式,谢谢。
如题,
麻烦大家推荐一个WinCE5.0下的视频播放器,
-...
-
WinCE6的BinFS问题,100分求解
1、BinFS能不能做在IDE硬盘上?
2、要支持BinFS,bootloader要做甚?
3、BinFS能不能作为一个普通文件放到...