Wednesday, 18 September 2013

what is firmware ?

s/w that is embedded in a h/w device.

it is often provided on the flash ROMS or as a binary image file that can be uploaded onto exiting h/w by a user.

computer program in a ROM, EEPROM whose program may be modified by external h/w but not by application program.

flash disk -- popular form of the firmware

was originally coined to indicate a functional replacement for the h/w on a low cost u.processor
eg. media recorder, CDROM, BIOS

computer chips have code embedded on itself to run is firmware

Is a term sometimes used to denote the fixed, usaually rather small programs that internally control various electronic devices.

devices like camera, mobile phone, calculator contain firmware to enable the device basic operatio as well as implementing higher level function.

firmware is always involved with very basic low - level operations in a device.

while more complex firmware often employ flash memory to allow for updates

updating firmware means fixing bugs or adding features so usually involve loading a binary image file provided by the manufactured into the device.

Different file types associated with drivers

We all know the importance of device drivers.
These small files help operating systems communicate with the
hardware devices and peripherals installed on a PC.

Most of your devices will not work in the absence of proper drivers,
no matter how expensive those devices are.
Driver files usually come in disks with any new hardware device
or peripheral that you may purchase.

However, if you wish to upgrade your device drivers in order to
make your system function more efficiently, you will have to
download those from the internet.

Device driver files can be of different types, each one representing
a different kind of device. These can have different file extensions
as well. The most common file extensions include:

---> DLL –
The extension DLL is an abbreviation of the term Dynamic Link Library.
DLL files are executable files, meaning these can be called and run
by a loader program, either belonging to the operating system itself,
or a third party software utility. One noticeable plus point of DLL
files is that most of these can be replaced in case of a file corruption,
without having to reinstall the entire driver file.
DLL files can contain data, resources and code in any combination,
and are built into many operating systems, including Microsoft Windows
and OS/2.

----> INF –
An INF file is a plain text file that Microsoft Windows uses in order
to load software packages and device drivers for hardware components.
The INF file resembles the INI file in structure.

It contains information stating which way the Windows registry should
be modified and the files that have to be copied during the installation.
These files are part of the Setup API of Windows.

----> OCX –
If you have Microsoft Windows loaded in your PC, then you will
definitely find a number of files with the extension ocx in your
Windows folder. These files are special programs, created to allow
certain functions, such as, resizing of a window or defining how
scroll bars will be used in a custom-made program.
The use of OCX files in programs improves the overall quality of those programs.

--->  VXD –
These files are meant to help the executable files of certain
programs to run efficiently, as well as enhancing the features
of the program. Every version of Windows has some VXD files built
into it. If these files get corrupted somehow, Windows may not
boot up at all. In that case, the files need to be repaired or
replaced using a Windows installation disk.

Driver files are some of the most important files in your PC,
besides the operating system.

These files should be updated at regular intervals in order to
keep your PC running in a problem-free, efficient manner.

kernel compilation steps for grub

1) check whether .config is there or not then generate it by
make menuconfig 
change the configurations and save that

2) generated then put it into the /boot/
with the name suitable for creating the initrd image i.e config-<version name>
eg. config-3.6.9

3) then make -j 8,4,12 or no need to give -j ...( only make )
it will give the vmlinux image ( not needed )

4) create another compresssed image
bzImage by 
make bzImage 

5) put this into the /boot/ with cahnging the name
understandable to the grub

you can  do make modules && make modules install but after this no need to use 7th step  it will automatically create initrd image in /boot/

6) update-grub 

7) update-initramfs -c -k <version-name> (((( 3.6.9 ))))
if not using make modules && make modules install

8) update-grub 

9) init 6 - restart 

make targets useful @ Build time.

This will show you the information about make targets.

cleaning targets:
clean - Remove most generated files but keep the config and
enough build support to build external modules
mrproper - Remove all generated files + config + various backup files
distclean - mrproper + remove editor backup and patch files

Configuration targets:
config - Update current config utilising a line-oriented program
menuconfig - Update current config utilising a menu based program
xconfig - Update current config utilising a QT based front-end
gconfig - Update current config utilising a GTK based front-end
oldconfig - Update current config utilising a provided .config as base
localmodconfig - Update current config disabling modules not loaded
localyesconfig - Update current config converting local mods to core
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
randconfig - New config with random answer to all options
defconfig - New config with default answer to all options
allmodconfig - New config selecting modules when possible
allyesconfig - New config where all options are accepted with yes
allnoconfig - New config where all options are answered with no

Other generic targets:
all - Build all targets marked with[*]
* vmlinux - Build the bare kernel
* modules - Build all modules
modules_install - Install all modules to INSTALL_MOD_PATH (default: /)
firmware_install- Install all firmware to INSTALL_FW_PATH
(default: $(INSTALL_MOD_PATH)/lib/firmware)
dir/ - Build all files in dir and below
dir/file.[ois] - Build specified target only
dir/file.ko - Build module including final link
modules_prepare - Set up for building external modules
tags/TAGS - Generate tags file for editors
cscope - Generate cscope index
kernelrelease - Output the release version string
kernelversion - Output the version stored in Makefile
headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH
(default: /home/wahyu/pecan/usr)

Static analysers
checkstack - Generate a list of stack hogs
namespacecheck - Name space analysis on compiled kernel
versioncheck - Sanity check on version.h usage
includecheck - Check for duplicate included header files
export_report - List the usages of all exported symbols
headers_check - Sanity check on exported headers
headerdep - Detect inclusion cycles in headers

Kernel packaging:
rpm-pkg - Build both source and binary RPM kernel packages
binrpm-pkg - Build only the binary kernel package
deb-pkg - Build the kernel as an deb package
tar-pkg - Build the kernel as an uncompressed tarball
targz-pkg - Build the kernel as a gzip compressed tarball
tarbz2-pkg - Build the kernel as a bzip2 compressed tarball

Documentation targets:
Linux kernel internal documentation in different formats:
htmldocs - HTML
pdfdocs - PDF
psdocs - Postscript
xmldocs - XML DocBook
mandocs - man pages
installmandocs - install man pages generated by mandocs
cleandocs - clean all generated DocBook files

Architecture specific targets (arm):
* zImage - Compressed kernel image (arch/arm/boot/zImage)
Image - Uncompressed kernel image (arch/arm/boot/Image)
* xipImage - XIP kernel image, if configured (arch/arm/boot/xipImage)
uImage - U-Boot wrapped zImage
bootpImage - Combined zImage and initial RAM disk
(supply initrd image via make variable INITRD=<path>)
install - Install uncompressed kernel
zinstall - Install compressed kernel
Install using (your) ~/bin/installkernel or
(distribution) /sbin/installkernel or
install to $(INSTALL_PATH) and run lilo

acs5k_defconfig - Build for acs5k
acs5k_tiny_defconfig - Build for acs5k_tiny
afeb9260_defconfig - Build for afeb9260
am200epdkit_defconfig - Build for am200epdkit
ams_delta_defconfig - Build for ams_delta
assabet_defconfig - Build for assabet
at91cap9adk_defconfig - Build for at91cap9adk
at91rm9200dk_defconfig - Build for at91rm9200dk
at91rm9200ek_defconfig - Build for at91rm9200ek
at91sam9260ek_defconfig - Build for at91sam9260ek
at91sam9261ek_defconfig - Build for at91sam9261ek
at91sam9263ek_defconfig - Build for at91sam9263ek
at91sam9g20ek_defconfig - Build for at91sam9g20ek
at91sam9rlek_defconfig - Build for at91sam9rlek
ateb9200_defconfig - Build for ateb9200
badge4_defconfig - Build for badge4
bcmring_defconfig - Build for bcmring
cam60_defconfig - Build for cam60
carmeva_defconfig - Build for carmeva
cerfcube_defconfig - Build for cerfcube
cm_x2xx_defconfig - Build for cm_x2xx
cm_x300_defconfig - Build for cm_x300
colibri_pxa270_defconfig - Build for colibri_pxa270
colibri_pxa300_defconfig - Build for colibri_pxa300
collie_defconfig - Build for collie
corgi_defconfig - Build for corgi
cpu9260_defconfig - Build for cpu9260
cpu9g20_defconfig - Build for cpu9g20
cpuat91_defconfig - Build for cpuat91
csb337_defconfig - Build for csb337
csb637_defconfig - Build for csb637
da830_omapl137_defconfig - Build for da830_omapl137
da850_omapl138_defconfig - Build for da850_omapl138
davinci_all_defconfig - Build for davinci_all
ebsa110_defconfig - Build for ebsa110
ecbat91_defconfig - Build for ecbat91
edb7211_defconfig - Build for edb7211
em_x270_defconfig - Build for em_x270
ep93xx_defconfig - Build for ep93xx
eseries_pxa_defconfig - Build for eseries_pxa
ezx_defconfig - Build for ezx
footbridge_defconfig - Build for footbridge
fortunet_defconfig - Build for fortunet
h3600_defconfig - Build for h3600
h5000_defconfig - Build for h5000
h7201_defconfig - Build for h7201
h7202_defconfig - Build for h7202
hackkit_defconfig - Build for hackkit
hazel-perf_defconfig - Build for hazel-perf
integrator_defconfig - Build for integrator
iop13xx_defconfig - Build for iop13xx
iop32x_defconfig - Build for iop32x
iop33x_defconfig - Build for iop33x
ixp2000_defconfig - Build for ixp2000
ixp23xx_defconfig - Build for ixp23xx
ixp4xx_defconfig - Build for ixp4xx
jornada720_defconfig - Build for jornada720
kafa_defconfig - Build for kafa
kb9202_defconfig - Build for kb9202
kirkwood_defconfig - Build for kirkwood
ks8695_defconfig - Build for ks8695
lart_defconfig - Build for lart
loki_defconfig - Build for loki
lpd270_defconfig - Build for lpd270
lpd7a400_defconfig - Build for lpd7a400
lpd7a404_defconfig - Build for lpd7a404
lubbock_defconfig - Build for lubbock
lusl7200_defconfig - Build for lusl7200
magician_defconfig - Build for magician
mahimahi_defconfig - Build for mahimahi
mainstone_defconfig - Build for mainstone
mini2440_defconfig - Build for mini2440
msm7627_defconfig - Build for msm7627
msm7627-perf_defconfig - Build for msm7627-perf
msm7630_defconfig - Build for msm7630
msm7630-perf_defconfig - Build for msm7630-perf
msm8655-sr_defconfig - Build for msm8655-sr
msm8660-chromeos_defconfig - Build for msm8660-chromeos
msm8660_defconfig - Build for msm8660
msm_defconfig - Build for msm
mv78xx0_defconfig - Build for mv78xx0
mx1ads_defconfig - Build for mx1ads
mx1_defconfig - Build for mx1
mx21_defconfig - Build for mx21
mx27_defconfig - Build for mx27
mx31pdk_defconfig - Build for mx31pdk
mx3_defconfig - Build for mx3
n770_defconfig - Build for n770
n8x0_defconfig - Build for n8x0
neocore926_defconfig - Build for neocore926
neponset_defconfig - Build for neponset
netwinder_defconfig - Build for netwinder
netx_defconfig - Build for netx
nhk8815_defconfig - Build for nhk8815
ns9xxx_defconfig - Build for ns9xxx
omap_2430sdp_defconfig - Build for omap_2430sdp
omap_3430sdp_defconfig - Build for omap_3430sdp
omap3_beagle_defconfig - Build for omap3_beagle
omap3_evm_defconfig - Build for omap3_evm
omap3_pandora_defconfig - Build for omap3_pandora
omap_4430sdp_defconfig - Build for omap_4430sdp
omap_apollon_2420_defconfig - Build for omap_apollon_2420
omap_generic_1510_defconfig - Build for omap_generic_1510
omap_generic_1610_defconfig - Build for omap_generic_1610
omap_generic_1710_defconfig - Build for omap_generic_1710
omap_generic_2420_defconfig - Build for omap_generic_2420
omap_h2_1610_defconfig - Build for omap_h2_1610
omap_h4_2420_defconfig - Build for omap_h4_2420
omap_innovator_1510_defconfig - Build for omap_innovator_1510
omap_innovator_1610_defconfig - Build for omap_innovator_1610
omap_ldp_defconfig - Build for omap_ldp
omap_osk_5912_defconfig - Build for omap_osk_5912
omap_perseus2_730_defconfig - Build for omap_perseus2_730
omap_zoom2_defconfig - Build for omap_zoom2
onearm_defconfig - Build for onearm
orion5x_defconfig - Build for orion5x
overo_defconfig - Build for overo
palmte_defconfig - Build for palmte
palmtt_defconfig - Build for palmtt
palmz71_defconfig - Build for palmz71
palmz72_defconfig - Build for palmz72
pcm027_defconfig - Build for pcm027
pecan-perf_defconfig - Build for pecan-perf
picotux200_defconfig - Build for picotux200
pleb_defconfig - Build for pleb
pnx4008_defconfig - Build for pnx4008
pxa168_defconfig - Build for pxa168
pxa255-idp_defconfig - Build for pxa255-idp
pxa3xx_defconfig - Build for pxa3xx
pxa910_defconfig - Build for pxa910
qil-a9260_defconfig - Build for qil-a9260
qsd8650a_defconfig - Build for qsd8650a
qsd8650a-perf_defconfig - Build for qsd8650a-perf
qsd8650_defconfig - Build for qsd8650
qsd8650-perf_defconfig - Build for qsd8650-perf
realview_defconfig - Build for realview
realview-smp_defconfig - Build for realview-smp
rpc_defconfig - Build for rpc
rx51_defconfig - Build for rx51
s3c2410_defconfig - Build for s3c2410
s3c6400_defconfig - Build for s3c6400
s5pc100_defconfig - Build for s5pc100
sam9_l9260_defconfig - Build for sam9_l9260
shannon_defconfig - Build for shannon
shark_defconfig - Build for shark
simpad_defconfig - Build for simpad
spitz_defconfig - Build for spitz
stmp378x_defconfig - Build for stmp378x
stmp37xx_defconfig - Build for stmp37xx
swordfish_defconfig - Build for swordfish
sx1_defconfig - Build for sx1
tct_hammer_defconfig - Build for tct_hammer
thundera-perf_defconfig - Build for thundera-perf
thunderc-perf_defconfig - Build for thunderc-perf
thunderg-perf_defconfig - Build for thunderg-perf
thunderg-vdf-perf_defconfig - Build for thunderg-vdf-perf
trizeps4_defconfig - Build for trizeps4
u300_defconfig - Build for u300
usb-a9260_defconfig - Build for usb-a9260
usb-a9263_defconfig - Build for usb-a9263
versatile_defconfig - Build for versatile
viper_defconfig - Build for viper
w90p910_defconfig - Build for w90p910
xcep_defconfig - Build for xcep
yl9200_defconfig - Build for yl9200

make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build
make V=2 [targets] 2 => give reason for rebuild of target
make O=dir [targets] Locate all output files in "dir", including .config
make C=1 [targets] Check all c source with $CHECK (sparse by default)
make C=2 [targets] Force check of all c source with $CHECK

Execute "make" or "make all" to build all targets marked with[*] 
For further info see the ./README file