Friday, 12 June 2020

Medtronics Open Ventilator PB 560 Project- Resources & File locations

As we know Medtronics ( has made available one of its ventilators design. As we all know the complexity of the medical products this is an efforts to collect all the available information at one place and mention the things which are not clear or pending and if in the community anyone has done it come forward and paste it here so that I can update the link or solution here.

Below is the list of resources which are shared at various location, if any link is not working let me know.


FTP Site


Some of the things which are not found at this moment and not available to download is given below if anyone is able to successfully build it or have the data please share in comments:

  • C166 V7.05 Tool Chain
  • xC18 V3.10 Compiler
  • USB_Firmware_V3.1.bin File
  • Source Code For Power Pack2
  • CPU Board Test Software
  • Power Management Board Software
  • UUT Test Software
  • UUT Software download application

As per   we should get USB_Firmware_V3.1.bin from Medtronics , if anyone has default binary let us know. Also test softwares were not released by them but they have released some app as on today 12/06/2020, need to still review the same. Will keep updating the post. Let us know if anyone has any other links/document for the same ventilator project.

Sunday, 3 February 2019

Common MTD commands : Boot EEPROM/ NAND flash access from Linux

Common MTD Commands use wisely

  •  cat /proc/mtd

dev:    size   erasesize  name
mtd0: 000c0000 00001000 "U-Boot"
mtd1: 00002000 00001000 "U-Boot Env"
mtd2: 00001000 00001000 "JFFS2"
mtd3: 0013d000 00001000 "my-data"
mtd4: 0013e000 00001000 "U-image/Kernel"
mtd5: 0013f000 00001000 "rootfs"
mtd6: 00140000 00001000 "mylog"
mtd7: 00141000 00001000 "mydata"

  •  mtdinfo -a
  • ls -l /dev/mtd*
  •  flash_unlock could be used to unlock the appropriate sectors.
  • flash_eraseall /dev/mtdchar0 
    •  cat /dev/mtdchar0 < new.bin  ( Erase and load new file)
  • cat /dev/mtdchar0 > /tmp/flash.bin ( Entire flash to file) 
  • flashcp to write to NOR flash
  • flash_eraseall -j /dev/mtd2
    mount -t jffs2 /dev/mtdblock2 /mnt/flash
  • flash_eraseall /dev/mtd0 ( erases everything, use rarely)
IOCTL Commands
  • MEMGETINFO Get layout and capabilities struct mtd_info_user *
  • MEMGETREGIONINFO struct region_info_user *
  • MEMWRITEOOB NAND only: write out-of-band info (ECC) struct mtd_oob_buf *
  • MEMERASE Erase flash blocks struct erase_info_user *
  • MEMLOCK Lock flash blocks to disallow changes struct erase_info_user *
  • MEMUNLOCK Unlock flash to allow changes struct erase_info_user *
  • MEMGETREGIONCOUNT Return number of erase block regions int *
  • MEMREADOOB NAND only: read out-of-band info (ECC) struct mtd_oob_buf *
  • MEMSETOOBSEL NAND only: set default OOB info struct nand_oobinfo*
  •  The exact flash layout may be determined using the MEMGETREGIONCOUNT and MEMGETREGIONINFO commands.
  • MEMERASE command may be issued to erase the desired blocks.

Difference between Raw Flashes (MTD) and Block Devices

Block Devices Examples 

  • SSD
  • MMC
  • eMMC
  • RS-MMC
  • SD
  • Mini/micro-SD
  • USB flash drive
  • CompactFlash
  • MemoryStick
  • MemoryStick Micro
  • Hard drives 

Ext2, ext3, XFS, JFS, FAT and conventional file systems work with block devices. 

  • Block devices consists of sectors.
  • Sectors are small (512, 1024 bytes)
  • Maintains operations: read sector and write sector
  • Bad sectors are re-mapped and hidden by hardware (at least in modern LBA hard drives);
  • Sectors are devoid of the wear-out property 
 Bad sector re-mapping and wear out in case of FTL devices, it is the responsibility of FTL to provide this.

MTD (Memory Technology Devices) Examples ( Used for Raw Flash devices)

  • NAND
  • OneNAND
  • NOR 
  • AG-AND
  • ECC'd NOR
  • CFI (Common Flash Interface)  
  • Bare NAND Flashes with SW/HW
  • Legacy FTL/NFTL "translation layers"
  •  M-Systems' DiskOnChip 2000 and Millennium chips
  •  PCMCIA flashes (pcmciamtd driver).

 MTD subsystem provides an abstraction layer for raw flash devices to make use of the same API when working with different flash types and technologies. Also to use conventional files systems over an MTD device, we need a software layer known as Flash Translation Layers (FTLs) which enables them to behave like a block devices.

MTD Characteristics & Features

  • Consists of eraseblocks
  • Eraseblocks are larger (typically 128KiB)
  • Maintains : read from eraseblockwrite to eraseblock, and erase eraseblock
  • Bad eraseblocks are not hidden and should be dealt with in software.
  • Eraseblocks wear-out and become bad and unusable after about 103 (for MLC NAND) - 105 (NOR, SLC NAND) erase cycles

MTD Subsystem interfaces:

  • MTD character devices - These character devices provide I/O access to the raw flash and referred as /dev/mtd0, /dev/mtd1 etc. They support a number of ioctl calls for getting information about MTD devices.
  • The sysfs interface - It provides full information about each MTD device in the system and is easily extensible.
  • The /proc/mtd proc file system- This is a legacy interface and provides general MTD information. 
During Electronic Product Design & Development it is essential that hardware is designed in a way that it uses proper flash types & accordingly partitions are made.

For More information :

IPv6 CVS access with IPv4 Linux PC

Convert or get IPv6 address over IPv4 using with versions above RHL7

 echo NETWORKING_IPV6=yes >> /etc/sysconfig/network
 echo IPV6_DEFAULTDEV=tun6to4 >> /etc/sysconfig/network
 echo IPV6INIT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0
 echo IPV6TO4INIT=yes >> /etc/sysconfig/network-scripts/ifcfg-eth0
 /sbin/service network restart

Allow Firewall port 
Add rule to allow IP protocol #41 (IPv6 in IPv4) in and out.

GET IPv6 CVS Access over SSH 

          export CVS_RSH=`which ssh`
          cvs -d co mtd

Reference :

Tuesday, 2 October 2018

How many types of Embedded System jobs are available in embedded companies?

I have interviewed a lot of freshers and also acted as mentors for lot many. One of few general questions asked by new graduates are "How many types of Embedded System jobs are available in embedded companies" and the relevant skill sets required for it. Tried to capture some descriptions of job profiles. This post does not cover required skill set and will try to add in another blog post.

But as industry changes the description also changes drastically from company to company and domain to domain.

 This is prepared keeping general product and if you  think I have missed anyone, please add in comment. Also there could be one person doing multiple things in small startups or for every function different people are recruited.

Embedded products life-cycle job functions

1) Understand Market of the "New" product, analysis of competitors product & features  :

  • Product Manager / Product Line Manager
2)  Analysis of requirement from technical side/engineering side and prepare project plan :

  • Project Manager 

3) Hardware Engineering team :

  •  PCB Design Engineer
  •  PCB Layout Engineer
  •  Mechanical Design Engineer
  •  Circuit designer
  •  VLSI Design Engineers
  •  VLSI Verification team
  •  Chip designers (if semiconductor companies)
  •  FPGA Design Engineers
  •  PCB Assembly technicians
  •  Hardware QA & test engineer
  •  Procurement Engineer
  •  Purchase Executive

4) Software Engineering Team

  •   Firmware Design Engineer
  •   Device Driver development Engineer
  •   Application Software Engineer
  •   Unit test engineer
  •   Integration test engineer
  •   Automation Engineers       

5) QA test team

  •    Software testing engineer
  •    Hardware test engineers
  •    Performance test engineers
  •    Automation QA Engineers    
  •    Network support Engineers

6) Operation & Support team

  •    Purchase Officer
  •    Custom clearance Executive
  •    Finance Executive
  •    Accounts Executives
  •    IT network support Engineer
  •    HR executives
  •    Sales & Marketing Engineers
  •    Store & Inventory executive
  •    Technical writers ( Can report to any SW/HW teams or can be independent team)

For few job profile descriptions you can visit careers page of one of the embedded companies.

Saturday, 23 June 2018

How to calculate target cost for electronic proudcts

Recently came across good blog on  how to calculate target cost for electronic products:

Image from


About Company:

Argus Embedded System is India’s leading company in providing electronic product design services for Industrial, Networking & Telecom and Defense domains.

Friday, 27 October 2017


#HTTP Proxy/FTP Proxy

# export http_proxy=http://<proxy-server-ip-or-dns-name>:<Port-Number>

# export ftp_proxy=http://<proxy-server-ip-or-dns-name>:<Port-Number>

# vi /etc/bash.bashrc
export http_proxy=http://<proxy-server-ip-or-dns-name>:<Port-Number>/
export ftp_proxy=http://<proxy-server-ip-or-dns-name>:<Port-Number>/

# Proxy Settings in APT on Ubuntu Linux

# vi /etc/apt/apt.conf
Acquire::http::Proxy "http://<proxy-server-ip-or-dns-name>:<Port-Number>";


# export RSYNC_PROXY="http://<proxy-server-ip-or-dns-name>:<Port-Number>”

# For Git Clone 

#vi ~/.gitconfig
    proxy = http://username:password@<proxy-server-ip-or-dns-name>:<Port-Number>

#Yum Proxy setting

vi /etc/yum.conf


#DNF proxy setting

vi /etc/dnf/dnf.conf



vi ~/.curlrc

proxy = http://username:password@<proxy-server-ip-or-dns-name>:<Port-Number>