element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Avnet Boards Forums
  • Products
  • Dev Tools
  • Avnet Boards Community
  • Avnet Boards Forums
  • More
  • Cancel
Avnet Boards Forums
Software Application Development SD Card example design using standalone?
  • Forum
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Avnet Boards Forums to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 20 replies
  • Subscribers 331 subscribers
  • Views 4394 views
  • Users 0 members are here
Related

SD Card example design using standalone?

Former Member
Former Member over 12 years ago

Hello folks,

Quick question:  Is it possible to do read/writes to an SD card using standalone (bare-metal) OS? 

I tried building a Zynq-based SDK project with a standalone BSP + xilfatfs.  However when I do so I get this error in SDK:

ERROR:EDK:3900 - issued from TCL procedure "::sw_xilfatfs_v1_00_a::xilfatfs_drc"
   line 15
   xilfatfs () - Sysace HW module not present or not accessible from this
   processor. FATfs cannot be used without this module

So my guess is, standalone OS doesn't have libraries for SD/MMC support...

I know the typical flow is to use U-boot/Linux, but my application will be *dumb* simple and U-boot/Linux would be unnecessary overhead. 

The application will simply move a file from SD card over to memory, and buffer the data via GPIOs to an external device.

Thanks,

Eddie

  • Sign in to reply
  • Cancel
  • Former Member
    0 Former Member over 12 years ago

    Eddie,

    Here is a great thread from the Xilinx forums talking about doing exactly what you would like to do (except on a MicroBlaze processor, however the flow will be very similar).

    http://forums.xilinx.com/t5/EDK-and-Platform-Studio/XPS-SPI-Core-and-SD-Card/td-p/173580

    Let me know if that helps, and if not we can go through it step by step.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • zedhed
    0 zedhed over 12 years ago

    Hi Eddie,

    Tim makes a great suggestion above.

    I just wanted to add that using only U-Boot may also be an option to look at as well.  There are mechanisms built into U-Boot for reading FAT file systems.

    Another option to look at, if your code is compact enough, is the FSBL.  There are mechanisms in FSBL BSP for reading from the SD card FAT file system.  Plus you have the source code available to you for modification.

    Going to either of these routes will give you some nice APIs to work with but still keep you at a very low level of complexity when it comes to writing into the PL hardware address space.

    Regards,

    -Kevin

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago

    Thank you both folks.  I'll review and get back to the thread with my findings.  Thanks again!

    Eddie

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago

    I'm currently working on SDCard access for my real-time operating system, which is based on FreeRTOS. Unfortunately there seems to be little to no support from Xilinx for doing this.

    The other problem is that there really isn't much useful information for handling SD cards using the SDIO protocol. (SPI mode there is a lot of documentation from hobbyists etc, as seen from the provided link).

    There are the SDHCI simplified specs, which are useful, but don't seem to provide all the information you need.

    Anyway, fortunately there are a few reference drivers you can look at for help.

    Obviously there's linux, which provides the most fully featured driver possible, and its pretty complex. As mentioned earlier I'd avoid this unless you have to.

    Also the raspberrypi is using an SDHCI controller, similar to that in Zynq.

    See:
    https://github.com/jameswalmsley/rpi-boot/blob/master/emmc.c

    They seem to have full read access to the card, and from that write access should be trivial.

    In anycase, I shall have my fully featured driver ready in 2/3 weeks from now (hopefully). So checkout:
    https://github.com/jameswalmsley/bitthunder/

    The source will be found under: drivers/mmc/host/sdhci.c

    Hope this helps someone.

    James

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago

    Hi Guys,

    I mentioned I was working on an SDCard driver.. Well its now working.

    See http://github.com/jameswalmsley/bitthunder/
    Look under drivers/mmc/sdcard.c and drivers/mmc/host/sdhci.c

    Also the Xilinx FSBL provides a rather primitive driver example, but
    should help anyone trying to write their own driver.

    Hope this helps,

    James

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to Former Member

    Hi James. I saw your website, it looks great.
    I am using a V707 Virtex 7 board with Xilinx's XPS with an AXI bus, and I'm attempting to access the SD card.
    Do you know if your code would work with my project, and if so, how I might go about implementing this?
    My partner and I are both new to XPS/FPGA development, and our research professor assigned us this project, but we're pretty much clueless :P.
    Chase

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to Former Member

    Hi all! I'm working on SD driver for eCos and have problems with write operation. I've created this topic on Xilinx forum, but still didn't get any reasonable answer

    http://forums.xilinx.com/t5/Embedded-Development-Tools/Zynq-SD-write-operation/m-p/314123

    I investigate your version of SD driver, but didn't find write operation too(( I just found return 0. Did you work on SD write op for Zynq ?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago in reply to Former Member

    I am also working on the SD write, do you have already find the solutions for this? Thanks!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 12 years ago

    I was working on this topic for the last week and I have a solution. Not perfect, but Iu2019m able to write and read from SD card and use the FATFS. Since I'm working on proprietary firmware I can't simply give you the code, but I can help:
    The FSBL app from Xilinx implements Chanu2019s FAT FS in readonly mode. This is good start point.
    You will have to update ffconf to fill your needs.
    Update mmm.c :
    u2022tadd definitions for CMD24 (single write) and CMD25 (multiwrite)
    u2022tIn the make_command  function update CMD24 & CMD25 (both R1 resposes and remember, you are sending DATA)
    u2022tIn send_cmd only CMD18 is implemented. Change if/else to switch and add CMD24/25 cases. Take a look on ug585/appendix b.27. Transfer command register is explained in detail.
    u2022tThere is a bug in disk_status function. Write_Protect_Switch is 0 when write protected, not 1! Change it. Take a look on ug585/b.27 Present_State register, if you donu2019t understand.
    u2022tChange disk_ioctl. STM32F4xx_SDIO_Example was great help.
    u2022tCreate disk_write function. Again STM32F4xx_SDIO_Example shows how to do it.
    Guys Iu2019m sorry, but I simply canu2019t give you codes. Hope that this helps.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Former Member
    0 Former Member over 11 years ago in reply to Former Member

    Hi thank you for your step by step instructions.
    Could you give me maybe a keyword or an additional hint what to look at in STM32F4xx_SDIO_Example.

    I used the FSBL template as a start. After removing most of the code and include files ADMA2 file transfer suddenly stopped working.

    After a while I figured that I have to call the InitPcap(void) function in order to fix the problem.

    int InitPcap(void)
    {
    tXDcfg_Config *ConfigPtr;
    tint Status = XST_SUCCESS;
    tDcfgInstPtr = &DcfgInstance;

    t/*
    t * Initialize the Device Configuration Interface driver.
    t */
    tConfigPtr = XDcfg_LookupConfig(DCFG_DEVICE_ID);

    tStatus = XDcfg_CfgInitialize(DcfgInstPtr, ConfigPtr,
    tttttConfigPtr->BaseAddr);
    tif (Status != XST_SUCCESS) {
    ttreturn XST_FAILURE;
    t}

    treturn XST_SUCCESS;
    }

    Can someone please explain why this is needed? The communication/configuration to and from the card worked fine (responses in accordance with sdc physical spec etc.) but the ADMA2 transfer did not.

    Thanks in advance

    regards,
    Christian

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube