1. Checkout source code from SVN server
[ ]# mkdir /home/NSLU2-Linux
[ ]# cd /home/NSLU2-Linux
[ ]# svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
[ ]# cd optware
2.1 For Linksys NSLU2 platform:
[ ]# make nslu2-target
[ ]# make
2.2 For ts72xx platform:
[ ]# make ts72xx-target
[ ]# make
-- Failed
Reference:
1. http://trac.nslu2-linux.org/optware
2. http://peter.korsgaard.com/articles/debian-nslu2.php
Monday, December 29, 2008
Friday, December 26, 2008
HOWTO install/upgrade firefox-2 on Fedora Core 6 (FC6)
FC6 uses Firefox 1.5 by default. If you want to use Firefox 2, this blog is for you.
[ ]# wget http://rpms.famillecollet.com/fc6.i386/firefox2-2.0.0.14-1.fc6.remi.i386.rpm
[ ]# rpm -Uvh firefox2-2.0.0.14-1.fc6.remi.i386.rpm
Other RPM source:
firefox2-2.0.0.14-1.fc6.remi.i386.rpm
firefox2-devel-2.0.0.14-1.fc6.remi.i386.rpm
Reference:
1. HOWTO: Install Firefox 2.0 on Fedora Core 6
2. Installing Firefox 2 on Fedora Core 6
[ ]# wget http://rpms.famillecollet.com/fc6.i386/firefox2-2.0.0.14-1.fc6.remi.i386.rpm
[ ]# rpm -Uvh firefox2-2.0.0.14-1.fc6.remi.i386.rpm
Other RPM source:
firefox2-2.0.0.14-1.fc6.remi.i386.rpm
firefox2-devel-2.0.0.14-1.fc6.remi.i386.rpm
Reference:
1. HOWTO: Install Firefox 2.0 on Fedora Core 6
2. Installing Firefox 2 on Fedora Core 6
Thursday, December 25, 2008
HOWTO compile OpenWrt (Kamikaze) on Fedora Core 9
1. Checkout Kamikaze from https://dev.openwrt.org/
Development branch:
[ ]$ mkdir /home/scott/Kamikaze
[ ]$ cd /home/scott/Kamikaze
[ ]$ svn co https://svn.openwrt.org/openwrt/trunk/
[ ]$ cd trunk
2. Checkout more packages (for Xorg...)
[ ]$ make package/symlinks
3. Enter menuconfig-style menu, enable X.
4. Install some RPMs
[ ]$ rpm -ivh eet-1.0.1-1.fc9.i386.rpm
[ ]$ rpm -ivh evas-0.9.9.043-2.fc9.i386.rpm
[ ]$ rpm -ivh ecore-0.9.9.043-1.fc9.i386.rpm
[ ]$ rpm -ivh embryo-0.9.9.043-1.fc9.i386.rpm
[ ]$ rpm -ivh edje-0.9.9.043-1.fc9.i386.rpm
5. Compile OpenWrt!
[ ]$ make
or
[ ]$ make V=99
6. That's it.
Development branch:
[ ]$ mkdir /home/scott/Kamikaze
[ ]$ cd /home/scott/Kamikaze
[ ]$ svn co https://svn.openwrt.org/openwrt/trunk/
[ ]$ cd trunk
2. Checkout more packages (for Xorg...)
[ ]$ make package/symlinks
3. Enter menuconfig-style menu, enable X.
4. Install some RPMs
[ ]$ rpm -ivh eet-1.0.1-1.fc9.i386.rpm
[ ]$ rpm -ivh evas-0.9.9.043-2.fc9.i386.rpm
[ ]$ rpm -ivh ecore-0.9.9.043-1.fc9.i386.rpm
[ ]$ rpm -ivh embryo-0.9.9.043-1.fc9.i386.rpm
[ ]$ rpm -ivh edje-0.9.9.043-1.fc9.i386.rpm
5. Compile OpenWrt!
[ ]$ make
or
[ ]$ make V=99
6. That's it.
Wednesday, December 24, 2008
CFI-compliant NOR Flash Device Driver
CFI-compliant NOR Flash Device Driver
CPU: ARM
Example: MXIC MX29LV640D T/B (Parallel, Top Boot Flash)
Bootloader: u-boot-2008.10 (tar.bz2)
Description:
You can implement the driver in two different ways. The first one is a standalone driver and the second one is based on CFI (Common Flash Interface).
(1) You have to implement at least four functions in flash.c
flash_init()
flash_print_info()
write_buff()
flash_erase()
(2) Use the common CFI flash driver
You just need to do some patch work about flash chip.
Patch File:
(1) Standalone Device Driver (source code)
(2) CFI (patch file)
Querying the flash information on u-boot
[]# flinfo
Bank # 1: MXIC 29LV640DT FLASH (8 x 8) Size: 8 MB in 135 Sectors
AMD Legacy command set, Manufacturer ID: 0xC2, Device ID: 0xC9
Erase timeout: 30000 ms, write timeout: 100 ms
Sector Start Addresses:
10000000 ......
CFI Specifications:
1. Common Flash Memory Interface Specification, Release 2.0, AMD, 2001 (Download)
2. Common Flash Interface (CFI) JEDEC Standard, JESD 68.01, 2003 (Download) (2)
3. Common Flash Interface ID Codes, JEP 137B, 2004 (Download) (2)
Reference:
1. JEDEC
CPU: ARM
Example: MXIC MX29LV640D T/B (Parallel, Top Boot Flash)
Bootloader: u-boot-2008.10 (tar.bz2)
Description:
You can implement the driver in two different ways. The first one is a standalone driver and the second one is based on CFI (Common Flash Interface).
(1) You have to implement at least four functions in flash.c
flash_init()
flash_print_info()
write_buff()
flash_erase()
(2) Use the common CFI flash driver
You just need to do some patch work about flash chip.
Patch File:
(1) Standalone Device Driver (source code)
(2) CFI (patch file)
Querying the flash information on u-boot
[]# flinfo
Bank # 1: MXIC 29LV640DT FLASH (8 x 8) Size: 8 MB in 135 Sectors
AMD Legacy command set, Manufacturer ID: 0xC2, Device ID: 0xC9
Erase timeout: 30000 ms, write timeout: 100 ms
Sector Start Addresses:
10000000 ......
CFI Specifications:
1. Common Flash Memory Interface Specification, Release 2.0, AMD, 2001 (Download)
2. Common Flash Interface (CFI) JEDEC Standard, JESD 68.01, 2003 (Download) (2)
3. Common Flash Interface ID Codes, JEP 137B, 2004 (Download) (2)
Reference:
1. JEDEC
Wednesday, December 17, 2008
JTAG
Parallel JTAG Cable
1. How To Do Jtag Cable
2. Benjamin Henrion Web Space
USB JTAG Cable
1. Gateworks USB JTAG Programmer
2. USB JTAG adapter
3. Bus_Blaster
Here is the thing that I would like to program on-board flash in embedded device. Is it possible to use this cable and a programming utility running on a Windows/Linux PC enables me to do this?
Wiggler JTAG Cable
This kind of cable is the most simple one and can be make by yourself. Check Benjamin Henrion's Web Space for more information. You can also buy one from OLIMEX or TechToys.
How to use the JTAG flash utility
H-JTAG - a free JTAG debug agent for ARM
JTAG Tools -
UrJTAG - Universal JTAG library, server and tools
PortTalk - A Windows NT I/O Port Device Driver
Amontec JTAGkey -
JTAGER -
Reference:
Wiki
fpga4fun
Here is what I used to try -- $800 NT
OpenJTAG ARM JTAG USB
1. How To Do Jtag Cable
2. Benjamin Henrion Web Space
USB JTAG Cable
1. Gateworks USB JTAG Programmer
2. USB JTAG adapter
3. Bus_Blaster
Here is the thing that I would like to program on-board flash in embedded device. Is it possible to use this cable and a programming utility running on a Windows/Linux PC enables me to do this?
Wiggler JTAG Cable
This kind of cable is the most simple one and can be make by yourself. Check Benjamin Henrion's Web Space for more information. You can also buy one from OLIMEX or TechToys.
How to use the JTAG flash utility
H-JTAG - a free JTAG debug agent for ARM
JTAG Tools -
UrJTAG - Universal JTAG library, server and tools
PortTalk - A Windows NT I/O Port Device Driver
Amontec JTAGkey -
JTAGER -
Reference:
Wiki
fpga4fun
Here is what I used to try -- $800 NT
OpenJTAG ARM JTAG USB
Tuesday, December 16, 2008
User-space Linux Device Drivers
I'm not sure this is a good idea to debug or test hardware and Linux kernel. Maybe!
OS: Linux Kernel 2.6.23 or later
Example:
[ ]# insmod /lib/modules/2.6.25.3-18.fc9.i686/kernel/drivers/uio/uio.ko
[ ]# insmod uXXX.ko
References:
Linux Magazine - Driver Shift (PDF) (Sample Code)
LWN.net - UIO: user-space drivers
OS: Linux Kernel 2.6.23 or later
Example:
[ ]# insmod /lib/modules/2.6.25.3-18.fc9.i686/kernel/drivers/uio/uio.ko
[ ]# insmod uXXX.ko
References:
Linux Magazine - Driver Shift (PDF) (Sample Code)
LWN.net - UIO: user-space drivers
Monday, December 15, 2008
iPhone 3G Video Converter
Apex iPhone Video Converter
Performance:
Input Format - 233MB, 576x432 Frame size, AVI
Output Video Format - Bitrate 900 kbps, 232MB, H.264 480x320, MP4
Output Audio Format - AAC, Stereo 192 kbps, Sample 44100 Hz
Total Time - 22 minutes
Easy Video to iPod Converter
Performance:
Input Format - 233MB, 576x432 Frame size, AVI
Output Video Format - 214MB, H.264 480x360, MP4
Output Audio Format - AAC, Stereo, Sample 44100 Hz
Total Time - 27 minutes
Cheetah iPod Video Converter It's Free
Performance:
Input Format - 233MB, 576x432 Frame size, AVI
Output Video Format - Bitrate 900 kbps, 232MB, H.264 480x320, MP4
Output Audio Format - AAC, Stereo 192 kbps, Sample 44100 Hz
Total Time - 22 minutes
Easy Video to iPod Converter
Performance:
Input Format - 233MB, 576x432 Frame size, AVI
Output Video Format - 214MB, H.264 480x360, MP4
Output Audio Format - AAC, Stereo, Sample 44100 Hz
Total Time - 27 minutes
Cheetah iPod Video Converter It's Free
Thursday, December 11, 2008
IRQ Subsystem on Linux Kernel 2.6
OS: Linux Kernel 2.6.24 or later
Platform: ARM11 MPCore
There are two important data structures of interrupts.
(1) The Interrupt Controller
hw_interrupt_type [include/linux/irq.h]
(2) The description for each IRQ (interrupt handler, interrupt status)
irq_desc [include/linux/irq.h]
The whole IRQs is defined in a global array
struct irq_desc irq_desc[NR_IRQS] [kernel/irq/handle.c]
where NR_IRQS is the maximum number of IRQs [arch/arm/mach-cns3000/include/mach/board-vega.h]
Platform: ARM11 MPCore
There are two important data structures of interrupts.
(1) The Interrupt Controller
hw_interrupt_type [include/linux/irq.h]
(2) The description for each IRQ (interrupt handler, interrupt status)
irq_desc [include/linux/irq.h]
The whole IRQs is defined in a global array
struct irq_desc irq_desc[NR_IRQS] [kernel/irq/handle.c]
where NR_IRQS is the maximum number of IRQs [arch/arm/mach-cns3000/include/mach/board-vega.h]
Monday, December 8, 2008
Professional Linux Kernel Architecture
Professional Linux Kernel Architecture (PDF)
Based on Linux 2.6.24, this book give us a detailed look of the kernel.
Contents
Based on Linux 2.6.24, this book give us a detailed look of the kernel.
Contents
- Chapter 1 provides an overview of the Linux kernel and describes the big picture that is investigated more closely in the following chapters.
- Chapter 2 talks about the basics of multitasking, scheduling, and process management, and investigates how these fundamental techniques and abstractions are implemented.
- Chapter 3 discusses how physical memory is managed. Both the interaction with hardware and the in-kernel distribution of RAM via the buddy system and the slab allocator are covered.
- Chapter 4 proceeds to describe how userland processes experience virtual memory, and the comprehensive data structures and actions required from the kernel to implement this view.
- Chapter 5 introduces the mechanisms required to ensure proper operation of the kernel on multiprocessor systems. Additionally, it covers the related question of how processes can communicate with each other.
- Chapter 6 walks you through the means for writing device drivers that are required to add support for new hardware to the kernel.
- Chapter 7 explains how modules allow for dynamically adding new functionality to the kernel.
- Chapter 8 discusses the virtual filesystem, a generic layer of the kernel that allows for supporting a wide range of different filesystems, both physical and virtual.
- Chapter 9 describes the extended filesystem family, that is, the Ext2 and Ext3 filesystems that are the standard workhorses of many Linux installations.
- Chapter 10 goes on to discuss procfs and sysfs, two filesystems that are not designed to store information, but to present meta-information about the kernel to userland. Additionally, a number of means to ease writing filesystems are presented.
- Chapter 11 shows how extended attributes and access control lists that can help to improve system security are implemented.
- Chapter 12 discusses the networking implementation of the kernel, with a specific focus on IPv4, TCP, UDP, and netfilter.
- Chapter 13 introduces how systems calls that are the standard way to request a kernel action from userland are implemented.
- Chapter 14 analyzes how kernel activities are triggered with interrupts, and presents means of deferring work to a later point in time.
- Chapter 15 shows how the kernel handles all time-related requirements, both with low and high resolution.
- Chapter 16 talks about speeding up kernel operations with the help of the page and buffer caches.
- Chapter 17 discusses how cached data in memory are synchronized with their sources on persistent storage devices.
- Chapter 18 introduces how page reclaim and swapping work.
- Chapter 19 gives an introduction to the audit implementation, which allows for observing in detail what the kernel is doing.
- Appendix A discusses peculiarities of various architectures supported by the kernel.
- Appendix B walks through various tools and means of working efficiently with the kernel sources.
- Appendix C provides some technical notes about the programming language C, and also
- discusses how the GNU C compiler is structured.
- Appendix D describes how the kernel is booted.
- Appendix E gives an introduction to the ELF binary format.
- Appendix F discusses numerous social aspects of kernel development and the Linux kernel community.
Tuesday, December 2, 2008
FPGA
1. Digital Systems Design with FPGAs and CPLDs Newnes, 2008 (PDF)
2. Designi with FPGAs and CPLDs CMP, 2002 (PDF)
2. Designi with FPGAs and CPLDs CMP, 2002 (PDF)
Sunday, November 30, 2008
iPhone 3G in Taiwan
I ordered 2 iPhone 3G online today. I'm looking for it.
Is there any embedded Linux solution for iPhone 3G now? Yes. Check it out.
And more ...
1. Linux on the iPhone.
2. iPhone Serial Port Tutorial
3. ...
Hardware Specification
SoC: Samsung S3C6400, ARM1176JZF, 620MHz (User's Manual, Rev 0.2)
This Samsung applications processor contains Imagination Technologies PowerVR MBX Lite (3D HW acceleration) and DDR SDRAM
Display Interface: NS LM2512AA
Touch Screen Controller: Broadcom BCM5974
Screen: 320 x 480 pixels, 3.5 inches
Audio Codec: Wolfson WM6180C
3G, 3.5G, WCDMA/HSDPA: Infineon SGOLD3, TriQuint Semiconductor (??)
802.11 b/g: Marvell
GPS: Infineon PMB2525(HH II)
Is there any embedded Linux solution for iPhone 3G now? Yes. Check it out.
And more ...
1. Linux on the iPhone.
2. iPhone Serial Port Tutorial
3. ...
Hardware Specification
SoC: Samsung S3C6400, ARM1176JZF, 620MHz (User's Manual, Rev 0.2)
This Samsung applications processor contains Imagination Technologies PowerVR MBX Lite (3D HW acceleration) and DDR SDRAM
Display Interface: NS LM2512AA
Touch Screen Controller: Broadcom BCM5974
Screen: 320 x 480 pixels, 3.5 inches
Audio Codec: Wolfson WM6180C
3G, 3.5G, WCDMA/HSDPA: Infineon SGOLD3, TriQuint Semiconductor (??)
802.11 b/g: Marvell
GPS: Infineon PMB2525(HH II)
Monday, November 24, 2008
Serial Interface
SPI (Serial Peripheral Interface)
wiki
serial-peripheral-interface-spi
I2C (Inter-IC)
I2C Specification 2.1 (PDF)
I2S (Inter-IC Sound)
I2S Specification (PDF)
JTAG (Joint Test Action Group)
JTAG Boundary Scan 1149.1 Specification Standard
Interduction to JTAG
wiki
serial-peripheral-interface-spi
I2C (Inter-IC)
I2C Specification 2.1 (PDF)
I2S (Inter-IC Sound)
I2S Specification (PDF)
JTAG (Joint Test Action Group)
JTAG Boundary Scan 1149.1 Specification Standard
Interduction to JTAG
Friday, November 21, 2008
AMBA Bus Driver for Linux
/linux//drivers/smba/
1. The AMBA core layer registers each detected AMBA bus using bus_register().
2. When an AMBA client device is probed and detected, its existence is recorded via device_register().
3. Finally, the client driver registers itself using driver_register().
1. The AMBA core layer registers each detected AMBA bus using bus_register().
2. When an AMBA client device is probed and detected, its existence is recorded via device_register().
3. Finally, the client driver registers itself using driver_register().
Tuesday, November 18, 2008
Install RVDS 4.0 on Fedora Core 9
Fedora Core 9
1. Install RVDS 4.0
2. Install RVI 3.3
3. [ ]# cd /opt/ARM
4. Update environment variable
[ ]# source RVDS40env.posh
[ ]# source ./RVI/Contents/3.3/173/rvi_3_3_env.posh
5. Install some libraries for "rvdebug"
(a) libXp-1.0.0-11.fc9.i386 -- libXp.so.6
[ ]# yum install libXp
(b) openmotif-2.3.1-1.fc9.i386.rpm -- libXm.so.3
[ ]# wget ftp://ftp.ics.com/openmotif/2.3/2.3.1/openmotif-2.3.1-1.fc9.i386.rpm
[ ]# rpm -ivh openmotif-2.3.1-1.fc9.i386.rpm
6. link for libXm.so.3
[ ]# cd /usr/lib
[ ]# ln -sf libXm.so.4.0.1 libXm.so.3
Fedora 14
Change 5.(b)
[ ]# wget http://download1.rpmfusion.org/nonfree/fedora/releases/14/Everything/i386/os/openmotif-2.3.3-1.fc14.i686.rpm
Change 6.
[ ]# cd /usr/lib
[ ]# ln -sf /usr/lib/openmotif/libXm.so.4.0.3 libXm.so.3
PS:
You will see the following error message if skipping step 5 and 6.
[root@scott ARM]# rvdebug
/opt/ARM/RVD/Core/4.0/1106/linux-pentium/bin/rvdebug: error while loading shared libraries: libXm.so.3: cannot open shared object file: No such file or directory
1. Install RVDS 4.0
2. Install RVI 3.3
3. [ ]# cd /opt/ARM
4. Update environment variable
[ ]# source RVDS40env.posh
[ ]# source ./RVI/Contents/3.3/173/rvi_3_3_env.posh
5. Install some libraries for "rvdebug"
(a) libXp-1.0.0-11.fc9.i386 -- libXp.so.6
[ ]# yum install libXp
(b) openmotif-2.3.1-1.fc9.i386.rpm -- libXm.so.3
[ ]# wget ftp://ftp.ics.com/openmotif/2.3/2.3.1/openmotif-2.3.1-1.fc9.i386.rpm
[ ]# rpm -ivh openmotif-2.3.1-1.fc9.i386.rpm
6. link for libXm.so.3
[ ]# cd /usr/lib
[ ]# ln -sf libXm.so.4.0.1 libXm.so.3
Fedora 14
Change 5.(b)
[ ]# wget http://download1.rpmfusion.org/nonfree/fedora/releases/14/Everything/i386/os/openmotif-2.3.3-1.fc14.i686.rpm
Change 6.
[ ]# cd /usr/lib
[ ]# ln -sf /usr/lib/openmotif/libXm.so.4.0.3 libXm.so.3
PS:
You will see the following error message if skipping step 5 and 6.
[root@scott ARM]# rvdebug
/opt/ARM/RVD/Core/4.0/1106/linux-pentium/bin/rvdebug: error while loading shared libraries: libXm.so.3: cannot open shared object file: No such file or directory
Tuesday, November 4, 2008
Further Reading about ARM11MPCore
Thursday, October 30, 2008
Intelligent Energy Management Technology
Intelligent Energy Management (IEM)
The IEM technology uses a technique called Dynamic Voltage and Frequency Scaling (DVFS) to implement the power and energy savings.
The IEM technology consists of the following components:
- IEM Software (OS and Applications) (Linux Kernel 2.6 Patch)
- Intelligent Energy Controller (IEC)
- Advanced Power Controller (APC)
ARM Physical IP:
- Metro
- Advantage
- Advantage-HS
Reference:
1. ARM
2. Power Management in Mobile Devices, Chapter 7.6
The IEM technology uses a technique called Dynamic Voltage and Frequency Scaling (DVFS) to implement the power and energy savings.
The IEM technology consists of the following components:
- IEM Software (OS and Applications) (Linux Kernel 2.6 Patch)
- Intelligent Energy Controller (IEC)
- Advanced Power Controller (APC)
ARM Physical IP:
- Metro
- Advantage
- Advantage-HS
Reference:
1. ARM
2. Power Management in Mobile Devices, Chapter 7.6
Tuesday, October 28, 2008
Open On-Chip Debugger
Open On-Chip Debugger
Openocd - JTAG Interface
Setting Up OpenOCD Under Linux
The USB ARM JTAG programmers. (Compliant with OpenOCD)
These are based on the FTDI USB chip.
Hubert Hoegl's USB ARM JTAG Programmer
USB JTAG-Programmer
OpenOCD website
Sparkfun
Olimex
Related Blogs:
JTAG Cable
Openocd - JTAG Interface
Setting Up OpenOCD Under Linux
The USB ARM JTAG programmers. (Compliant with OpenOCD)
These are based on the FTDI USB chip.
Hubert Hoegl's USB ARM JTAG Programmer
USB JTAG-Programmer
OpenOCD website
Sparkfun
Olimex
Related Blogs:
JTAG Cable
Serial Peripheral Interface (SPI)
SATA on the Linux Kernel
Synopsys (DesignWare Cores SATA AHCI)
Synopsys (DesignWare Cores SATA Host) (patch)
Reference:
http://en.wikipedia.org/wiki/Serial_ATA
Synopsys (DesignWare Cores SATA Host) (patch)
Reference:
http://en.wikipedia.org/wiki/Serial_ATA
Monday, October 27, 2008
Friday, October 24, 2008
Wednesday, October 22, 2008
NAND Flash
NAND Flash Chip Vendor
Intel
ONFI,
Micron
ONFI, SLC/MLC: Compatibility with ONFI synchronous interface
Toshiba
non-ONFI,
Micron NAND Flash
1) SLC-small/large block
2) MLC-large block
3) Toggle DDR NAND Flash (list)
SKhynix
Support ONFI for some new product (Databook)
Spansion
ONFI 1.0, Spansion® Product Selector Guide March 2013
1) SLC NAND (list)
2) MLC NAND
3) Toggle-Mode NAND
Micron MT29Fxx08x (Data Sheet) (Errata) ( Sample Code)
- Device Size : 4Gb = 4096 blocks
- Block Size : 64 pages
- Page Size : 2112 Bytes (2048 Bytes Data + 64 Bytes Spare)
- SLC Technology
Micron MT29Fxx16x (Data Sheet) (Errata) ( Sample Code)
- Device Size : 4Gb = 4096 blocks
- Block Size : 64 pages
- Page Size : 2112 Bytes (1024 Words Data + 32 Words Spare)
- SLC Technology
NAND MLC Flash
Micron MT29F16G08MAAWP (Data Sheet)
- Device Size : 16Gb = 4096 blocks
- Block Size : 128 pages
- Page Size : 4314 Bytes (4096 Bytes Data + 218 Bytes Spare)
- MLC Technology
- Open NAND Flash Interface (ONFI) 1.0 compliant (1.0 Spec) (2.0)
NAND Flash Controller
Example:
ARM SMC (PL353)
u-boot (patch)
Linux Device Driver (patch)
- Device Size : 4Gb = 4096 blocks
- Block Size : 64 pages
- Page Size : 2112 Bytes (2048 Bytes Data + 64 Bytes Spare)
- SLC Technology
Micron MT29Fxx16x (Data Sheet) (Errata) ( Sample Code)
- Device Size : 4Gb = 4096 blocks
- Block Size : 64 pages
- Page Size : 2112 Bytes (1024 Words Data + 32 Words Spare)
- SLC Technology
NAND MLC Flash
Micron MT29F16G08MAAWP (Data Sheet)
- Device Size : 16Gb = 4096 blocks
- Block Size : 128 pages
- Page Size : 4314 Bytes (4096 Bytes Data + 218 Bytes Spare)
- MLC Technology
- Open NAND Flash Interface (ONFI) 1.0 compliant (1.0 Spec) (2.0)
NAND Flash Controller
Example:
ARM SMC (PL353)
u-boot (patch)
Linux Device Driver (patch)
Thursday, October 16, 2008
NFS Client on Windows
NFS Client on Windows
1. Windows Services for UNIX (SFU)
2. Omni-NFS/X Enterprise v3.1
3. NFSPro
NFS Server on Linux (Fedora Core 9)
[root]# cat /etc/exports
# /etc/exports: NFS file systems being exported.
#/home/MPCore/rootfs/netfs *(rw,no_root_squash,async)
/home/u-boot-1.3.1-mpcore 172.20.2.100/24(rw,sync) localhost(rw,sync)
[root]# /etc/init.d/nfs restart
[root]# /etc/init.d/nfslock restart
Show/Check mount information for an NFS server
[root]# showmount -e localhost
Check firewall settings for NFS (Port: 2049)
1. Windows Services for UNIX (SFU)
2. Omni-NFS/X Enterprise v3.1
3. NFSPro
NFS Server on Linux (Fedora Core 9)
[root]# cat /etc/exports
# /etc/exports: NFS file systems being exported.
#/home/MPCore/rootfs/netfs *(rw,no_root_squash,async)
/home/u-boot-1.3.1-mpcore 172.20.2.100/24(rw,sync) localhost(rw,sync)
[root]# /etc/init.d/nfs restart
[root]# /etc/init.d/nfslock restart
Show/Check mount information for an NFS server
[root]# showmount -e localhost
Check firewall settings for NFS (Port: 2049)
Wednesday, October 8, 2008
Windows Live Writer
I write this by Windows Live Writer for testing.
I hope this free utility can help me to write more colorful blogs in easy way.
Tuesday, October 7, 2008
Sunday, October 5, 2008
ARM RealView PB11MPCore (8.1) Linux Kernel (Big-endian)
Linux kernel 2.6.24 Series (patch) (.config)
Linux kernel 2.6.26 Series (patch) (.config)
Linux kernel 2.6.26 Series (patch) (.config)
Thursday, October 2, 2008
ARM RealView PB11MPCore (7.2) U-boot User Manual
U-boot User Manual
Environment Variable:
ipaddr=172.20.5.100
serverip=172.20.5.200
netmask=255.255.0.0
bootfile=uImage
Commands:
tftpboot - boot image via network using TFTP protocol
tftpboot [loadAddress] [bootfilename]
RealView_PB # tftpboot
TFTP from server 172.20.5.200; our IP address is 172.20.5.100
Filename 'uImage'.
Load address: 0x7fc0
Loading:################################################
done
Bytes transferred = 1527128 (174d58 hex)
bootp - boot image via network using BootP/TFTP protocol
bootp [loadAddress] [bootfilename]
RealView_PB # bootp
BOOTP broadcast 1
DHCP client bound to address 172.20.99.82
TFTP from server 172.20.5.200; our IP address is 172.20.5.100
Filename 'uImage'.
Load address: 0x7fc0
Loading:################################################
done
Bytes transferred = 1527128 (174d58 hex)
bootm - boot application image from memory
bootm [addr [arg ...]]
- boot application image stored in memory
when booting a Linux kernel, 'arg' can be the address of an initrd image
RealView_PB # bootm 0x7fc0
or just
RealView_PB # bootm
References:
The DENX U-Boot and Linux Guide
Embedded Linux Primer: Chapter 7 Bootloaders (PDF)
Environment Variable:
ipaddr=172.20.5.100
serverip=172.20.5.200
netmask=255.255.0.0
bootfile=uImage
Commands:
tftpboot - boot image via network using TFTP protocol
tftpboot [loadAddress] [bootfilename]
RealView_PB # tftpboot
TFTP from server 172.20.5.200; our IP address is 172.20.5.100
Filename 'uImage'.
Load address: 0x7fc0
Loading:################################################
done
Bytes transferred = 1527128 (174d58 hex)
bootp - boot image via network using BootP/TFTP protocol
bootp [loadAddress] [bootfilename]
RealView_PB # bootp
BOOTP broadcast 1
DHCP client bound to address 172.20.99.82
TFTP from server 172.20.5.200; our IP address is 172.20.5.100
Filename 'uImage'.
Load address: 0x7fc0
Loading:################################################
done
Bytes transferred = 1527128 (174d58 hex)
bootm - boot application image from memory
bootm [addr [arg ...]]
- boot application image stored in memory
when booting a Linux kernel, 'arg' can be the address of an initrd image
RealView_PB # bootm 0x7fc0
or just
RealView_PB # bootm
References:
The DENX U-Boot and Linux Guide
Embedded Linux Primer: Chapter 7 Bootloaders (PDF)
Wednesday, October 1, 2008
Floating point exception
Using different hash type for GCC will generate different execution result.
Sample Code: Download
Makefile
hello.c
Experimentation:
1. Compile hello.c on Fedora
2. Execute hello on Debian and Gentoo
Output on Debian:
debian:~/hello# ./hello
Floating point exception
debian:~/hello# ./hello.both
Hello!
debian:~/hello# ./hello.gnu
Floating point exception
debian:~/hello# ./hello.sysv
Hello!
Result:
Explanation:
Fedora Core 6: GCC Compiler
Fedora developers have introduced changes in the ELF .hash section that provides symbols for dynamic linking. This new .gnu.hash section, which is produced with the new default --hash-style=gnu option for gcc, serves the same purpose as previous hash sections. It provides, however, an approximately 50% increase in dynamic linking speed. Binaries and libraries produced with the new hashing function are incompatible with older glibc and dynamic linker releases. To use the old-style hashing routines for compatibility with older glibc-based systems, pass the --hash-style=sysv option instead.
References:
http://docs.fedoraproject.org/release-notes/fc6
Sample Code: Download
Makefile
hello.c
Experimentation:
1. Compile hello.c on Fedora
2. Execute hello on Debian and Gentoo
Output on Debian:
debian:~/hello# ./hello
Floating point exception
debian:~/hello# ./hello.both
Hello!
debian:~/hello# ./hello.gnu
Floating point exception
debian:~/hello# ./hello.sysv
Hello!
Result:
Explanation:
Fedora Core 6: GCC Compiler
Fedora developers have introduced changes in the ELF .hash section that provides symbols for dynamic linking. This new .gnu.hash section, which is produced with the new default --hash-style=gnu option for gcc, serves the same purpose as previous hash sections. It provides, however, an approximately 50% increase in dynamic linking speed. Binaries and libraries produced with the new hashing function are incompatible with older glibc and dynamic linker releases. To use the old-style hashing routines for compatibility with older glibc-based systems, pass the --hash-style=sysv option instead.
References:
http://docs.fedoraproject.org/release-notes/fc6
GCC Reading Book List
GCC Reading Book List
1. The Definitive Guide to GCC, Second Edition (2006) (PDF)
2. An Introduction to GCC (2004) online
3. GNU Autoconf, Automake, and Libtool (2000) online
Links:
GCC online documentation
1. The Definitive Guide to GCC, Second Edition (2006) (PDF)
2. An Introduction to GCC (2004) online
3. GNU Autoconf, Automake, and Libtool (2000) online
Links:
GCC online documentation
Friday, September 26, 2008
USB on the Linux Kernel
When I was a BIOS engineer in Compal Electronics about 9 years ago, I first met USB in notebook. My assigned job is USB legacy support in the system BIOS, so it's an old friend to me. Definitely, USB is an excellent component and a must have function for some consumer product today. For example, PDA, iPod, Wi-Fi phone, etc. Fortunately, USB OTG makes it's possible for me to study and read USB again.
USB Reading Book List:
1. Universal Serial Bus System Architecture, Mindshare Inc.
2. Synopsys DesignWare Cores USB 2.0 Hi-Speed On-The-Go, Synopsys
3. USB 2.0 Specification, USB-IF (Download)
4. On-The-Go Supplement to the USB 2.0 Specification, USB-IF
5. ISP1761 Linux Programming Guide, NXP (PB11MPCore)
6. USB Complete: Everything You Need to Develop Custom USB Peripherals, Lakeview Research
7. USB Mass Storage: Designing and Programming Devices and Embedded Hosts, Lakeview Research
Internet Resource:
1. USB Made Simple
2. USB in a NutShell - a little journey through the USB 2.0 Spec.
USB Reading Book List:
1. Universal Serial Bus System Architecture, Mindshare Inc.
2. Synopsys DesignWare Cores USB 2.0 Hi-Speed On-The-Go, Synopsys
3. USB 2.0 Specification, USB-IF (Download)
4. On-The-Go Supplement to the USB 2.0 Specification, USB-IF
5. ISP1761 Linux Programming Guide, NXP (PB11MPCore)
6. USB Complete: Everything You Need to Develop Custom USB Peripherals, Lakeview Research
7. USB Mass Storage: Designing and Programming Devices and Embedded Hosts, Lakeview Research
Internet Resource:
1. USB Made Simple
2. USB in a NutShell - a little journey through the USB 2.0 Spec.
Tuesday, September 23, 2008
SoC Bus
AMBA
AMBA 1.0
1. ASB (Advanced System Bus)
2. APB (Advanced Peripheral Bus)
AMBA 2.0
1. AHB (Advanced High-performance Bus)
2. ASB
3. APB (Advanced Peripheral Bus)
AMBA 3.0
1. AXI (Advanced eXtensible Interface)
2. APB
3. AHB-lite
4. ATB (Advanced Trace Bus)
CoreConnect
1. PLB (Processor Local Bus)
2. OPB (On-chip Peripheral Bus)
3. DCR (Device Control Register)
OCP (Open Core Protocol)
Wishbone
Reference:
Introduction to AMBA Bus System (Chinese)
ARM AMBA Overview
AMBA 1.0
1. ASB (Advanced System Bus)
2. APB (Advanced Peripheral Bus)
AMBA 2.0
1. AHB (Advanced High-performance Bus)
2. ASB
3. APB (Advanced Peripheral Bus)
AMBA 3.0
1. AXI (Advanced eXtensible Interface)
2. APB
3. AHB-lite
4. ATB (Advanced Trace Bus)
CoreConnect
1. PLB (Processor Local Bus)
2. OPB (On-chip Peripheral Bus)
3. DCR (Device Control Register)
OCP (Open Core Protocol)
Wishbone
Reference:
Introduction to AMBA Bus System (Chinese)
ARM AMBA Overview
Thursday, September 18, 2008
Top 10 Free Software on Windows
These tools maybe are not the best but are very useful to me.
System
01. CCleaner - It’s a system optimization and privacy tool.
02. Virtual CloneDrive - Virtual CD/DVD drive
03.
04. Ashampoo Burning Studio Free
05. EasyShutSys
The first cracked program in my life. Ha! No more ads.
06. DVD Shrink - a software to backup DVD discs.
07. ImgBurn - a lightweight CD/DVD/HD DVD/Blu-ray burning application.
08. nrg2iso - this program converts Nero CD images into ISO-9660 CD images.
09. EasyCapture - a easy-to-use free screen capture software
10. WinSnap - Taking and editing screenshots
Network
01. FlashGet - download manager
02. Cerberus FTP Server - FTP Server
03. HFS - HTTP File Server
04.
05.
06. NetMeter - bandwidth monitor
07. NetSetMan - a network settings manager which can easily switch between 6 different profiles.
08.
09. Mac MakeUp
10. Technitium MAC Address Changer
Multimedia
01. VLC media player - a multimedia player
02. MPCSTAR - a package of video player and many codecs
02. VUPlayer - a multi-format audio player
03. DivX Video Player - a high-quality DivX video player
04. Matroska Pack - an extensible open standard Audio/Video container.
05. AVIcodec - a free multimedia file analyser
06. Icy Radio - a internet radio player
07. Clone2Go Video Converter (Audio Convert)
08. Free WMA to MP3 Converter
09. Flash Movie Player
10. FLV Player
Hard Disk/File Manager
01. HDD Low Level Format Tool
02.
03. Total Commander
04. FFSJ - the Fastest File Splitter and Joiner
05. HJSplit - file splitter and joiner
06. Arpoon Checksum - checksum
07.
08.
09.
10.
Reader/Editor
01. Adobe Reader
02. CutePDF Writer - PDF creation software
03. PDFill PDF Tools
04.
05. Free PDF to Word Doc Converter
06. Paint.NET - a image and photo editing software
07.
08.
09.
10.
Software Developer/Debug
01. TeraTerm Pro Web - It's a tool for connecting with remote Telnet and SSH hosts.
02. Tftpd32 - TFTP Server, DHCP Server
03. SolarWinds - TFTP Server, Subnet Calculator, Wake-on-LAN
04. TortoiseSVN - a revision/version/source control software.
05. IP->Com - RS232 ports on your PC to interface directly to a TCP/IP network.
06. Wireshark - Sniffer
07.
08.
09.
10. SNMPView - SNMPView shows fast and simple values from SNMP devices.
Other Software Ranking:
1. TOP 300 Freeware software!
System
01. CCleaner - It’s a system optimization and privacy tool.
02. Virtual CloneDrive - Virtual CD/DVD drive
03.
04. Ashampoo Burning Studio Free
05. EasyShutSys
The first cracked program in my life. Ha! No more ads.
06. DVD Shrink - a software to backup DVD discs.
07. ImgBurn - a lightweight CD/DVD/HD DVD/Blu-ray burning application.
08. nrg2iso - this program converts Nero CD images into ISO-9660 CD images.
09. EasyCapture - a easy-to-use free screen capture software
10. WinSnap - Taking and editing screenshots
Network
01. FlashGet - download manager
02. Cerberus FTP Server - FTP Server
03. HFS - HTTP File Server
04.
05.
06. NetMeter - bandwidth monitor
07. NetSetMan - a network settings manager which can easily switch between 6 different profiles.
08.
09. Mac MakeUp
10. Technitium MAC Address Changer
Multimedia
01. VLC media player - a multimedia player
02. MPCSTAR - a package of video player and many codecs
02. VUPlayer - a multi-format audio player
03. DivX Video Player - a high-quality DivX video player
04. Matroska Pack - an extensible open standard Audio/Video container.
05. AVIcodec - a free multimedia file analyser
06. Icy Radio - a internet radio player
07. Clone2Go Video Converter (Audio Convert)
08. Free WMA to MP3 Converter
09. Flash Movie Player
10. FLV Player
Hard Disk/File Manager
01. HDD Low Level Format Tool
02.
03. Total Commander
04. FFSJ - the Fastest File Splitter and Joiner
05. HJSplit - file splitter and joiner
06. Arpoon Checksum - checksum
07.
08.
09.
10.
Reader/Editor
01. Adobe Reader
02. CutePDF Writer - PDF creation software
03. PDFill PDF Tools
04.
05. Free PDF to Word Doc Converter
06. Paint.NET - a image and photo editing software
07.
08.
09.
10.
Software Developer/Debug
01. TeraTerm Pro Web - It's a tool for connecting with remote Telnet and SSH hosts.
02. Tftpd32 - TFTP Server, DHCP Server
03. SolarWinds - TFTP Server, Subnet Calculator, Wake-on-LAN
04. TortoiseSVN - a revision/version/source control software.
05. IP->Com - RS232 ports on your PC to interface directly to a TCP/IP network.
06. Wireshark - Sniffer
07.
08.
09.
10. SNMPView - SNMPView shows fast and simple values from SNMP devices.
Other Software Ranking:
1. TOP 300 Freeware software!
Monday, September 15, 2008
TRON
What is the world's most widely used operating system? It's not Windows, Unix or Linux, but ITRON, a Japanese real-time kernel for small-scale embedded systems.
TRON
TRON is an acronym for "The Real-time Operating system Nucleus". First heard from LinuxLink Radio Episode 10.
The speaker said that it was very popular in Japan. Maybe I can spend a little time on it. Hopefully.
Reference:
TRON
TRON is an acronym for "The Real-time Operating system Nucleus". First heard from LinuxLink Radio Episode 10.
- ITRON (Industrial TRON) ITRON runs on mobile phones, digital cameras, CD players and countless other electronic devices.
- BTRON (Business TRON)
- CTRON (Central and Communications TRON)
- MTRON (Macro TRON)
The speaker said that it was very popular in Japan. Maybe I can spend a little time on it. Hopefully.
Reference:
System Performance Counter
These utilities or patch files measure the performance of the system.
Reference:
Adding Performance Counters to the Kernel
Reference:
Adding Performance Counters to the Kernel
Sunday, September 14, 2008
C libraries for multiple-precision computations
The GMP library is a C library for multiple-precision computations.
The MPFR library is a C library for multiple-precision floating-point computations with correct rounding.
MPFR is based on the GMP multiple-precision library.
The MPFR library is a C library for multiple-precision floating-point computations with correct rounding.
MPFR is based on the GMP multiple-precision library.
Thursday, September 11, 2008
[Software] netsh
netsh
HOWTO: Disable/Enable network interface from command line
Platform: Windows XP, Server 2003
Command:
The original version of netsh on Windows XP can not work like that. These files are copy from Windows Server 2003. They can be used on Windows XP platform without any problem.
Download
HOWTO: Disable/Enable network interface from command line
Platform: Windows XP, Server 2003
Command:
The original version of netsh on Windows XP can not work like that. These files are copy from Windows Server 2003. They can be used on Windows XP platform without any problem.
Download
Monday, September 8, 2008
ARM RealView PB11MPCore (7.1) Bootloader (big-endian)
u-boot version 1.3.1
Related Blog :
ARM RealView PB11MPCore (7) Bootloader
- u-boot source code
- apply ARM patch (same as ARM RealView PB11MPCore (7) Bootloader)
- apply endian patch
- make xxx_config
- make
Related Blog :
ARM RealView PB11MPCore (7) Bootloader
ARM RealView PB11MPCore (6.1) BootMonitor (big-endian)
Proprietary
Copy from "ARM Versatile Family CD Version 3.4"
Copy from "ARM Versatile Family CD Version 3.4"
ARM RealView PB11MPCore (1.2) - Toolchain (big-endian)
buildroot (version 20080824 snapshots)
[ ]# wget buildroot-20080824.tar.bz2
[ ]# tar jxvf buildroot-20080824.tar.bz2
[ ]# cd buildroot
Configuration file: .config
[ ]# wget buildroot-20080824-gcc-4.1.2.config
[ ]# mv buildroot-20080824-gcc-4.1.2.config .config
Patch:
Remove lzo patches which aren't required with latest liblzo package updates.
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-llzo.patch
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-lzo-header.patch
Build
[ ]# make menuconfig
[ ]# make
[ ]# wget buildroot-20080824.tar.bz2
[ ]# tar jxvf buildroot-20080824.tar.bz2
[ ]# cd buildroot
Configuration file: .config
[ ]# wget buildroot-20080824-gcc-4.1.2.config
[ ]# mv buildroot-20080824-gcc-4.1.2.config .config
Patch:
Remove lzo patches which aren't required with latest liblzo package updates.
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-llzo.patch
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-lzo-header.patch
Build
[ ]# make menuconfig
[ ]# make
ARM RealView PB11MPCore (1.1) - Toolchain (little-endian)
buildroot (version 20080824 snapshots)
[ ]# wget buildroot-20080824.tar.bz2
[ ]# tar jxvf buildroot-20080824.tar.bz2
[ ]# cd buildroot
Configuration file: .config
[ ]# wget buildroot-20080824-gcc-4.1.2-armle.config.gz
[ ]# gunzip buildroot-20080824-gcc-4.1.2-armle.config.gz
[ ]# mv buildroot-20080824-gcc-4.1.2-armle.config .config
Patch:
Remove lzo patches which aren't required with latest liblzo package updates.
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-llzo.patch
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-lzo-header.patch
Build
[ ]# make menuconfig
[ ]# make
[ ]# wget buildroot-20080824.tar.bz2
[ ]# tar jxvf buildroot-20080824.tar.bz2
[ ]# cd buildroot
Configuration file: .config
[ ]# wget buildroot-20080824-gcc-4.1.2-armle.config.gz
[ ]# gunzip buildroot-20080824-gcc-4.1.2-armle.config.gz
[ ]# mv buildroot-20080824-gcc-4.1.2-armle.config .config
Patch:
Remove lzo patches which aren't required with latest liblzo package updates.
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-llzo.patch
[ ]# rm package/mtd/mtd-utils/mtd-utils-1.1.0-target-lzo-header.patch
Build
[ ]# make menuconfig
[ ]# make
Wednesday, September 3, 2008
GNU Compiler
GCC
It's really hard to build a robust cross-compiler toolchain for ARM/MIPS platform. That's also a tough decision to choose the right distribution. So far, no one is perfect. We have to build our own toolchain by ourself.
I would like to introduce you some toolchain that I have used before.
CodeSourcery
This toolchain is good, however its C library is newlib. I hope they will release uclibc version in the future.
buildroot
I used this one to build our own uclibc-based toolchain for ARM platform long time ago. Basically, it's workable for many different processor. The only problem is it change all the time.
ELDK
They provide uclibc-based toolchain for ARM/MIPS/PPC platforms.
SnapGear
I have used this toolchain for Intel IXPxxx project.
crosstool
I have used this suite long long time ago. If you are willing to give it a try, please check the build results first. Your life will be easier.
From Scratch (manuality)
Version:
gcc-2.95
gcc-3.4 (3.4.6)
gcc-4.3 (4.3.2)
GCC online documentation
What's difference?
Reference:
CE Linux Forum
It's really hard to build a robust cross-compiler toolchain for ARM/MIPS platform. That's also a tough decision to choose the right distribution. So far, no one is perfect. We have to build our own toolchain by ourself.
I would like to introduce you some toolchain that I have used before.
CodeSourcery
This toolchain is good, however its C library is newlib. I hope they will release uclibc version in the future.
buildroot
I used this one to build our own uclibc-based toolchain for ARM platform long time ago. Basically, it's workable for many different processor. The only problem is it change all the time.
ELDK
They provide uclibc-based toolchain for ARM/MIPS/PPC platforms.
SnapGear
I have used this toolchain for Intel IXPxxx project.
crosstool
I have used this suite long long time ago. If you are willing to give it a try, please check the build results first. Your life will be easier.
From Scratch (manuality)
Version:
gcc-2.95
gcc-3.4 (3.4.6)
gcc-4.3 (4.3.2)
GCC online documentation
What's difference?
Reference:
CE Linux Forum
Tuesday, September 2, 2008
ARM RealView PB11MPCore (8) Linux Kernel
Linux Kernel
Linux kernel 2.6.24 Series (patch) (.config)
Linux kernel 2.6.26 Series (patch) (.config)
Boot-up Procedure
Linux kernel 2.6.24 Series (patch) (.config)
Linux kernel 2.6.26 Series (patch) (.config)
Boot-up Procedure
ARM RealView PB11MPCore (7) Bootloader
u-boot
Scenario
Project Name: realview_pb11mp
ARCH: arm
CPU: armct_rv
Board Name: realview_pb
Porting Procedure
In Brief :
[ ]# wget http://ftp.denx.de/pub/u-boot/u-boot-1.3.1.tar.bz2
[ ]# wget u-boot-mpcore.patch.gz
[ ]# tar jxvf u-boot-1.3.1.tar.bz2
[ ]# mv u-boot-1.3.1 u-boot-1.3.1-mpcore
[ ]# cd u-boot-1.3.1-mpcore
[ ]# zcat ../u-boot-mpcore.patch.gz | patch -p1
[ ]# make realview_pb11mp_config
[ ]# make
[ ]# cp u-boot u-boot.axf
Patched Files List :
patching file board/realview_pb/config.mk
patching file board/realview_pb/lowlevel_init.S
patching file board/realview_pb/Makefile
patching file board/realview_pb/realview_pb.c
patching file board/realview_pb/split_by_variant.sh
patching file board/realview_pb/u-boot.lds.template
patching file cpu/armct_rv/config.mk
patching file cpu/armct_rv/cpu.c
patching file cpu/armct_rv/interrupts.c
patching file cpu/armct_rv/Makefile
patching file cpu/armct_rv/start.S
patching file doc/README-realview_pb
patching file drivers/net/Makefile
patching file drivers/net/smc9118.c
patching file drivers/net/smc9118.h
patching file drivers/net/smc_rv.c
patching file drivers/net/smc_rv.h
patching file include/armsupplied.h
patching file include/asm-arm/div64.h
patching file include/asm-arm/mach-types.h
patching file include/configs/realview_pb.h
patching file lib_arm/armlinux.c
patching file lib_arm/div64.S
patching file lib_arm/Makefile
patching file MAKEALL
patching file Makefile
In Detail :
Affected directories in porting a new ARM processor design are:
board, cpu, include, and lib_arm. (and maybe drivers) All other directories remain the same for any architectures.
mkconfig -a realview_pb arm armct_rv realview_pb
SYNOPSIS:
mkconfig -a BOARD_NAME ARCH CPU BOARD [VENDOR] [SOC]
A board/realview_pb/u-boot.lds
A nclude/config.h
A include/config.mk
L include/asm -> include/asm-arm
L include/asm-arm/arch -> include/asm-arm/arch-armct_rv
L include/asm-arm/proc -> include/asm-arm/proc-armv
- How to port u-boot to a new platform
Scenario
Project Name: realview_pb11mp
ARCH: arm
CPU: armct_rv
Board Name: realview_pb
Porting Procedure
In Brief :
[ ]# wget http://ftp.denx.de/pub/u-boot/u-boot-1.3.1.tar.bz2
[ ]# wget u-boot-mpcore.patch.gz
[ ]# tar jxvf u-boot-1.3.1.tar.bz2
[ ]# mv u-boot-1.3.1 u-boot-1.3.1-mpcore
[ ]# cd u-boot-1.3.1-mpcore
[ ]# zcat ../u-boot-mpcore.patch.gz | patch -p1
[ ]# make realview_pb11mp_config
[ ]# make
[ ]# cp u-boot u-boot.axf
Patched Files List :
patching file board/realview_pb/config.mk
patching file board/realview_pb/lowlevel_init.S
patching file board/realview_pb/Makefile
patching file board/realview_pb/realview_pb.c
patching file board/realview_pb/split_by_variant.sh
patching file board/realview_pb/u-boot.lds.template
patching file cpu/armct_rv/config.mk
patching file cpu/armct_rv/cpu.c
patching file cpu/armct_rv/interrupts.c
patching file cpu/armct_rv/Makefile
patching file cpu/armct_rv/start.S
patching file doc/README-realview_pb
patching file drivers/net/Makefile
patching file drivers/net/smc9118.c
patching file drivers/net/smc9118.h
patching file drivers/net/smc_rv.c
patching file drivers/net/smc_rv.h
patching file include/armsupplied.h
patching file include/asm-arm/div64.h
patching file include/asm-arm/mach-types.h
patching file include/configs/realview_pb.h
patching file lib_arm/armlinux.c
patching file lib_arm/div64.S
patching file lib_arm/Makefile
patching file MAKEALL
patching file Makefile
In Detail :
Affected directories in porting a new ARM processor design are:
board, cpu, include, and lib_arm. (and maybe drivers) All other directories remain the same for any architectures.
mkconfig -a realview_pb arm armct_rv realview_pb
SYNOPSIS:
mkconfig -a BOARD_NAME ARCH CPU BOARD [VENDOR] [SOC]
A board/realview_pb/u-boot.lds
A nclude/config.h
A include/config.mk
L include/asm -> include/asm-arm
L include/asm-arm/arch -> include/asm-arm/arch-armct_rv
L include/asm-arm/proc -> include/asm-arm/proc-armv
ARM RealView PB11MPCore (6) BootMonitor
BootMonitor
ARM PB11MPCore Boot Monitor
Version: V4.1
Build Date: Oct 24 2007
Tile Site : Tile Not Fitted
Endian: Little
K:\> flash list image
Flash Area Base 0x40000000
Address Name
------- ----
0x40000000 Boot_Monitor
0x40040000 NFU
0x40080000 SYSTEM.DAT
0x400C0000 U-BOOT
0x40100000 UIMAGE
0x402C0000 BASE
Flash Area Base 0x43FC0000
Address Name
------- ----
Flash Area Base 0x44000000
Address Name
------- ----
Flash Area Base 0x47FC0000
Address Name
------- ----
ARM PB11MPCore Boot Monitor
Version: V4.1
Build Date: Oct 24 2007
Tile Site : Tile Not Fitted
Endian: Little
K:\> flash list image
Flash Area Base 0x40000000
Address Name
------- ----
0x40000000 Boot_Monitor
0x40040000 NFU
0x40080000 SYSTEM.DAT
0x400C0000 U-BOOT
0x40100000 UIMAGE
0x402C0000 BASE
Flash Area Base 0x43FC0000
Address Name
------- ----
Flash Area Base 0x44000000
Address Name
------- ----
Flash Area Base 0x47FC0000
Address Name
------- ----
Monday, September 1, 2008
DistroWatch.com
DistroWatch.com
The host, Ladislav Bodnar, is a colleagues of mine in Linpus, built this website couple years ago. There are some interesting statistic about Linux distributions in the world.
The host, Ladislav Bodnar, is a colleagues of mine in Linpus, built this website couple years ago. There are some interesting statistic about Linux distributions in the world.
Saturday, August 30, 2008
Git -- Version Control System
Git is more and more popular now so I plan to write a note about it. However, there already exist many great articles on the Internet.
1. Git - SVN Crash Course
2. http://git-scm.com
3. Everyday GIT With 20 Commands Or So
Related Blog :
SubVersion Quick Guide
1. Git - SVN Crash Course
2. http://git-scm.com
3. Everyday GIT With 20 Commands Or So
Related Blog :
SubVersion Quick Guide
ARM RealView PB11MPCore (4.1) - Network performance Testing
I would like to introduce you some of tools for measuring network performance here. They are pretty simple and useful.
iperf
Iperf is a tool to measure maximum TCP bandwidth, allowing the tuning of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss.
Scott's slide about iperf.
nuttcp
nuttcp is a TCP/UDP network testing tool, much like iperf. I think it's the best such tool available, for its simplicity, ease of use, and feature set.
Netperf
Netperf is a benchmark that can be used to measure the performance of many different types of networking. It provides tests for both unidirecitonal throughput, and end-to-end latency.
TTCP
Bwping
Nettest
NetSpec
Related Blog :
Network Performance
iperf
Iperf is a tool to measure maximum TCP bandwidth, allowing the tuning of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss.
Scott's slide about iperf.
nuttcp
nuttcp is a TCP/UDP network testing tool, much like iperf. I think it's the best such tool available, for its simplicity, ease of use, and feature set.
Netperf
Netperf is a benchmark that can be used to measure the performance of many different types of networking. It provides tests for both unidirecitonal throughput, and end-to-end latency.
TTCP
Bwping
Nettest
NetSpec
Related Blog :
Network Performance
Friday, August 29, 2008
Monday, August 25, 2008
ARM RealView PB11MPCore (4) - Testing
LMbench
http://www.bitmover.com/lmbench/
[ ]# cd lmbench3/src
[ ]# make
. . . . . .
gmake[1]: *** No rule to make target `../SCCS/s.ChangeSet', needed by `bk.ver'. Stop.
gmake[1]: Leaving directory `/root/Desktop/lmbench3/src'
make: *** [lmbench] Error 2
Patch
In the lmbench2 or lmbench3 directory:
[ ]# mkdir ./SCCS
[ ]# touch ./SCCS/s.ChangeSet
Compile
[ ]# make OS=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
References:
1) lmbench – an extensible micro-benchmark suite (2004)
2) lmbench3: measuring scalability (2002)
3) lmbench: Portable Tools for Performance Analysis (1996)
http://www.bitmover.com/lmbench/
[ ]# cd lmbench3/src
[ ]# make
. . . . . .
gmake[1]: *** No rule to make target `../SCCS/s.ChangeSet', needed by `bk.ver'. Stop.
gmake[1]: Leaving directory `/root/Desktop/lmbench3/src'
make: *** [lmbench] Error 2
Patch
In the lmbench2 or lmbench3 directory:
[ ]# mkdir ./SCCS
[ ]# touch ./SCCS/s.ChangeSet
Compile
[ ]# make OS=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc AR=arm-none-linux-gnueabi-ar
References:
1) lmbench – an extensible micro-benchmark suite (2004)
2) lmbench3: measuring scalability (2002)
3) lmbench: Portable Tools for Performance Analysis (1996)
Friday, August 22, 2008
ARM RealView PB11MPCore (3) - Troubleshooting
Bug! Bug! Bug!
1) Flash
patched
2) Ethernet (SMSC LAN9118)
patched
3) PCI
?
4) PCI Express
?
5) USB (NXP ISP1761) (doc)
patching
1) Flash
patched
2) Ethernet (SMSC LAN9118)
patched
3) PCI
?
4) PCI Express
?
5) USB (NXP ISP1761) (doc)
patching
ARM RealView PB11MPCore (2) - Installation
Power on evaluation board. Switch to the "Flash" submenu of the Boot Monitor:
K:\> flash
Burn u-boot, Linux kernel and root filesystem
Flash> write image U-BOOT.AXF
Flash> write binary UIMAGE
Flash> write binary BASE.RFS
Display flash layout
Flash> list images
Flash Area Base 0x40000000
Address Name
------- ----
0x40000000 Boot_Monitor
0x40040000 NFU
0x40080000 SYSTEM.DAT
0x400C0000 U-BOOT
0x40100000 UIMAGE
0x402C0000 BASE
Flash Area Base 0x43FC0000
Flash Area Base 0x44000000
Flash Area Base 0x47FC0000
Flash> exit
Run u-boot
> flash run U-BOOT
Set some environment variable for u-boot
RealView_PB # setenv bootargs root=/dev/mtdblock0 mtdparts=armflash.0:7268k@0x2C0000(cramfs) ip=dhcp mem=128M console=ttyAMA0
RealView_PB # setenv bootcmd cp 0x40100000 0x7fc0 0x100000\; bootm
RealView_PB # saveenv
reset, bootup Linux
K:\> flash
Burn u-boot, Linux kernel and root filesystem
Flash> write image U-BOOT.AXF
Flash> write binary UIMAGE
Flash> write binary BASE.RFS
Display flash layout
Flash> list images
Flash Area Base 0x40000000
Address Name
------- ----
0x40000000 Boot_Monitor
0x40040000 NFU
0x40080000 SYSTEM.DAT
0x400C0000 U-BOOT
0x40100000 UIMAGE
0x402C0000 BASE
Flash Area Base 0x43FC0000
Flash Area Base 0x44000000
Flash Area Base 0x47FC0000
Flash> exit
Run u-boot
> flash run U-BOOT
Set some environment variable for u-boot
RealView_PB # setenv bootargs root=/dev/mtdblock0 mtdparts=armflash.0:7268k@0x2C0000(cramfs) ip=dhcp mem=128M console=ttyAMA0
RealView_PB # setenv bootcmd cp 0x40100000 0x7fc0 0x100000\; bootm
RealView_PB # saveenv
reset, bootup Linux
ARM RealView PB11MPCore (1) - Compile
Install Toolchain
[ ]# mkdir -p /home/MPCore/toolchain
[ ]# cd /home/MPCore/toolchain
[ ]# wget http://www.arm.com/linux/arm-2007q1-21-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
[ ]# tar jxvf arm-2007q1-21-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
[ ]# export PATH=/home/MPCore/toolchain/arm-2007q1/bin:$PATH
u-boot
[ ]# mkdir -p /home/MPCore/u-boot
[ ]# cd /home/MPCore/u-boot
[ ]# wget http://www.arm.com/linux/U-Boot-src.tar.gz
[ ]# tar zxvf U-Boot-src.tar.gz
[ ]# cd projects/prd33_ael/overnight/src/
[ ]# make realview_pb11mp_config
[ ]# make
Linux Kernel 2.6.24-arm2
[ ]# mkdir -p /home/MPCore/linux
[ ]# cd /home/MPCore/linux
[ ]# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2
[ ]# ;; Download kernel_src_patch-2.6.24-arm2.gz
[ ]# ;; Download default linux kernel configuration file
[ ]# tar jxvf linux-2.6.24.tar.bz2
[ ]# cd linux-2.6.24
[ ]# zcat ../kernel_src_patch-2.6.24-arm2.gz | patch -p1
[ ]# cp ../config-2.6.24-arm2-realview-v6-smp .config
[ ]# make menuconfig
[ ]# make
[ ]# make uImage
After the build has completed, the resulting uImage will be located in the arch/arm/boot directory.
Image Name: Linux-2.6.24-arm2
Created: Fri Aug 22 05:09:41 2008
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1684912 Bytes = 1645.42 kB = 1.61 MB
Load Address: 0x00008000
Entry Point: 0x00008000
Image arch/arm/boot/uImage is ready
Root File System
Download source code, pre-built filesystem images (full or base)
[ ]# wget http://www.arm.com/linux/ARM_Embedded_Linux-2.5.0.tar.bz2
[ ]# wget http://www.arm.com/linux/armfull_2.5.cramfs
[ ]# wget http://www.arm.com/linux/armbase_2.5.cramfs
[ ]# mkdir -p /home/MPCore/toolchain
[ ]# cd /home/MPCore/toolchain
[ ]# wget http://www.arm.com/linux/arm-2007q1-21-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
[ ]# tar jxvf arm-2007q1-21-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
[ ]# export PATH=/home/MPCore/toolchain/arm-2007q1/bin:$PATH
u-boot
[ ]# mkdir -p /home/MPCore/u-boot
[ ]# cd /home/MPCore/u-boot
[ ]# wget http://www.arm.com/linux/U-Boot-src.tar.gz
[ ]# tar zxvf U-Boot-src.tar.gz
[ ]# cd projects/prd33_ael/overnight/src/
[ ]# make realview_pb11mp_config
[ ]# make
Linux Kernel 2.6.24-arm2
[ ]# mkdir -p /home/MPCore/linux
[ ]# cd /home/MPCore/linux
[ ]# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2
[ ]# ;; Download kernel_src_patch-2.6.24-arm2.gz
[ ]# ;; Download default linux kernel configuration file
[ ]# tar jxvf linux-2.6.24.tar.bz2
[ ]# cd linux-2.6.24
[ ]# zcat ../kernel_src_patch-2.6.24-arm2.gz | patch -p1
[ ]# cp ../config-2.6.24-arm2-realview-v6-smp .config
[ ]# make menuconfig
[ ]# make
[ ]# make uImage
After the build has completed, the resulting uImage will be located in the arch/arm/boot directory.
Image Name: Linux-2.6.24-arm2
Created: Fri Aug 22 05:09:41 2008
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1684912 Bytes = 1645.42 kB = 1.61 MB
Load Address: 0x00008000
Entry Point: 0x00008000
Image arch/arm/boot/uImage is ready
Root File System
Download source code, pre-built filesystem images (full or base)
[ ]# wget http://www.arm.com/linux/ARM_Embedded_Linux-2.5.0.tar.bz2
[ ]# wget http://www.arm.com/linux/armfull_2.5.cramfs
[ ]# wget http://www.arm.com/linux/armbase_2.5.cramfs
ARM RealView PB11MPCore (0)
I got the evaluation board (PB11MPCore) yesterday. Basically, this "Symmetric Multi-Processing" platform is my first SMP project for embedded system. That would be fun.
Linux's gonna be port to this platform and our next generation SoC. Cool!
I would like to share all my experience about this. Let's get start it. :)
Linux's gonna be port to this platform and our next generation SoC. Cool!
I would like to share all my experience about this. Let's get start it. :)
Wednesday, August 20, 2008
USB OTG on the Linux Kernel
Studying
Some background
History
USB 1.0 - 1996, 01.
USB 2.0 - 2000, 04.
OTG 1.0 - 2001, 12. Supplement to the USB 2.0 Specification
OTG 1.3 - 2006, 12. Supplement to the USB 2.0 Specification
On-The-Go Supplement to the USB 2.0 Specification, Revision 1.3
(TOC, 53 pages)
1. Introduction
2. Acronyms and Terms
3. Significant Features
4. Cables and Connectors
5. Electrical Requirements
5.1 A-Device Electrical Requirements
5.2 B-Device Electrical Requirements
5.3 Session Request Protocol
5.4 Electrical Characteristics
5.5 Device Timings
6. Host Negotiation Protocol
Something new in OTG 1.0
Session Request Protocol (SRP)
USB OTG uses the SRP to establish a session (connection) between two USB devices.
Host Negotiation Protocol (HNP)
Once connected, OTG dual-role devices can exchange roles—host and peripheral—by using HNP.
Targeted Peripheral List (TPL)
No Silent Failures
Mini-AB Receptacle
Mini-A Plug and Mini-A Receptacle
USB OTG on the Linux Kernel
Example:
(1) SMC WSKP100 Wi-Fi Phone
Reference:
USB On-The-Go
Related Blog:
USB Mass Storage Device Descriptor
Some background
History
USB 1.0 - 1996, 01.
USB 2.0 - 2000, 04.
OTG 1.0 - 2001, 12. Supplement to the USB 2.0 Specification
OTG 1.3 - 2006, 12. Supplement to the USB 2.0 Specification
On-The-Go Supplement to the USB 2.0 Specification, Revision 1.3
(TOC, 53 pages)
1. Introduction
2. Acronyms and Terms
3. Significant Features
4. Cables and Connectors
5. Electrical Requirements
5.1 A-Device Electrical Requirements
5.2 B-Device Electrical Requirements
5.3 Session Request Protocol
5.4 Electrical Characteristics
5.5 Device Timings
6. Host Negotiation Protocol
Something new in OTG 1.0
Session Request Protocol (SRP)
USB OTG uses the SRP to establish a session (connection) between two USB devices.
Host Negotiation Protocol (HNP)
Once connected, OTG dual-role devices can exchange roles—host and peripheral—by using HNP.
Targeted Peripheral List (TPL)
No Silent Failures
Mini-AB Receptacle
Mini-A Plug and Mini-A Receptacle
USB OTG on the Linux Kernel
Example:
(1) SMC WSKP100 Wi-Fi Phone
Reference:
USB On-The-Go
Related Blog:
USB Mass Storage Device Descriptor
PCI Express Subsystem on the Linux Kernel
Studying...
PCI Express subsystem on the Linux kernel
Scott's slide Draft
Reading List
1. PCI Express System Architecture, MindShare. Inc. (PDF)
2. Introduction to PCI Express - A Hardware and Software Developer's Guide (PDF)
PCI Express subsystem on the Linux kernel
Scott's slide Draft
Reading List
1. PCI Express System Architecture, MindShare. Inc. (PDF)
2. Introduction to PCI Express - A Hardware and Software Developer's Guide (PDF)
Tuesday, August 12, 2008
IEEE 1588 - 2008
Thursday, July 24, 2008
Monitor Network Throughput
Monday, July 21, 2008
Monday, July 14, 2008
Thursday, July 10, 2008
Install Trace32 on Linux Fedora Core 9
Install Trace32 on Linux Fedora Core 9
1. Trace32 Home Directory
[ ]# mkdir -p /opt/t32/bin
[ ]# cd /opt/t32
2. Copy Trace32 files from CD-ROM to /opt/t32
[ ]# cp -r /home/scottlinux/Trace32/iso/files/* .
[ ]# cp -r /home/scottlinux/Trace32/iso/bin/pc_linux/ bin/
[ ]# cp -r /home/scottlinux/Trace32/iso/bin/pc_linux/config.t32 .
[ ]# chmod -R u+w *
[ ]# /opt/t32/bin/pc_linux/filecvt /opt/t32
3. Download/Install the Acrobat Reader
[ ]# wget http://ardownload.adobe.com/pub/adobe/reader/unix/8.x/8.1.2/enu/AdobeReader_enu-8.1.2-1.i486.rpm
[ ]# rpm -ivh AdobeReader_enu-8.1.2-1.i486.rpm
4. Set the environment variable "ACROBAT_PATH" to the Acrobat installation path
[ ]# export ACROBAT_PATH=/opt/Adobe/Reader8
5. Copy the Trace32 plugin to the plug_ins folder of Acrobat Reader
[ ]# cp -r /home/scottlinux/Trace32/iso/bin/pc_linux/trace32.api /opt/Adobe/Reader8/Reader/intellinux/plug_ins/
------------------------------------------------------------------------------------
TRACE32 FAQ
Q1)
[root@scottshu t32]# t32marm
FATAL ERROR from X-windows: font not found: t32-lsys-16
CONFIG: config.t32
A1)
Program stops with message 'font xxxx not found'
Do fonts appear in the 'xlsfonts' command?
Can one font (e.g. t32-lsys-16) be displayed by 'xfd -fn t32-lsys-16'?
# Install fonts (options)
[ ]# yum install xorg-x11-fonts-75dpi
[ ]# yum install xorg-x11-fonts-ISO8859-1-75dpi
[ ]# cd /opt/t32/fonts
[ ]# mkfontdir .
[ ]# xset fp+ /opt/t32/fonts
[ ]# xset fp rehash
Q2)
[ ]# t32marm
Error messages....
Warning: translation table syntax error: Unknown keysym name: osfActivate
Warning: ... found while parsing 'osfActivate: DialogClientActivateCallback()'
Warning: String to TranslationTable conversion encountered errors
Warning: translation table syntax error: Unknown keysym name: osfCancel
Warning: ... found while parsing 'osfCancel: GenericClientEscapeCallback()'
Warning: String to TranslationTable conversion encountered errors
Warning: translation table syntax error: Unknown keysym name: osfHelp
Warning: ... found while parsing 'osfHelp: DrawClientKeyCallback(0)'
..................................
..................................
After you select the CPU type, The Trace32 seems hand and not able to use anymore.
A2)
Workaround
[ ]# mkdir -p /usr/X11R6/lib/X11
[ ]# cd /usr/X11R6/lib/X11
[ ]# ln -s /usr/share/X11/XKeysymDB
1. Trace32 Home Directory
[ ]# mkdir -p /opt/t32/bin
[ ]# cd /opt/t32
2. Copy Trace32 files from CD-ROM to /opt/t32
[ ]# cp -r /home/scottlinux/Trace32/iso/files/* .
[ ]# cp -r /home/scottlinux/Trace32/iso/bin/pc_linux/ bin/
[ ]# cp -r /home/scottlinux/Trace32/iso/bin/pc_linux/config.t32 .
[ ]# chmod -R u+w *
[ ]# /opt/t32/bin/pc_linux/filecvt /opt/t32
3. Download/Install the Acrobat Reader
[ ]# wget http://ardownload.adobe.com/pub/adobe/reader/unix/8.x/8.1.2/enu/AdobeReader_enu-8.1.2-1.i486.rpm
[ ]# rpm -ivh AdobeReader_enu-8.1.2-1.i486.rpm
4. Set the environment variable "ACROBAT_PATH" to the Acrobat installation path
[ ]# export ACROBAT_PATH=/opt/Adobe/Reader8
5. Copy the Trace32 plugin to the plug_ins folder of Acrobat Reader
[ ]# cp -r /home/scottlinux/Trace32/iso/bin/pc_linux/trace32.api /opt/Adobe/Reader8/Reader/intellinux/plug_ins/
------------------------------------------------------------------------------------
TRACE32 FAQ
Q1)
[root@scottshu t32]# t32marm
FATAL ERROR from X-windows: font not found: t32-lsys-16
CONFIG: config.t32
A1)
Program stops with message 'font xxxx not found'
Do fonts appear in the 'xlsfonts' command?
Can one font (e.g. t32-lsys-16) be displayed by 'xfd -fn t32-lsys-16'?
# Install fonts (options)
[ ]# yum install xorg-x11-fonts-75dpi
[ ]# yum install xorg-x11-fonts-ISO8859-1-75dpi
[ ]# cd /opt/t32/fonts
[ ]# mkfontdir .
[ ]# xset fp+ /opt/t32/fonts
[ ]# xset fp rehash
Q2)
[ ]# t32marm
Error messages....
Warning: translation table syntax error: Unknown keysym name: osfActivate
Warning: ... found while parsing '
Warning: String to TranslationTable conversion encountered errors
Warning: translation table syntax error: Unknown keysym name: osfCancel
Warning: ... found while parsing '
Warning: String to TranslationTable conversion encountered errors
Warning: translation table syntax error: Unknown keysym name: osfHelp
Warning: ... found while parsing '
..................................
..................................
After you select the CPU type, The Trace32 seems hand and not able to use anymore.
A2)
Workaround
[ ]# mkdir -p /usr/X11R6/lib/X11
[ ]# cd /usr/X11R6/lib/X11
[ ]# ln -s /usr/share/X11/XKeysymDB
Tuesday, July 8, 2008
Friday, July 4, 2008
Wednesday, July 2, 2008
Linux LiveUSB
How to make a Linux LiveUSB flash device on Windows
Ref: https://fedorahosted.org/liveusb-creator
By the way, CentOS 5.0 DVD is not the right image for this kind of tool. Don't confuse. This tool just for LiveCD images.
- Download the LiveCD image CentOS 5 or Fedora 9
- Download the liveusb-creator
- Run livecd-creator
- That's it.
Ref: https://fedorahosted.org/liveusb-creator
By the way, CentOS 5.0 DVD is not the right image for this kind of tool. Don't confuse. This tool just for LiveCD images.
Tuesday, July 1, 2008
IPTV - Video
1. The Technology of Video and Audio Streaming Second Edition (PDF)
2. Digital Video and HDTV Algorithms and Interfaces (PDF)
3. IPTV Basics, Technology, Operation and Services (PDF)
4. IP Multicast with Applications to IPTV and Mobile DVB-H (PDF)
5. IPTV Security : Protecting High-Value Digital Contents (PDF)
2. Digital Video and HDTV Algorithms and Interfaces (PDF)
3. IPTV Basics, Technology, Operation and Services (PDF)
4. IP Multicast with Applications to IPTV and Mobile DVB-H (PDF)
5. IPTV Security : Protecting High-Value Digital Contents (PDF)
Monday, June 30, 2008
Choose a "Good" MAC address
Please choose a “good” MAC address for your testing if you want to change it. In Linux 2.6.24.4, do not use “X1:XX:XX:XX:XX:XX” as your MAC address. It’s not allowed.
The following snippet code is copy from kernel. It explains everything
#include <stdio.h>
#include <stdlib.h>
/* Linux Kernel */
static inline int is_zero_ether_addr(const u_char *addr)
{
return !(addr[0] | addr[1] | addr[2] | addr[3] | addr[4] | addr[5]);
}
static inline int is_multicast_ether_addr(const u_char *addr)
{
return (0x01 & addr[0]);
}
static inline int is_valid_ether_addr(const u_char *addr)
{
return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr);
}
int main (int argc, char **argv) {
int ret;
ret = is_valid_ether_addr("11:22:33:44:55:66");
printf("ret = %d\n", ret);; ret = 0, Not a valid MAC address
ret = is_valid_ether_addr("01:22:33:44:55:66");
printf("ret = %d\n", ret);; ret = 0, Not a valid MAC address
ret = is_valid_ether_addr("00:1B:21:11:22:33");
printf("ret = %d\n", ret);; ret = 1, This is a valid MAC address
return;
}
How to prevent to set up the invalud MAC address? Please call "is_valid_ether_addr" in network device driver.
The following snippet code is copy from kernel. It explains everything
#include <stdio.h>
#include <stdlib.h>
/* Linux Kernel */
static inline int is_zero_ether_addr(const u_char *addr)
{
return !(addr[0] | addr[1] | addr[2] | addr[3] | addr[4] | addr[5]);
}
static inline int is_multicast_ether_addr(const u_char *addr)
{
return (0x01 & addr[0]);
}
static inline int is_valid_ether_addr(const u_char *addr)
{
return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr);
}
int main (int argc, char **argv) {
int ret;
ret = is_valid_ether_addr("11:22:33:44:55:66");
printf("ret = %d\n", ret);; ret = 0, Not a valid MAC address
ret = is_valid_ether_addr("01:22:33:44:55:66");
printf("ret = %d\n", ret);; ret = 0, Not a valid MAC address
ret = is_valid_ether_addr("00:1B:21:11:22:33");
printf("ret = %d\n", ret);; ret = 1, This is a valid MAC address
return;
}
How to prevent to set up the invalud MAC address? Please call "is_valid_ether_addr" in network device driver.
Tuesday, June 24, 2008
Thursday, June 12, 2008
IPTV Week
I plan to study IPTV this week (Night Life)
- IPTV and Internet Video - Focal Press
- Understanding IPTV - Auerbach Publications
- Next Generation IPTV Services and Technologies - Wiley
Wednesday, June 11, 2008
802.1X Port-Based Authentication
Tuesday, June 10, 2008
How to build eCos 2.x toolchain for ARM platform
In Fedora Core 8, Fedora Core 9
* binutils-2.15
* gcc-3.4.3
* newlib-1.12.0
* insight-6.6
1. Pre-Configuration
BASE_DIR=`pwd`
TARGET=arm-elf
2. Download source code
[ ]# wget -P $BASE_DIR/src http://www.gnuarm.com/binutils-2.15.tar.bz2
[ ]# wget -P $BASE_DIR/src http://www.gnuarm.com/gcc-3.4.3.tar.bz2
[ ]# wget -P $BASE_DIR/src http://www.gnuarm.com/newlib-1.12.0.tar.gz
[ ]# wget -P $BASE_DIR/src ftp://sourceware.org/pub/insight/releases/insight-6.6.tar.bz2
3. Pre-Build
[ ]# mkdir -p /opt/gnutools
[ ]# bunzip2 < $BASE_DIR/src/binutils-2.15.tar.bz2 | tar xvf -
[ ]# bunzip2 < $BASE_DIR/src/gcc-3.4.3.tar.bz2 | tar xvf -
[ ]# gunzip < $BASE_DIR/src/newlib-1.12.0.tar.gz | tar xvf -
[ ]# bunzip2 < $BASE_DIR/src/insight-6.6.tar.bz2 | tar xvf -
[ ]# cp -rf newlib-1.12.0/newlib gcc-3.4.3/
[ ]# cp -rf newlib-1.12.0/libgloss gcc-3.4.3/
4. Binutils
[ ]# mkdir -p /tmp/build/binutils
[ ]# cd /tmp/build/binutils
[ ]# $BASE_DIR/binutils-2.15/configure --target=$TARGET --prefix=/opt/gnutools \
-v 2>&1 | tee configure.out
[ ]# make -w all install 2>&1 | tee make.out
5. GCC
[ ]# PATH=/opt/gnutools/bin:$PATH ; export PATH
[ ]# mkdir -p /tmp/build/gcc
[ ]# cd /tmp/build/gcc
[ ]# $BASE_DIR/gcc-3.4.3/configure --target=$TARGET --prefix=/opt/gnutools \
--enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib \
--with-gxx-include-dir=/opt/gnutools/$TARGET/include \
-v 2>&1 | tee configure.out
[ ]# make -w all install 2>&1 | tee make.out
6. GDB
[ ]# mkdir -p /tmp/build/gdb
[ ]# cd /tmp/build/gdb
[ ]# $BASE_DIR/insight-6.6/configure --target=$TARGET --prefix=/opt/gnutools \
-v 2>&1 | tee configure.out
[ ]# make -w all install 2>&1 | tee make.out
7. Post-Build
* Clean
[ ]# rm -rf /tmp/build/
* Change PATH environment variable (Edit /root/.bash_profile file)
PATH=$PATH:$HOME/bin
# Toolchain for ARM-eCos platform
PATH=/opt/gnutools/bin:$PATH
export PATH
* Effect the change
That's all. Here is the script file. Enjoy!
You can also download the complete source tarball (84MB).
* binutils-2.15
* gcc-3.4.3
* newlib-1.12.0
* insight-6.6
1. Pre-Configuration
BASE_DIR=`pwd`
TARGET=arm-elf
2. Download source code
[ ]# wget -P $BASE_DIR/src http://www.gnuarm.com/binutils-2.15.tar.bz2
[ ]# wget -P $BASE_DIR/src http://www.gnuarm.com/gcc-3.4.3.tar.bz2
[ ]# wget -P $BASE_DIR/src http://www.gnuarm.com/newlib-1.12.0.tar.gz
[ ]# wget -P $BASE_DIR/src ftp://sourceware.org/pub/insight/releases/insight-6.6.tar.bz2
3. Pre-Build
[ ]# mkdir -p /opt/gnutools
[ ]# bunzip2 < $BASE_DIR/src/binutils-2.15.tar.bz2 | tar xvf -
[ ]# bunzip2 < $BASE_DIR/src/gcc-3.4.3.tar.bz2 | tar xvf -
[ ]# gunzip < $BASE_DIR/src/newlib-1.12.0.tar.gz | tar xvf -
[ ]# bunzip2 < $BASE_DIR/src/insight-6.6.tar.bz2 | tar xvf -
[ ]# cp -rf newlib-1.12.0/newlib gcc-3.4.3/
[ ]# cp -rf newlib-1.12.0/libgloss gcc-3.4.3/
4. Binutils
[ ]# mkdir -p /tmp/build/binutils
[ ]# cd /tmp/build/binutils
[ ]# $BASE_DIR/binutils-2.15/configure --target=$TARGET --prefix=/opt/gnutools \
-v 2>&1 | tee configure.out
[ ]# make -w all install 2>&1 | tee make.out
5. GCC
[ ]# PATH=/opt/gnutools/bin:$PATH ; export PATH
[ ]# mkdir -p /tmp/build/gcc
[ ]# cd /tmp/build/gcc
[ ]# $BASE_DIR/gcc-3.4.3/configure --target=$TARGET --prefix=/opt/gnutools \
--enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib \
--with-gxx-include-dir=/opt/gnutools/$TARGET/include \
-v 2>&1 | tee configure.out
[ ]# make -w all install 2>&1 | tee make.out
6. GDB
[ ]# mkdir -p /tmp/build/gdb
[ ]# cd /tmp/build/gdb
[ ]# $BASE_DIR/insight-6.6/configure --target=$TARGET --prefix=/opt/gnutools \
-v 2>&1 | tee configure.out
[ ]# make -w all install 2>&1 | tee make.out
7. Post-Build
* Clean
[ ]# rm -rf /tmp/build/
* Change PATH environment variable (Edit /root/.bash_profile file)
PATH=$PATH:$HOME/bin
# Toolchain for ARM-eCos platform
PATH=/opt/gnutools/bin:$PATH
export PATH
* Effect the change
That's all. Here is the script file. Enjoy!
You can also download the complete source tarball (84MB).
Friday, June 6, 2008
eCos
eCos
Changelog
1998.11 - eCos 1.1, Cygnus Solutions
1999.05 - eCos 1.2
1999.11 - Cygnus Solutions was acquired by Red Hat
2000.03 - eCos 1.3, Red Hat
2003.05 - eCos 2.0, eCosCentric Original members of eCos team formed eCosCentric Limited in Cambridge.
2004 - I first met eCos
2008 - I second met eCos. Next assigned task is porting the eCos to a new ARM9 processor.
Changelog
1998.11 - eCos 1.1, Cygnus Solutions
1999.05 - eCos 1.2
1999.11 - Cygnus Solutions was acquired by Red Hat
2000.03 - eCos 1.3, Red Hat
2003.05 - eCos 2.0, eCosCentric Original members of eCos team formed eCosCentric Limited in Cambridge.
2004 - I first met eCos
2008 - I second met eCos. Next assigned task is porting the eCos to a new ARM9 processor.
Some useful tools for creating a bootable USB flash drive
Wednesday, June 4, 2008
Diff and Patch
發佈原始碼更新最常使用的工具是 patch 和 diff. 一開始建立兩個內容一樣的目錄“original directory”和“working directory”,然後在“working directory”中加上我們的修改。例如:
[]$ tar zxvf linux-2.6.24.tar.gz
[]$ mv linux linux-2.6.24-orig
[]$ tar zxvf linux-2.6.24.tar.gz
[]$ mv linux linux-2.6.24
在linux-2.6.24 目錄下修改。完成後利用下列指令來產生修補檔。
$ diff -Naur -X dontdiff linux-2.6.24-orig linux-2.6.24 > kernel.patch
Other instructions:
[]$ cd linux-2.6.24-orig
[]$ patch -p1 < ../2.6.25.patch
[]$ cd ..
[]$ mv linux-2.6.24-orig linux-2.6.25
[]$ cd linux-2.6.24
[]$ patch -p1 -R < ../kernel.patch
[]$ patch -p1 < ../2.6.25.patch
[]$ cd ..
[]$ mv linux-2.6.24 linux-2.6.25
[]$ cd linux-2.6.25
[]$ patch -p1 < ../kernel.patch
[]$ tar zxvf linux-2.6.24.tar.gz
[]$ mv linux linux-2.6.24-orig
[]$ tar zxvf linux-2.6.24.tar.gz
[]$ mv linux linux-2.6.24
在linux-2.6.24 目錄下修改。完成後利用下列指令來產生修補檔。
$ diff -Naur -X dontdiff linux-2.6.24-orig linux-2.6.24 > kernel.patch
Other instructions:
[]$ cd linux-2.6.24-orig
[]$ patch -p1 < ../2.6.25.patch
[]$ cd ..
[]$ mv linux-2.6.24-orig linux-2.6.25
[]$ cd linux-2.6.24
[]$ patch -p1 -R < ../kernel.patch
[]$ patch -p1 < ../2.6.25.patch
[]$ cd ..
[]$ mv linux-2.6.24 linux-2.6.25
[]$ cd linux-2.6.25
[]$ patch -p1 < ../kernel.patch
Tuesday, June 3, 2008
eCos books
1. Embedded Software Development with eCos
Download PDF
Download Source Code
2. Programming Embedded Systems: With C and GNU Development Tools, 2nd Edition
Subscribe to:
Posts (Atom)