### 基于S3C2440丛SD卡启动WinCE(或其它程序)的实现 ###【恢复】
系统上电后,如果发现SD卡中有boot.ini文件,便按boot.ini文件中的指定参数运行,否则继续启动原系统:http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_479641.jpg
(原文件名:IMAG0118.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_479642.jpg
(原文件名:IMAG0120.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_479644.jpg
(原文件名:IMAG0108.jpg)
本贴被 liuweiele 编辑过,最后修改时间:2008-11-02,23:18:43. 大文件好难上传啊~速度好慢~ 都挺牛! 要是偷偷把WIN-CE传上来就更好了。呵呵! 呵呵,真的很好很强大!! http://www.ourdev.cn/bbs/emotion/em040.gif 爱死你了 赞同wenming 的意见.
有时候理论往往是不现实的.
实践才最有说服力. 【85楼】 wenming
恣意臆断出来的结论?我就是做矿上的工控出身的.我反而怀疑你是不是做电路的?还有,如果在要求高稳定的场合,我劝大家还是选择NOR.NAND最好不要用.
算了,我不想与你争吵.客户对我们的认可才是最重要的.我们所有的经验是从客户的反馈那里来的.不是随便猜测的.我来这个坛子里又不是做老师的,我说的话,你可以不听.但你吃过亏之后会就会明白的.
人的成长总要付出一些代价的.但也没有必要撞到头破血流才罢休.有时候还是多听一下别人的意见好.
最后一句,电路的稳定性不是靠忽悠出来的,而是需要付出心血.
============================
貌似我一直在说关键数据用DataFlash是最好的选择吧?DataFlash内部逻辑采用NOR结构,得到较高的数据安全性;外部接口采用SPI,得到较高的传输稳定性,因此非常适合操作系统、应用程序和关键数据的保存,同时DataFlash的容量范围和普通NOR基本一致
但是类似图片、日常日志等非关键数据,如果也要用NOR来保存的话,就算不谈价格,容量也肯定跟不上(国内我还没见过64MB以上的NOR),就算容量同样不是问题,写入次数和写入速度也不可能够用;这种情况下,显然只有NAND结构的存储器适合使用,但普通的NAND芯片没有内置纠错,并且一旦关键块出现问题,替换起来也很辛苦,这种情况下,两片互为镜像使用的工业级SD卡并不是错误的选择
更何况,【两片互为镜像使用的工业级SD卡用于保存大量的历史数据及界面图片】这种用法,我在我做过的高压电塔和烟厂的项目都用过,至今没有发现问题
至于你说的情况,一方面,矿山应用的环境确实在工业环境中也算比较恶劣的;但另一方面,恐怕你也没有尝试过【两片互为镜像使用的工业级SD卡】的使用方案吧……如果拿普通电脑市场十几块钱1G的SD卡用在恶劣环境下,然后失败了就归罪于SD卡本身或电路的设计者,未免太偏颇了吧? 恣意臆断出来的结论?我就是做矿上的工控出身的.我反而怀疑你是不是做电路的?还有,如果在要求高稳定的场合,我劝大家还是选择NOR.NAND最好不要用.
算了,我不想与你争吵.客户对我们的认可才是最重要的.我们所有的经验是从客户的反馈那里来的.不是随便猜测的.我来这个坛子里又不是做老师的,我说的话,你可以不听.但你吃过亏之后会就会明白的.
人的成长总要付出一些代价的.但也没有必要撞到头破血流才罢休.有时候还是多听一下别人的意见好.
最后一句,电路的稳定性不是靠忽悠出来的,而是需要付出心血.
本贴被 wenming 编辑过,最后修改时间:2008-12-16,08:16:05. 【82楼】 liuweiele
如果是在恶劣的工业控制环境下,关键数据和代码尽可能不要贮存在NandFlash类型的Memory中,既然使用了外扩SDRAM,用NorFlash会更合适.去年做过一个项目,最开始使用NandFlash,在做4000V的ESD测试中,大约有1/5的机率造成数据丢失;后来改用NorFlash,问题解决!
=============================
1、DataFlash内部采用NOR结构,避免了NAND常见的块错误,外部采用SPI接口,避免了常规NOR繁琐的总线连接,唯一的缺点是速度偏慢,但对于大多数应用来说不影响使用
2、外扩一片SDRAM是一回事,外扩SDRAM同时还要外扩NOR则是另一回事,总线上挂的东西越多,对工业环境的适应力就越差 这个应该“酷”了 mark
以后再回来看看 记性不好,留个脚印 如果,系统没有检测到SD卡或boot.ini文件参数配置错误,将会继续运行原系统:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_479782.jpg
(原文件名:IMAG0137.jpg)
本贴被 liuweiele 编辑过,最后修改时间:2008-11-02,22:43:55. 运行在S3C2440上的目标文件(基于东华4.3寸TFT LCD( 480x272 )):
点击此处下载 ourdev_479721.rar(文件大小:176K) (原文件名:S3C2440目标文件.rar)
本贴被 liuweiele 编辑过,最后修改时间:2008-11-02,22:31:22. 主程序:
点击此处下载 ourdev_479701.rar(文件大小:2K) (原文件名:S3C2440_Main.rar) int FAT_RunFile(char *ini_dir)
{
U32 a,b,i;
U8 *Buf;
U8 *LCD_Buf;
char str_buf;
char dir_buf;
char *Str=str_buf;
char *dir=dir_buf;
struct FileInfoStruct File_Info;
////
i=FAT_OpenFile(ini_dir,&File_Info);
if(i==1)
{
Uart_Printf(0,"FAT Load '%s' Err!\n",ini_dir); //文件打开失败.
// GUI_LabelPrintf(40,LCD_YSIZE>>2,LCD_XSIZE-40*2,40,RGB565(31,0,0),RGB565(24,48,0),RGB565(10,20,10),Center,Font_ASC_8_16,"Open '%s' Err!",dir);
// Uart_Getch(0);
return 0;
}
////
Uart_Printf(0,"FAT Load '%s' Size=%d,Start Cluster=%d.\n",File_Info.Size,i);
////
Buf=malloc(File_Info.Size);
if(Buf==0)
{
Uart_Printf(0,"Load File:'%s';APP RAM Err!\n");
return 0;
}
////
FAT_DirLoadFile(ini_dir,Buf); //加载 ini文件.
a=0;
while(1)
{
if(Buf=='\n') break;
if(Buf==' ') break;
dir=Buf;
a++;
}
dir[--a]='\0';
////
for(a=0;Buf!='@';a++);
a++;
b=0;
while(1)
{
if(Buf=='\n') break;
if(Buf==' ') break;
if(b==8) break;
////
Str=Buf;
}
Str='\0';
i=strtol(Str,NULL,16) ;
Uart_Puts(0,dir);
Uart_Printf(0," Read RAM=%X\n",i);
a=FAT_OpenFile(dir,&File_Info);
if(a==1)
{
Uart_Printf(0,"Open '%s' Err!\n",dir);
Uart_Printf(0,"Start Cluster=%d\n",a);
return 1;
}
////
Uart_Printf(0,"Size=%d;Start Cluster=%d.\n",File_Info.Size,a);
FAT_DirLoadFile(dir,(U8 *)i);
Uart_Printf(0,"Start Run to:0x%08X.\n",i);
Run_Address(i);
return 1;
} void Find_SystemFile(char *dir)
{
struct FileInfoStruct File;
////
/*
if(!SDI_Init()) return;
if(FAT_Init()) return;
*/
if(FAT_OpenFile(dir,&File)==1)
{
Uart_Printf(0,"Open '%s' Err!!!\n",dir);
return;
}
////
GUI_LabelPrintf(40,(LCD_YSIZE>>1)-40,LCD_XSIZE-40-40,60,RGB565(28,56,0),RGB565(0,0,0),RGB_Tran,Center,Font_ASC_8_16,"找到系统文件:'%s'.系统将丛SD卡启动,请等候...",dir);
FAT_RunFile(dir);
////
}
本贴被 liuweiele 编辑过,最后修改时间:2008-11-02,22:48:51. boot.ini文件内容:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_479681.jpg
(原文件名:25.jpg) SD卡中的WINCE映像和自启动配置文件:
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_479661.jpg
(原文件名:23.jpg)
http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_479662.jpg
(原文件名:24.jpg) mark.不懂arm 这个4.3寸LCD也是个好东西 2440是个好东西 顶起来 Re:【26楼】 teencole 茶叶and可乐
不要改bootloader,只要提供原来的nk.nb0就行. hao 强.不懂,请问要不要改bootloader? 留个记号,有空研究一下 这个GUI目前还不是很完善,暂时不支持多任务.
本贴被 liuweiele 编辑过,最后修改时间:2008-11-03,14:42:32. 后面的那个GUI很漂亮,要是能公布源码多好。 等以后有时间了,再弄个Linux玩玩../emotion/em020.gif 很好很强大 【17楼】 hexenzhou
这个不需要另外的nboot. 谢谢,虽不懂,帮顶 记号 这个不用修改NBOOT吗? 谢谢。 呵呵,本人在本网站也获得了不少的好资料,理应是也应该贡献一点../emotion/em025.gif
本贴被 liuweiele 编辑过,最后修改时间:2008-11-03,00:38:13. 太酷了 mark Cool !
谢谢liuweiele 的无私贡献。./emotion/em108.gif hao 对于9G20我以前考虑过的方案是2~8MB NORFlash+16MB SDRAM的方式,当然也从NOR启动,但后来放弃了.目前可以重新考虑.至于LCD的问题,受EPSON委托,测试他LCD控制器的性能,或者说是给他做的一个插件.同时谢谢各位的建议. 如果是在恶劣的工业控制环境下,关键数据和代码尽可能不要贮存在NandFlash类型的Memory中,既然使用了外扩SDRAM,用NorFlash会更合适.去年做过一个项目,最开始使用NandFlash,在做4000V的ESD测试中,大约有1/5的机率造成数据丢失;后来改用NorFlash,问题解决! 个人觉得,做MCU核心板,最忌讳的就是总线外引,类似9263这种双外部总线的器件还算好点,普通单外部总线的东西,一旦需要总线外引,那要折腾的可就不是一点两点了……等长、电容和阻抗控制、锁存器……而且一旦出了问题,整个系统就准死无疑了……所以如果你的系统确实需要LCD接口,请认真考虑用9263而不是9G20,毕竟扩展串口很容易,扩展LCD就实在是给自己找麻烦了…… 【78楼】 Embedtech 陇东大少 版权的问题到是没有,关键的问题是目前图纸还没设计完,还没到拿出来让大家挑毛病的时候。MobileSDRAM我考虑过,但没有用的原因是工业级的不好定货;目前EPSON公司给了几片S1D13513,在9G20的底板上给他驱动,还在画图中。==========================1、普通SDRAM也无所谓,不过尽量用BGA的吧,反正主片已经是BGA了,多一片无所谓,而BGA封装其实比TSOP封装更能耐受恶劣环境的,另外需要再重申的就是,无论如何,能用16位就尽量不要用32位2、S1D13513…………你不如索性把CPU换9263算了…… 【77楼】 wenming 如果在工业现场使用SD卡,或者MICROSD卡,那家伙肯定是傻瓜.===================然而就我的使用经验,这东西其实很可行,而且比焊接式的NANDFlash更好用当然,有几条必须要保证的1、卡座用全金属弹出式卡座,同时卡座下方做地线敷铜并与卡座外壳连接2、品牌选对3、可能的情况下,用两片卡做RAID-14、不能用SD卡作为根文件系统,并在驱动程序中增加在必要时对SD卡进行复位的代码5、无论怎么说,工业现场也是有种种不同情况的,强干扰环境算一种工业现场,而高温或剧烈温度变化也算一种工业现场,显然,SD卡对前者的适应能力远高过后者,更何况,SD卡也同样有适应宽温度范围的工业级产品,所以认为“在工业现场使用SD卡,或者MICROSD卡,那家伙肯定是傻瓜”的人,恐怕是根本没经过实践就恣意臆断出来的结论吧……
本贴被 watercat 编辑过,最后修改时间:2008-12-15,23:21:40. 請問你用的2440板子是不是mini2440? 是Mini2440 以下蓝色文字由版主:kingofkings 于:2009-03-06,00:43:35 加入。<font color=black>请发贴人注意:本贴放在这分区不合适,即将移走
原来分区:AVR (原ourAVR.com) 技术论坛
即将移去的分区:ARM技术论坛
移动执行时间:自本贴发表0小时后
任何的疑问或咨询,请可随时联系站长。谢谢你的支持!</font> 东西虽好却无源码。 mark,哈 不知【51楼】 superyongzhe 最后的骑士 所说的源码是指.....? 这功能很简单亚
我们公司产品上用的就是差不多的技术。
其实没啥大的难度。
usb sd 更新系统。boot 超过4k也很容易实现。 是的,就和普通的Nboot原理差不多~ 单个boot load 超过4k有个小技巧,计算自身size 把自身完整考到RO 的地址。
再加上 3星给的sample code 实现 usb 下载
再移植1个sd 卡fat 的功能。
好像现在这样功能的boot都不愿意公开了。
过段时间,我公开1个算了。 mark 留个爪印 留个爪印 向楼主学习 【60楼】 lisuweizhai ,目前还在弄OS吗? 有问题:
1、支持的SD FS是?
2、bios能从nand启动么? 我们产品
boot 支持fat16 fat32
能从nand boot fat12不支持? 支持 FAT12就完全没必要做了 mark下收藏 慢慢学习 mark 前不久研究出了一个更有意思的玩法,等我有空了再发贴公布. ./emotion/em025.gif mark 不错 这个黄金圣斗士很牛逼啊!!!!!!!! LS也认识Gold Saint? 处女座的沙加,睁开眼睛的时候基本上就是对手见哈迪斯的时候了
号称是最接近神的人了
LZ着实强悍,pfpf LS是圣迷! hoho,谢谢:)
动漫的爱好者,现在无聊还会看看圣斗士
说不定哪一天粘了雅典娜的血,就不用奋斗了,O(∩_∩)O哈哈~ 哈哈,mark,在学习arm 呵呵~~这下有着落了!
我还愁我的2440 SD卡启动哪找去,,拿来主义
不过刚才看了下,代码不全,文件系统呢?
我也在整BOOT,用友善的BOOT然后加上UCGUI的一些功能就OK了!
楼主源码贴全啊,!就给了主程序。
你用的是自己写的GUI还是移植过来的?
楼主用的CE5.0还是6.0的?
我用的是6.0试用版不知道试用版跟正式有什么不同。。 牛人啊,标记先! S3C2450可以直接丛SD卡启动 系统上电后,如果发现SD卡中有boot.ini文件?
请问有什么前提吗?如在哪里烧什么代码? 楼主你好,能否把你的fat16文件系统和sd卡驱动的代码也共享一下啊,谢谢了。xinxizheng@163.com 标记中 这个太强了,很有意思。收藏了。 很好,下次研究 发现的楼主的sd启动方式不识别SDHC规范的高速卡? 不是SD卡驱动程序的问题,是FAT文件系统上有个小Bug. 在楼主的代码里,
Chk_SD_OCR 这个函数只识别 (rSDIRSP0==0x80ff8000) ,不识别 SDHC的 0xc0ff8000,所以sdhc的卡这个boot不工作,fat文件系统没有仔细研究,不过在sd规范的sd卡上好像可以用。 这个我倒没太注意,因为一直都在使用常规SD卡. 【88楼】 lstone
你SD卡启动后在WinCE找不到SD卡这个问题怎么解决的? 回答【90楼】 52robot
在ce的sd卡驱动里修改sd的寄存器SDICON,正常应该是0x0,用这个boot用sd卡启动是0x10 ,改回去0x0 就行了。
如果有弟兄搞过sdhc规范的sd启动或者升级的话指点一下。 记号 先mark 楼主你好!我也在研究用SD卡启动,但是我不明白的一点:你的这个S3C2440_Main.c的代码在加电时怎么被执行起来的?因为执行起来才能达到找SD卡中的Boot.ini文件,根据ini文件找nb0文件,去启动它啊?
也就是说,CPU加电是,它开始执行的是什么,怎么到你这个S3C2440_Main.c的Main()里的? 牛人,太帅了。 牛!mark 好 有时间也学习 mark mark
页:
[1]
2