原创 基于LPC2388移植和测试ZLGSD和ZLGFS

2010-4-4 00:08 3415 5 8 分类: MCU/ 嵌入式

这两天调试ZLGSD和ZLGFS,我用的是盈玉工作室的LPC2388,板子布线很好,


盈玉LPC2388 board缺点:


1.文档粗糙;


2.软件就直接用MCB2300的软件;


3.就是硬件SD卡设计比较继承了MCB2300的缺陷,没有使用insert脚和protect脚;


4.板子没有设计定位孔,不能安装支架,导致底部器件使用时易脱落;


步入正题:


1.针对YU2388板子,暂时只能使用SD模式了,由于没有insert脚和protect检测脚,所以Sdhal.c文件中修改如下:


1).解决SD卡的问题:


INT8U SdHal_CheckCard(sd_struct *sds)
{
#if 0
    if (SD_INSERT_STATUS() != 0)
        return 0;        /* 未完全插入 */
    else
        return 1;        /* 完全插入 */
#endif
     return 1;
}


INT8U SdHal_CheckCardWP(sd_struct *sds)
{
#if 0
    if (SD_WP_STATUS() != 0)
        return 1;        /* 写保护 */
    else
        return 0;        /* 未写保护 */


#endif
    return 0;


}


2).ZLGSD,ZLGFS配置我就不说了,参考ZLG的资料很多;


3).针对ZLGFS在不插卡也可以初始化成功的问题修改:


**---------------------------------------------------------------------------------------
** 修改人: songzi2018 for return value to handle error
** 日 期: 2010-04-03
**----------------------------------------------------------------------------------------
*************************************************************/
 uint8 AddFileDriver(uint16  (* DiakCommand)(uint8 Cammand, void *Parameter))
{
    uint8 i;
    uint8 *Buf;
    uint16 temp;
    uint32 temp1;
   
    if (DiakCommand == NULL)        // 参数无效退出
    {
        return PARAMETER_ERR;
    }


    if (DiakCommand(DISK_INIT, NULL) == DISK_INIT_NOT_OK)   // 底层驱动初始化不成功退出
    {
        return DISK_INIT_NOT_OK;
    }
   
    /* 重新获取逻辑盘信息 */
    for (i = 0; i < MAX_DRIVES; i++)
    {
         ......此处省略
    }


    return DISK_INIT_OK;
}


 


4).附上部分测试例子:


int SdTest(int argc, char *argv[])
{


    char buf1[4];
    char buf[20];
    HANDLE FHandle;


    /*add sd device*/
    if(DISK_INIT_OK != OSAddFileDriver(SDCammand))
    {
          dmShell("add sd device fail!\r\n");
          return EXCU_FAILURE;
    }
    else
    {
         dmShell("add sd device success!\r\n");
         //return EXCU_SUCCESS;
    }


    strcpy(buf1, "rw");
    strcpy(buf, FileName);
    FHandle = OSFileOpen(buf, buf1);
    OSFileSeek(FHandle, 0, SEEK_END);
    OSFileWrite(WritFileData, sizeof(WritFileData), FHandle);
    OSFileClose(FHandle);
    strcpy(buf, "a:\\ARM&FATS");
    OSMakeDir(buf);
    strcpy(buf, "dir2.dir");
    OSRemoveDir(buf);


    OSAllCacheWriteBack();
    OSRemoveFileDriver(0);
    return EXCU_SUCCESS;


}


运行结果:


 


 


点击看大图


 


附上ZLGFS&ZLGSD,仅供学习,不负任何责任;


https://static.assets-stash.eet-china.com/album/old-resources/2010/4/4/643f8afd-36f3-4dc1-9029-451c5e979302.rar

文章评论3条评论)

登录后参与讨论

用户1628221 2011-4-23 17:56

不好意思,由于近来工作原因和加班,很少上博客了,zlgfs和LPC2388的结合,说白了就是做sd卡的驱动,然后结合ucos就可以,说的简单,其实真正想让它稳定的融入你的项目,那就需要不断的测试,由于zlgfs在读写时长时间关中断,对实时性影响较大,我现在对fatfs比较感兴趣,下一个项目准备使用,建议你参考一下

用户304989 2011-3-30 08:56

楼主,我真的遇到问题,是关于LPC2388和ZLGFS的结合的???

用户304989 2011-3-4 20:35

楼主,我也在研究2388的sd卡,有问题可以问你吗,我的qq1002216652
相关推荐阅读
用户1628221 2013-05-19 22:00
嵌入式系统软件优化方法(转载)
  出处: http://www.cnblogs.com/ljf181275034/archive/2011/09/21/2184521.html 嵌入式系统由于受功耗、成本和体积等因...
用户1628221 2012-08-15 20:24
基于lwip的TCP客户端同时连接双服务器问题
问题背景: 最近项目使用到lwip,需要作为客户端的设备同时连接两个服务器,连接成功后与其交互数据。 问题提出: 程序开始运行时,首先连接服务器1,连接成功后等待500ms后连接服务器...
用户1628221 2011-04-23 18:22
程序死在Freertos的vListInsert函数内for循环处的解决方法
近来项目需要使用FreeRTOS和Lwip以及can, 开发平台:LM3S8962/9B96 os版本:FreeRTOS6.1.0 lwip版本使用1.3.2   现象:移植完毕后,程序运行一会,网络...
用户1628221 2011-01-17 22:14
关于移植根文件系统时([\u@\h \W]\# )的处理方法(转)
作者:曹忠明,华清远见嵌入式学院讲师。 我们经常用busybox生成根文件系统,可是根文件系统起来以后命令行提示符只有一个“#”号,没有像linux发行版那样是[user@hostname curre...
用户1628221 2010-03-22 22:52
LPC2388经验总结之FastGPIO
最近在使用LPC2388开发产品,连开发板上的LED灯都闪不起来,问题如下:#include "config.h" #define BEEP   (1 << 27) // P0.7控制蜂鸣...
我要评论
3
5
关闭 站长推荐上一条 /2 下一条