CAM, FreeBSD, mmccam, SDIO, Software

Implementing a MMC/SD/SDIO stack using CAM framework(Part 2)

Hi, In the next part lets look at other files which makes up the SDIO stack within mmccam framework. Please have  a look at previous part for more info: http://uditagarwal.in/index.php/2018/03/19/implementing-a-mmc-sd-sdio-stack-using-cam-framework/ mmc_sdio.c

sdio_fill_mmcio_rw_direct is basically a wrapper for CMD_52 that’s needed to read/write directly into mmc register R5. Remember that register R5 in mmc, is used for RCA(Relative card address) management. It’s right time now to talk about different command types of SD/MMC/SDIO: broadcast commands (bc), no response broadcast commands with response (bcr) (Note: No open drain on SD card) addressed (point-to-point) commands (ac), no data transfer on DAT lines…

Continue Reading

CAM, FreeBSD, Hardware, mmccam, SDIO, Software

Detailed SDIO protocol Implementation

Reference: Wikipedia, https://www.sdcard.org/developers/overview/sdio/sdio_spec/Simplified_SDIO_Card_Spec.pdf  SDIO cards are intended to provide high-speed data Input/Output on our regular sd card slot. SDIO cards are compatible with any sd card slot and will not cause any physical damage to the host if it’s not compatible with SDIO. When SDIO is plugged in an SDIO compatible host, in its early stage it is in low power mode and consumes very little current. The host identifies the SDIO card, it’s power requirement, it’s I/O capabilities, etc. If the host finds that the power requirement is manageable and there is a driver for the I/O functionality card…

Continue Reading

CAM, FreeBSD, mmccam

Implementing a MMC/SD/SDIO stack using CAM framework(Part 1)

In this blog post we will have a detailed look at all the files added/changed while implementing the MMC/SD/SDIO stack via CAM framework. We will basically discuss the commit  https://github.com/freebsd/freebsd/commit/a87c7a85be3e3727b6b08b19741b4282f942400d which aims at adding MMC/SD/SDIO stack to FreeBSD’s already existing CAM framework. So, lets start one by one with each file: mmc.h

This file presents the basic structure of the SD-Card/MMC peripheral. This structure is further used in CAM_EDT i.e CAM Existing Device Table which stores the info. of all the present devices in the CAM bus along with the queue of pending CCBs. CAM EDT is the major…

Continue Reading

CAM, FreeBSD

Understanding FreeBSD’s CAM Framework

This blog post presents a gist of Free BSD’s doc on CAM(here) and chapter 14 of the book FreeBSD device driver- A guide for intrepid. It gives an introduction to the CAM(Common access method), it’s applications, it’s working and it’s organization in FreeBSD. It is written to get myself a really good understanding of mmccam stack which is nothing but SDHC/SDIO protocols wired within the CAM framework. COMMON ACCESS METHOD CAM is a method for separating HBA adapters from storage adapters and is primarily used for SCSI. By separating these drivers it reduces the complexity of both the drivers.Furthermore, this…

Continue Reading

Hardware

Understanding SD, SDIO and MMC Interface

  TL;DR; MMC and SD-card have the same physical and electrical specifications but different software controls. They both are used as a storage device only. SDIO and SD-Combo cards, on the other hand, incorporate Input/Output functionality(like Bluetooth, Wifi, GPS, etc) without and with the storage facility respectively. So, a SD-Combo card can act as a wifi adapter along with a storage device. In this blog post, I will present a gist of the paper http://www.kaltech.co.il/pdf/Eureka_sd_wp1.pdf  (updated link). This is meant for anyone willing to understand how removable devices like sd card work and different protocols/functionalities they support. Secure Digital (SD)…

Continue Reading

Hardware, RTEMS, RTOS, Software

Building and testing RTEMS-libbsd for BeagleBone Black BSP

———————————————————————— Building and testing libbsd for BeagleBone Black BSP ———————————————————————— == Installation overview == === Initial setup === – Jump into your workspace and make a directory named sandbox This folder will contain all our project files – cd sandbox/ – export sandbox=$PWD – git clone git://git.rtems.org/rtems-source-builder.git – git clone git://git.rtems.org/rtems.git – git clone git://git.rtems.org/rtems-libbsd.git === Building desired toolset for ARM === – cd rtems-source-builder/rtems/ – ../source-builder/sb-check – ../source-builder/sb-set-builder –prefix=$sandbox/5 5/rtems-arm – cd $sandbox – export PATH=$PWD/5/bin:$PATH After having required toolchain, we can now proceed towards building our Board Support Package(BSP) === Building Beagleboneblack BSP === – cd $sandbox –…

Continue Reading

Software, Webpage

Semi dynamic webpage template

    Semi dynamic webpage template with Google sheets integration INDEX Introduction Purpose Behind Proposed Work Experimental Results Conclusion References     Introduction   Our project aims at providing a semi-dynamic template of a fully fledged highly responsive webpage for small scale organizational usage. With improved security considerations and better organization this project integrates google sheets services as a database for a website. Google sheets being easy to deploy and use makes content updation easier and a lot more user friendly. Several other functionalities like Google scripting engine along with google forms can be very easily integrated with google sheets…

Continue Reading

Hardware, Software

Introduction to RF communication

This post introduces the basics of RF communication along with various band specifications used for wireless communication. It also covers comparison of  different bands on basis of their data rates and other parameters. Content Introduction Available frequency Bands Types of RF communication Different wireless protocols Introduction Now a days, we are surrounded by a large number of wireless devices working on different protocols, on different frequency bands thus utilizing almost whole of the “Radio-wave” frequency spectrum. Adhering to it’s high density, complete frequency spectrum can be divided into different groups and each group can be further divided into different channels.…

Continue Reading

ARM, Software

DECODING ARM

This introductory post aims at discussing a bit about business model of ARM ltd.(that’s right the company behind ARM architectures!!), different ARM architectures for different utilities and most importantly a brief about ARM cortex M , ARM cortex R and ARM cortex A. So, here’s the content: Business model of ARM ltd. ARM Terminology Different ARM Architectures and Families Third party ARM variants ARM cortex M ARM cortex R ARM cortex A ARM Ltd. ARM ltd. was founded late in 1990’s as a joint venture between Acorn computers , Apple computers(Apple Inc.) and VLSI technology Inc. ARM joint venture With…

Continue Reading

ARM, Software

ARM Instruction Set(Part 2): Types,Operands and Addressing Modes

Types,Operands and  Addressing Modes After a brief introduction of ISA, here in this part of the series we’ll look at: Content:   Types of Operands  Instruction set design Types of Instructions Types of Addressing modes Types of Operands: Operands basically refer to the type of parameter which is passed on to, along with an instruction. It might be a : Register/Memory address Constant/Immediate Consider the following examples: ADD r1,r2,r3;      will add r2 and r3 and store it’s value in r1 Here, Operands is r1,r2 and r3. ALL of which are registers. ARM has in general 16 general purpose registers…

Continue Reading