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. 

Features
  • 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 :http://www.linux-mtd.infradead.org

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 :ext:anoncvs@cvs.infradead.org:/home/cvs co mtd




Reference : http://www.linux-mtd.infradead.org/archive/index.html

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 www.sysargus.com



Source:


http://www.sysargus.com/blog/how-to-calculate-target-cost-for-electronic-products/

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

Proxy settings for HTTP/FTP/APT/RSYNC/GIT/CURL/YUM/DNF

#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>";

#RSYNC

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


# For Git Clone 

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



#Yum Proxy setting

vi /etc/yum.conf

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


#DNF proxy setting

vi /etc/dnf/dnf.conf

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



#Curl

vi ~/.curlrc

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


Search

Loading
Related Posts Plugin for WordPress, Blogger...