File system, RTEMS, RTOS, Software

Setting up YAFFS2 and JFFS2 on RTEMS with flash simulated on a RAM-disk

Hi all, In this post we’ll look forward towards setting up flash file systems namely JFFS2 and YAFFS2 on RTEMS with flash simulated on a RAM-disk. For file system benchmarking purpose, we didn’t actually use them on a real flash(as to eliminate the effect of flash driver’s performance) but implementing them on a real flash won’t be very different from the process given in the later sections of this post. So, let’s begin with JFFS2 first: JFFS2…

Continue Reading

GSoC, RTEMS, Software

GSoC 2018: Final Report

This is the final report of the work done under GSoC’18 with the RTEMS community. I’ll begin with a short summary of all the work done during this summer and will then move towards the corresponding code and documentation developed throughout the timeline.   Porting SDIO driver to RTEMS and benchmarking Student:- Udit kumar Agarwal Mentors:- Christian Mauderer , Punit Vara Original proposal link: Here Weekly updates:- https://devel.rtems.org/wiki/GSoC/2018#UditkumarAgarwal Project tickets:-  ticket#3429 , ticket#3430 , ticket#3428 Github Repository:– https://github.com/madaari/GSoC-rtems-18…

Continue Reading

ARM, Benchmark, File system, FIO, GSoC, RTEMS, Software

Benchmarking RTEMS Filesystems using FIO

Hi, In this post we will explore FIO’s RTEMS port and how it can be used to benchmark RTEMS filesystems and drivers. First, let’s have a quick look at all the RTEMS filesystems: RTEMS FILESYSTEMS RTEMS supports mainly two types of filesystems : Network and Physical fs. Benchmarking support for networking filesystems isn’t yet available. However, nearly every other physical filesystem can be benchmarked and contrasted. Heap based file systems are those which uses malloc() for file…

Continue Reading

Benchmark, FIO, GSoC, RTEMS, Software

[GSoC Phase-1] Porting FIO to RTEMS

Hi all, This post covers most of my learnings during phase one of GSoC with RTEMS. My main goal of phase 1 was to port an IO benchmark to RTEMS. Towards this, various benchmarks were compared and fio was finalized for the import. FIO is a pretty much widely accepted and highly configurable IO benchmarking tool, which supports a number of large number of different OS and now RTEMS is among one of them. Following were the…

Continue Reading

Benchmark, Bonnie++, FIO, FreeBSD, GSoC, IOZONE, RTEMS, Software

Comparing IO benchmarks: FIO, IOZONE and BONNIE++

IO benchmarks refer to the computerized test for measuring various properties of a IO device under various conditions. Various properties includes Read/Write speed, IOPS, seek time etc and various conditions refers to random/sequential reads/writes, block size used by the filesystem, buffer cache size etc. There are various IO benchmarks available online, but the top 3 opensource IO benchmarks, in my view includes FIO, IOZONE and BONNIE++. There are several pros and cons for each of them, which…

Continue Reading

ARM, CAM, FreeBSD, mmccam, SDIO, Software

Building FreeBSD’s SDIO driver for BeagleBone Black

Hi all, This post mainly concern with building FreeBSD’s SDIO driver for BeagleBone Black by cross compiling it on AMD platform. I had few unresolved issues with the master branch of current FreeBSD tree. So, for this i used another unofficial branch: https://github.com/kibab/freebsd/tree/mmcam-new . It does have the required KERNCONF file with stable SDIO driver. A lot of steps below are similar to the one given on: https://forums.freebsd.org/threads/cross-compiling-beaglebone-on-amd64.64718/#post-384835  with slight but inevitable changes. Procedure:  Before proceeding you…

Continue Reading

FreeBSD, Software

Setting up FreeBSD environment on virtualbox

Hi all, In this post we will review the procedure of setting up FreeBSD environment on virtualbox along with setting up Internet on the guest OS(this was pretty tricky!).BTW, my host OS is Ubuntu 14.04 So, i am assuming you have already installed virtualbox as per your host OS and has downloaded the FreeBSD amd64 iso image(If not you can do it from here and extract it appropriately to get a .iso file. Installing FreeBSD on virtualbox…

Continue Reading

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…

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 a SDIO compatible host, in its early stage it is in low power mode and consumes very little current. Host identifies the SDIO card ,it’s power requirement, it’s…

Continue Reading

RTEMS, RTOS, Software

Coding conventions : RTEMS

From my experience till now, If you desire to contribute to open source, it’s necessary to adapt!! Your old sluggish, inconsistence coding practices wont do any good, neither to you nor to the community. ^^ That was my story!! After a month of working with professionals , I realized that my 5 years of coding was trash! It’s not about logic, it’s about ethics. To be a good coder, you don’t only need to work on your…

Continue Reading