基于S3C2440丛SD卡启动WinCE(或其它程序)的实现

介绍了一种基于S3C2440处理器的系统通过检测SD卡中的boot.ini文件实现自启动配置的方法。若检测到该文件则按其参数运行,否则继续启动原系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【楼主位】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
系统上电后,如果发现SD卡中有boot.ini文件,便按boot.ini文件中的指定参数运行,否则继续启动原系统:


 (原文件名:IMAG0118.jpg) 


 (原文件名:IMAG0120.jpg) 


 (原文件名:IMAG0108.jpg) 


本贴被 liuweiele 编辑过,最后修改时间:2008-11-02,23:18:43.
 
2008-11-02,22:05:43
资料 邮件 回复 引用回复 编辑 删除
【1楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
SD卡中的WINCE映像和自启动配置文件:


 (原文件名:23.jpg) 


 (原文件名:24.jpg) 
 
2008-11-02,22:13:22
资料 邮件 回复 引用回复 编辑 删除
【2楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
boot.ini文件内容:


 (原文件名:25.jpg) 

 
2008-11-02,22:19:13
资料 邮件 回复 引用回复 编辑 删除
【3楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
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.
 
2008-11-02,22:20:53
资料 邮件 回复 引用回复 编辑 删除
【4楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
int        FAT_RunFile(char *ini_dir)
{

        U32                a,b,i;
        
        U8                *Buf;
        U8                *LCD_Buf;
        char        str_buf[1024];
        char        dir_buf[1024];
        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[a]=='/n')        break;        
                if(Buf[a]==' ')                break;
                
                dir[a]=Buf[a];
                a++;
                
        
        }

        dir[--a]='/0';
        ////
        

        for(a=0;Buf[a]!='@';a++);
        
        a++;
        b=0;
        while(1)
        {
        
        if(Buf[a]=='/n')        break;
        if(Buf[a]==' ')                break;
        if(b==8)                        break;
        ////
        Str[b++]=Buf[a++];
        
        }
        Str[b]='/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;

}
 
2008-11-02,22:22:49
资料 邮件 回复 引用回复 编辑 删除
【5楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
主程序:
点击此处下载 ourdev_479701.rar(文件大小:2K) (原文件名:S3C2440_Main.rar) 
 
2008-11-02,22:25:00
资料 邮件 回复 引用回复 编辑 删除
【6楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
运行在S3C2440上的目标文件(基于东华4.3寸TFT LCD( 480x272 )):

点击此处下载 ourdev_479721.rar(文件大小:176K) (原文件名:S3C2440目标文件.rar) 


本贴被 liuweiele 编辑过,最后修改时间:2008-11-02,22:31:22.
 
2008-11-02,22:31:01
资料 邮件 回复 引用回复 编辑 删除
【7楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
如果,系统没有检测到SD卡或boot.ini文件参数配置错误,将会继续运行原系统:


 (原文件名:IMAG0137.jpg) 



本贴被 liuweiele 编辑过,最后修改时间:2008-11-02,22:43:55.
 
2008-11-02,22:43:28
资料 邮件 回复 引用回复 编辑 删除
【8楼】 thriller
积分:501
派别:
等级:------
来自:
记性不好,留个脚印
 
2008-11-02,22:54:35
资料 邮件 回复 引用回复 编辑 删除
【9楼】 yin66

积分:222
派别:
等级:------
来自:
mark

以后再回来看看
 
2008-11-02,22:59:38
资料 邮件 回复 引用回复 编辑 删除
【10楼】 miraclelife 麦诺克科技

积分:925
派别:
等级:------
来自:山东 蓬莱
这个应该“酷”了
 
2008-11-02,23:01:13
资料 邮件 回复 引用回复 编辑 删除
 
↑↑↑↑↑↑↑↑↑↑↑↑
抱歉本贴的回复数太多,为了减轻网络流量,只显示帖子正文的前后各10个回复。本贴的正文内容中间隐藏了89个回复。你需要 点击此处 才能查看全部内容。
对为你带来的访问不便表示歉意。不过我们仍会坚持即使没有登录,仍能共享我们网站的所有资料。你没有 登录后就能消除这个访问上的不便(可增加到显示60个回复)。
如果你是新用户请先 注册。注册是免费的,并且手续简单只需要填写用户名与口令。
↓↓↓↓↓↓↓↓↓↓↓↓
 
【100楼】 zl308424
积分:25
派别:
等级:------
来自:
楼主,我用了你的sd驱动和文件系统每次读文件最多读130个字符,写文件就每次写2个。和我自己用的sd驱动+FatFs效果一样,试了很多次都这样,实在是不解啊...
 
2010-02-06,01:28:32
资料 邮件 回复 引用回复 编辑 删除
【101楼】 fy024 梦兰

积分:522
派别:
等级:------
来自:云南*昆明
mark
 
2010-02-06,09:44:10
资料 邮件 回复 引用回复 编辑 删除
【102楼】 zl308424
积分:25
派别:
等级:------
来自:
很久不见楼主人啊。请问坛子里还有人用过2440 SD+文件系统的吗?为什么我的出现这么怪问题。
 
2010-02-07,18:50:39
资料 邮件 回复 引用回复 编辑 删除
【103楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
回复【102楼】zl308424 
-----------------------------------------------------------------------

什么问题?
 
2010-02-07,22:15:27
资料 邮件 回复 引用回复 编辑 删除
【104楼】 zl308424
积分:25
派别:
等级:------
来自:
一开始读文件,文件里字符超过130个arm会死机,写文件每次只能写2个字符。现在知道为什么每次最多读130个字符了,原因是我用了Uart_Printf函数打印读到buff的数据,Uart_Printf里只申请了128byte空间,数组越界就死机了。现在搞不懂为什么写文件每次只写2个字符,写文件时文件系统也没错,arm也很正常。
 
2010-02-08,01:26:59
资料 邮件 回复 引用回复 编辑 删除
【105楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
什么系统?
 
2010-02-08,10:35:23
资料 邮件 回复 引用回复 编辑 删除
【106楼】 zl308424
积分:25
派别:
等级:------
来自:
裸机程序,TQ2440+MDK+SDIO+FatFs
 
2010-02-08,11:18:19
资料 邮件 回复 引用回复 编辑 删除
【107楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
这问题不好猜测~~~

本贴被 liuweiele 编辑过,最后修改时间:2010-02-08,13:03:24.
 
2010-02-08,13:03:02
资料 邮件 回复 引用回复 编辑 删除
【108楼】 zl308424
积分:25
派别:
等级:------
来自:
呵呵,问题找到了。的确不好猜,我每次res = f_write(&file, T_buffer, sizeof(T_buffer), &bw); 就写几个字符,换成
res = f_write(&file, T_buffer, 300, &bw); 就写300个字符。是指定写多少数据这有点问题。现在读写都正常了,呵呵。
 
2010-02-08,13:10:44
资料 邮件 回复 引用回复 编辑 删除
【109楼】 liuweiele Liuwei

积分:687
派别:
等级:------
来自:
你的 T_Buffer是指针变量?
 
2010-02-08,13:46:26
资料 邮件 回复 引用回复 编辑 删除
【110楼】 zl308424
积分:25
派别:
等级:------
来自:
恩,将sizeof换成strlen就好了。搞错一点真是害死人啊。现在文件系统没问题了,把中文字库放到sd卡里能读出来显示了。
 
2010-02-08,20:39:37
资料 邮件 回复 引用回复 编辑 删除
【111楼】 freud
积分:28
派别:
等级:------
来自:北邮
mark!
 
2010-02-12,10:56:55
资料 邮件 回复 引用回复 编辑 删除
【112楼】 RF2010 RF陈
积分:92
派别:
等级:------
来自:
点击此处下载 ourdev_547023.pdf(文件大小:141K) (原文件名:S3C2440 VS AT91SAM9261综合比较.pdf) 
 
2010-04-17,12:57:53
资料 邮件 回复 引用回复 编辑 删除
【113楼】 xzm8469105 谢钟满

积分:59
派别:
等级:------
来自:汕头
mark
 
2010-04-20,13:58:17
资料 邮件 回复 引用回复 编辑 删除
【114楼】 dubu 老 K

积分:251
派别:
等级:------
来自:杭州
mark
 
2010-04-20,16:23:18
资料 邮件 回复 引用回复 编辑 删除

 

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1709802&bbs_id=1032

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值