Monday, December 29, 2008

HOWTO compile Optware on Fedora Core 9

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

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

SLAB, SLUB, SLOB

SLAB

SLUB

SLOB -- For Embedded System

Working...

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.

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

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

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

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

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]

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
  • 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)

Linux kernel bring up on ARM11 MPCore

Cancel

In detail. (Non-Published Document) (PDF) (SDR, Powered by SmartDraw)

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)

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

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().

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

Tuesday, November 4, 2008

Further Reading about ARM11MPCore

1. ARMv6 Instruction Set Architecture (ISA) (PDF 1) (PDF 2)
     Download from ARM Ltd.

2. Embedded Multi-core Processors (PDF) (slides)
     Download from Embedded System Design

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

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

Serial Peripheral Interface (SPI)

Read Addr 0x0, Return = 0x2



Write Addr 0x0, Register Value = 0x2



Reference:
1. Designing Embedded Hardware, Second Edition - Chapter 7. Adding Peripherals Using 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

Monday, October 27, 2008

Friday, October 24, 2008

USB Host Controller on the Linux Kernel

USB Host Controller

(1) ST-NXP (ISP 1760)

(2) Synopsys (DWC USB 2.0 HS High Speed, EHCI/OHCI)

Wednesday, October 22, 2008

NAND Flash

NAND Flash Chip Vendor

  • Intel
  •    ONFI, 
  • Micron
  •    ONFI, SLC/MLC: Compatibility with ONFI synchronous interface
       http://www.micron.com/products/nand-flash

  • ST/Numonyx
  •    ONFI 1.0, 
  • Samsung
  •    non-ONFI,
       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

  • Toshiba
  •    non-ONFI,
       1) SLC NAND (list)
       2) MLC NAND
       3) Toggle-Mode NAND


    Micron NAND Flash
    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)

    NOR Flash

    Generic Memory Subsystem for Embedded System


    NOR Flash

    Example:
    MXIC - MX29LV640T/B (Datasheet)

    NOR Flash Controller

    Example:
    ARM SMC (PL353)


    Serial Flash Memory

    NOR SPI Flash

    Example:
    ST, Numonyx - M25P64 (Datasheet 1) (2) (Driver 1) (2)

    SPI Bus Serial Interface
    Let's talk later.

    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)

    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.

    ARM RealView PB11MPCore (7.3) U-boot Initialization Flow

    • U-boot Initialization Flow

    Tuesday, October 7, 2008

    ARM RealView PB11MPCore (0.1) Photos

    Front side photo 1:


    Front side photo 2:


    Inside photo 1:


    Inside photo 2:

    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)

    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)

    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

    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

    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.

    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

    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!

    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.

    • 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

    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.

    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

    Monday, September 8, 2008

    ARM RealView PB11MPCore (7.1) Bootloader (big-endian)

    u-boot version 1.3.1
    1. u-boot source code
    2. apply ARM patch (same as ARM RealView PB11MPCore (7) Bootloader)
    3. apply endian patch
    4. make xxx_config
    5. 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"

    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

    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

    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

    Tuesday, September 2, 2008

    ARM RealView PB11MPCore (9) Root File System

    Applications

    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

    ARM RealView PB11MPCore (7) Bootloader

    u-boot

    • 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
    ------- ----

    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.

    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

    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

    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)

    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

    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

    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

    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. :)

    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

    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)

    Tuesday, August 12, 2008

    IEEE 1588 - 2008

    I gonna study this week. It's about "Precision Clock Synchronization Protocol".
    Scott's slide.

    Linux ptp: IEEE 1588 hardware clock support (patch)

    Thursday, July 24, 2008

    Monitor Network Throughput

    netmon-0.2
    This small tool is work on Linux system and verified on x86 and ARM platform.
    Get it.

    New added Hard Disk throughput moniter - sysmon-0.1
    Get it.

    Monday, July 14, 2008

    Virtual Disk Drive

    SlySoft Virtual CloneDrive Freeware

    Virtual Floppy Drive is here.

    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

    Tuesday, July 8, 2008

    RPM Resource

    http://stuff.mit.edu/afs/dev/system/rhlinux

    Fedora 8

    rhel-5 Server

    rhel-5 Client

    Others

    Friday, July 4, 2008

    eCos Notes

    Some notes about eCos.

    Compare with Linux.

    Wednesday, July 2, 2008

    Linux LiveUSB

    How to make a Linux LiveUSB flash device on Windows
    1. Download the LiveCD image CentOS 5 or Fedora 9
    2. Download the liveusb-creator
    3. Run livecd-creator


    4. 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)

    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.

    Tuesday, June 24, 2008

    eCos Software Diagram



    Compare with Linux

    Thursday, June 12, 2008

    IPTV Week

    I plan to study IPTV this week (Night Life)
    1. IPTV and Internet Video - Focal Press
    2. Understanding IPTV - Auerbach Publications
    3. Next Generation IPTV Services and Technologies - Wiley
    Book (1) and (2) are more generic discussion about IPTV, book (3) contains more deeply technical material.

    Wednesday, June 11, 2008

    802.1X Port-Based Authentication

    Scott's slide (Update!)

    Radiator Server v4.0 Installation Guide (2008.09.26 Upload)
    Case Study: EAP-Fast

    USB Mass Storage Device Descriptor

    USB Gadget Drivers




    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).

    Friday, June 6, 2008

    802 Family

    Linux WPA Supplicant

    Scott's slide

    Web: http://hostap.epitest.fi/wpa_supplicant/

    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.

    Some useful tools for creating a bootable USB flash drive

    1. Windows-based Format Utility for HP DiskOnKey USB Device (HP)
    Download here or here

    2. Virtual Floppy Drive
    Download here or here

    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

    Linux Kernel Diagram

    Install Apache and CGI in Windows System

    Linux Kernel Development Second Edition

    Some Notes about this book
    Part 1
    Part 2

    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