Revision as of 20:08, 20 May 2010 by Batydm (talk | contribs) (Listings From Embedded Linux Primer)
Jump to: navigation, search

I am currently a Graduate student at Rose-Hulman Institute of Technology pursuing my MECE (Masters of Electrical and Computer Enginnering) degree. My undergraduate degree was in Computer Engineering, also from Rose-Hulman. I am the Public Relations officer of the Rose-Hulman Linux Users' Group. I am working on another project using the BeagleBoard to control a walking four legged robot.


Most of my work is with the BeagleBoard hardware. I helped with pages on PWM on the BeagleBoard and I2C on the BeagleBoard. I created the page on Interfacing with the BeagleBoard hardware. This page contains a variety of information on how to make a board to interface with the BeagleBoard, including dealing with power and level shifting.

Listings From Embedded Linux Primer

Number Page Caption Listing Notes
2-1 2-6 Initial Bootloader Serial Output
Texas Instruments X-Loader 1.4.2 (Feb 19 2009 - 12:01:24)
Reading boot sector
Loading u-boot.bin from mmc

U-Boot 2009.11-rc1 (Jan 08 2010 - 21:19:52)

OMAP3530-GP ES3.0, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  256 MB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Board revision C1/C2/C3
Die ID #5160000300000000040323091101f01a
Hit any key to stop autoboot:  0
This is from a Revision C3 Beagle.
2-2 2-7 Loading the Linux Kernel
3001004 bytes read
Booting from mmc ...
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Angstrom/2.6.29/beagleboard
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3000940 Bytes =  2.9 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

Uncompressing Linux.... done, booting the kernel.
2-3 2-9 Linux Final Boot Messages
Starting portmap daemon: portmap.
Unknown HZ value! (75) Assume 100.
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
hwclock: can't open '/dev/misc/rtc': No such file or directory
Sat Mar 13 23:56:00 GMT 2010
hwclock: can't open '/dev/misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Starting system message bus: dbus.
Starting Hardware abstraction layer hald
Configuring leds:
  beagleboard::usr0: heartbeat
  beagleboard::usr1: mmc0
Starting Dropbear SSH server: modprobe: FATAL: Could not open '/lib/modules/2.6.29-omap1/kernel/net/ipv6/ipv6.ko': No such file or directory

modprobe: FATAL: Could not open '/lib/modules/2.6.29-omap1/kernel/net/ipv6/ipv6.ko': No such file or directory

Starting advanced power management daemon: No APM support in kernel
Starting Samba: smbd nmbd.
Starting syslogd/klogd: done
Starting internet superserver: xinetd.
 * Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon
[ ok ]
Starting Network connection manager daemon: NetworkManager.
Loading kernel modules for gstreamer-ti... FATAL: Could not open '/lib/modules/2.6.29-omap1/kernel/drivers/dsp/cmemk.ko': No such file or directory
FATAL: Could not open '/lib/modules/2.6.29-omap1/kernel/drivers/dsp/dsplinkk.ko': No such file or directory
WARNING: Could not open '/lib/modules/2.6.29-omap1/kernel/drivers/dsp/dsplinkk.ko': No such file or directory
FATAL: Could not open '/lib/modules/2.6.29-omap1/kernel/drivers/dsp/lpm_omap3530.ko': No such file or directory
FATAL: Could not open '/lib/modules/2.6.29-omap1/kernel/drivers/dsp/sdmak.ko': No such file or directory
Loading [g_cdc]
FATAL: Could not open '/lib/modules/2.6.29-omap1/kernel/drivers/usb/gadget/g_cdc.ko': No such file or directory
Starting web server: apache2.
Starting GNOME Display Manager gdm
Starting GPE display manager: gpe-dm
[ 1486.575927] OMAPFB: Closing fb with plane index 0

|       |                  .-.
|   |   |-----.-----.-----.| |   .----..-----.-----.
|       |     | __  |  ---'| '--.|  .-'|     |     |
|   |   |  |  |     |---  ||  --'|  |  |  '  | | | |
'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'
                -'  |

The Angstrom Distribution beagleboar ttyS2

Angstrom 2009.X-test-20100104 beagleboar ttyS2
2-4 2-21 Hello World, Embedded Style
#include <stdio.h>

int bss_var;        /* Uninitialized global variable */

int data_var = 1;   /* Initialized global variable */

int main(int argc, char **argv)
  void *stack_var;            /* Local variable on the stack */
  stack_var = (void *)main;   /* Don't let the compiler */
                              /* optimize it out */

  printf("Hello, World! Main is executing at %p\n", stack_var);
  printf("This address (%p) is in our stack frame\n", &stack_var);

  /* bss section contains uninitialized data */
  printf("This address (%p) is in our bss section\n", &bss_var);

  /* data section contains initializated data */
  printf("This address (%p) is in our data section\n", &data_var);

  return 0;
2-5 2-22 Hello Output for Host Computer
Hello, World! Main is executing at 0x400524
This address (0x7fff6c261d58) is in our stack frame
This address (0x601038) is in our bss section
This address (0x601020) is in our data section
Intel Atom, Ubuntu 9.10 64-bit
2-5 2-22 Hello Output for Beagle
Hello, World! Main is executing at 0x8380
This address (0xbedddc44) is in our stack frame
This address (0x10670) is in our bss section
This address (0x10668) is in our data section
Beagleboard rev C3, Angstrom remote compiled
U-Boot 2009.06-rc2 (Apr 13 2010 - 17:33:55)

OMAP3530-GP ES3.0, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND

DRAM:  256 MB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial

Texas Instruments X-Loader 1.4.2 (Feb 19 2009 - 12:01:24)
Reading boot sector
Loading u-boot.bin from mmc

U-Boot 2009.06-rc2 (Apr 13 2010 - 17:33:55)

OMAP3530-GP ES3.0, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND
DRAM:  256 MB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Board revision C
Die ID #5160000300000000040323091101f01a
Hit any key to stop autoboot:  0 
DB, TM and MJ -- OMAP3 #
4-3 4-15
total 423
drwxr-xr-x  3 batydm students   776 2010-04-28 00:05 .
drwxr-xr-x 87 batydm students  2696 2010-04-28 00:05 ..
-rw-r--r--  1 batydm students 11124 2010-04-28 00:05 clock.c
-rw-r--r--  1 batydm students  8805 2010-04-28 00:05 common.c
-rw-r--r--  1 batydm students  4033 2010-04-28 00:05 cpu-omap.c
-rw-r--r--  1 batydm students  2192 2010-04-28 00:05 debug-devices.c
-rw-r--r--  1 batydm students  7170 2010-04-28 00:05 debug-leds.c
-rw-r--r--  1 batydm students 10914 2010-04-28 00:05 devices.c
-rw-r--r--  1 batydm students 52795 2010-04-28 00:05 dma.c
-rw-r--r--  1 batydm students 22660 2010-04-28 00:05 dmtimer.c
-rw-r--r--  1 batydm students 10055 2010-04-28 00:05 fb.c
-rw-r--r--  1 batydm students 61383 2010-04-28 00:05 gpio.c
-rw-r--r--  1 batydm students  5568 2010-04-28 00:05 i2c.c
drwxr-xr-x  3 batydm students    72 2010-04-28 00:05 include
-rw-r--r--  1 batydm students  6265 2010-04-28 00:05 io.c
-rw-r--r--  1 batydm students 20789 2010-04-28 00:05 iommu.c
-rw-r--r--  1 batydm students  9141 2010-04-28 00:05 iommu-debug.c
-rw-r--r--  1 batydm students  2745 2010-04-28 00:05 iopgtable.h
-rw-r--r--  1 batydm students 19344 2010-04-28 00:05 iovmm.c
-rw-r--r--  1 batydm students  4819 2010-04-28 00:05 Kconfig
-rw-r--r--  1 batydm students  8546 2010-04-28 00:05 mailbox.c
-rw-r--r--  1 batydm students   882 2010-04-28 00:05 Makefile
-rw-r--r--  1 batydm students 43754 2010-04-28 00:05 mcbsp.c
-rw-r--r--  1 batydm students  2263 2010-04-28 00:05 mux.c
-rw-r--r--  1 batydm students  2739 2010-04-28 00:05 ocpi.c
-rw-r--r--  1 batydm students 21421 2010-04-28 00:05 omap_device.c
-rw-r--r--  1 batydm students  7069 2010-04-28 00:05 omap-pm-noop.c
-rw-r--r--  1 batydm students 12878 2010-04-28 00:05 sram.c
-rw-r--r--  1 batydm students 18770 2010-04-28 00:05 usb.c
4-6 Makefile targets
Cleaning targets:
  clean           - Remove most generated files but keep the config and
                    enough build support to build external modules
  mrproper        - Remove all generated files + config + various backup files
  distclean       - mrproper + remove editor backup and patch files

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

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

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

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

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

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

  acs5k_defconfig          - Build for acs5k
  acs5k_tiny_defconfig     - Build for acs5k_tiny
  afeb9260_defconfig       - Build for afeb9260
  am200epdkit_defconfig    - Build for am200epdkit
  am3517_evm_defconfig     - Build for am3517_evm
  ams_delta_defconfig      - Build for ams_delta
  ap4evb_defconfig         - Build for ap4evb
  assabet_defconfig        - Build for assabet
  at572d940hfek_defconfig  - Build for at572d940hfek
  at91cap9adk_defconfig    - Build for at91cap9adk
  at91rm9200dk_defconfig   - Build for at91rm9200dk
  at91rm9200ek_defconfig   - Build for at91rm9200ek
  at91sam9260ek_defconfig  - Build for at91sam9260ek
  at91sam9261ek_defconfig  - Build for at91sam9261ek
  at91sam9263ek_defconfig  - Build for at91sam9263ek
  at91sam9g20ek_defconfig  - Build for at91sam9g20ek
  at91sam9rlek_defconfig   - Build for at91sam9rlek
  ateb9200_defconfig       - Build for ateb9200
  badge4_defconfig         - Build for badge4
  bcmring_defconfig        - Build for bcmring
  cam60_defconfig          - Build for cam60
  carmeva_defconfig        - Build for carmeva
  cerfcube_defconfig       - Build for cerfcube
  cm_t35_defconfig         - Build for cm_t35
  cm_x2xx_defconfig        - Build for cm_x2xx
  cm_x300_defconfig        - Build for cm_x300
  colibri_pxa270_defconfig - Build for colibri_pxa270
  colibri_pxa300_defconfig - Build for colibri_pxa300
  collie_defconfig         - Build for collie
  corgi_defconfig          - Build for corgi
  cpu9260_defconfig        - Build for cpu9260
  cpu9g20_defconfig        - Build for cpu9g20
  cpuat91_defconfig        - Build for cpuat91
  csb337_defconfig         - Build for csb337
  csb637_defconfig         - Build for csb637
  da8xx_omapl_defconfig    - Build for da8xx_omapl
  davinci_all_defconfig    - Build for davinci_all
  devkit8000_defconfig     - Build for devkit8000
  dove_defconfig           - Build for dove
  ebsa110_defconfig        - Build for ebsa110
  ecbat91_defconfig        - Build for ecbat91
  edb7211_defconfig        - Build for edb7211
  em_x270_defconfig        - Build for em_x270
  ep93xx_defconfig         - Build for ep93xx
  eseries_pxa_defconfig    - Build for eseries_pxa
  ezx_defconfig            - Build for ezx
  footbridge_defconfig     - Build for footbridge
  fortunet_defconfig       - Build for fortunet
  g3evm_defconfig          - Build for g3evm
  g4evm_defconfig          - Build for g4evm
  h3600_defconfig          - Build for h3600
  h5000_defconfig          - Build for h5000
  h7201_defconfig          - Build for h7201
  h7202_defconfig          - Build for h7202
  hackkit_defconfig        - Build for hackkit
  htcherald_defconfig      - Build for htcherald
  igep0020_defconfig       - Build for igep0020
  imote2_defconfig         - Build for imote2
  integrator_defconfig     - Build for integrator
  iop13xx_defconfig        - Build for iop13xx
  iop32x_defconfig         - Build for iop32x
  iop33x_defconfig         - Build for iop33x
  ixp2000_defconfig        - Build for ixp2000
  ixp23xx_defconfig        - Build for ixp23xx
  ixp4xx_defconfig         - Build for ixp4xx
  jornada720_defconfig     - Build for jornada720
  kafa_defconfig           - Build for kafa
  kb9202_defconfig         - Build for kb9202
  kirkwood_defconfig       - Build for kirkwood
  ks8695_defconfig         - Build for ks8695
  lart_defconfig           - Build for lart
  loki_defconfig           - Build for loki
  lpd270_defconfig         - Build for lpd270
  lpd7a400_defconfig       - Build for lpd7a400
  lpd7a404_defconfig       - Build for lpd7a404
  lubbock_defconfig        - Build for lubbock
  lusl7200_defconfig       - Build for lusl7200
  magician_defconfig       - Build for magician
  mainstone_defconfig      - Build for mainstone
  mini2440_defconfig       - Build for mini2440
  mmp2_defconfig           - Build for mmp2
  msm_defconfig            - Build for msm
  mv78xx0_defconfig        - Build for mv78xx0
  mx1_defconfig            - Build for mx1
  mx21_defconfig           - Build for mx21
  mx27_defconfig           - Build for mx27
  mx31pdk_defconfig        - Build for mx31pdk
  mx3_defconfig            - Build for mx3
  mx51_defconfig           - Build for mx51
  n770_defconfig           - Build for n770
  n8x0_defconfig           - Build for n8x0
  neocore926_defconfig     - Build for neocore926
  neponset_defconfig       - Build for neponset
  netwinder_defconfig      - Build for netwinder
  netx_defconfig           - Build for netx
  nhk8815_defconfig        - Build for nhk8815
  ns9xxx_defconfig         - Build for ns9xxx
  nuc910_defconfig         - Build for nuc910
  nuc950_defconfig         - Build for nuc950
  nuc960_defconfig         - Build for nuc960
  omap_2430sdp_defconfig   - Build for omap_2430sdp
  omap_3430sdp_defconfig   - Build for omap_3430sdp
  omap_3630sdp_defconfig   - Build for omap_3630sdp
  omap3_beagle_defconfig   - Build for omap3_beagle
  omap3_defconfig          - Build for omap3
  omap3_evm_defconfig      - Build for omap3_evm
  omap3_pandora_defconfig  - Build for omap3_pandora
  omap3_touchbook_defconfig - Build for omap3_touchbook
  omap_4430sdp_defconfig   - Build for omap_4430sdp
  omap_apollon_2420_defconfig - Build for omap_apollon_2420
  omap_generic_1510_defconfig - Build for omap_generic_1510
  omap_generic_1610_defconfig - Build for omap_generic_1610
  omap_generic_1710_defconfig - Build for omap_generic_1710
  omap_generic_2420_defconfig - Build for omap_generic_2420
  omap_h2_1610_defconfig   - Build for omap_h2_1610
  omap_h4_2420_defconfig   - Build for omap_h4_2420
  omap_innovator_1510_defconfig - Build for omap_innovator_1510
  omap_innovator_1610_defconfig - Build for omap_innovator_1610
  omap_ldp_defconfig       - Build for omap_ldp
  omap_osk_5912_defconfig  - Build for omap_osk_5912
  omap_perseus2_730_defconfig - Build for omap_perseus2_730
  omap_zoom2_defconfig     - Build for omap_zoom2
  omap_zoom3_defconfig     - Build for omap_zoom3
  onearm_defconfig         - Build for onearm
  orion5x_defconfig        - Build for orion5x
  overo_defconfig          - Build for overo
  palmte_defconfig         - Build for palmte
  palmtt_defconfig         - Build for palmtt
  palmz71_defconfig        - Build for palmz71
  palmz72_defconfig        - Build for palmz72
  pcm027_defconfig         - Build for pcm027
  picotux200_defconfig     - Build for picotux200
  pleb_defconfig           - Build for pleb
  pnx4008_defconfig        - Build for pnx4008
  pxa168_defconfig         - Build for pxa168
  pxa255-idp_defconfig     - Build for pxa255-idp
  pxa3xx_defconfig         - Build for pxa3xx
  pxa910_defconfig         - Build for pxa910
  qil-a9260_defconfig      - Build for qil-a9260
  raumfeld_defconfig       - Build for raumfeld
  realview_defconfig       - Build for realview
  realview-smp_defconfig   - Build for realview-smp
  rpc_defconfig            - Build for rpc
  rx51_defconfig           - Build for rx51
  s3c2410_defconfig        - Build for s3c2410
  s3c6400_defconfig        - Build for s3c6400
  s5p6440_defconfig        - Build for s5p6440
  s5p6442_defconfig        - Build for s5p6442
  s5pc100_defconfig        - Build for s5pc100
  s5pc110_defconfig        - Build for s5pc110
  s5pv210_defconfig        - Build for s5pv210
  sam9_l9260_defconfig     - Build for sam9_l9260
  shannon_defconfig        - Build for shannon
  shark_defconfig          - Build for shark
  simpad_defconfig         - Build for simpad
  spitz_defconfig          - Build for spitz
  stmp378x_defconfig       - Build for stmp378x
  stmp37xx_defconfig       - Build for stmp37xx
  sx1_defconfig            - Build for sx1
  tct_hammer_defconfig     - Build for tct_hammer
  trizeps4_defconfig       - Build for trizeps4
  u300_defconfig           - Build for u300
  u8500_defconfig          - Build for u8500
  usb-a9260_defconfig      - Build for usb-a9260
  usb-a9263_defconfig      - Build for usb-a9263
  versatile_defconfig      - Build for versatile
  viper_defconfig          - Build for viper
  xcep_defconfig           - Build for xcep
  yl9200_defconfig         - Build for yl9200
  zeus_defconfig           - Build for zeus

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

Execute "make" or "make all" to build all targets marked with [*]
For further info see the ./README file
4-8 Bit from arch/arm/Kconfig
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.

mainmenu "Linux Kernel Configuration"

config ARM
        default y
        select HAVE_AOUT
        select HAVE_IDE
        select RTC_LIB
        select GENERIC_ATOMIC64 if (!CPU_32v6K)
        select HAVE_OPROFILE
        select HAVE_ARCH_KGDB
        select HAVE_KPROBES if (!XIP_KERNEL)
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_LZO
        select HAVE_PERF_EVENTS
        select PERF_USE_VMALLOC
          The ARM series is a line of low-power-consumption RISC chip designs
          licensed by ARM Ltd and targeted at embedded applications and
          handhelds such as the Compaq IPAQ.  ARM-based PCs are no longer
          manufactured, but legacy ARM-based PC hardware remains popular in
          Europe.  There is an ARM Linux project with a web page at
4-9 arch/arm/mach-omap2/Kconfig
comment "OMAP Core Type"
        depends on ARCH_OMAP2

config ARCH_OMAP2420
        bool "OMAP2420 support"
        depends on ARCH_OMAP2
        select OMAP_DM_TIMER
        select ARCH_OMAP_OTG

config ARCH_OMAP2430
        bool "OMAP2430 support"
        depends on ARCH_OMAP2

config ARCH_OMAP3430
        bool "OMAP3430 support"
        depends on ARCH_OMAP3
        select ARCH_OMAP_OTG


5-2 piggy.S
.section .piggydata,#alloc
       .globl  input_data
       .incbin "arch/arm/boot/compressed/piggy.gzip"
       .globl  input_data_end
5-2 piggy.S
        .section .piggydata,#alloc
        .globl  input_data
        .incbin "arch/arm/boot/compressed/piggy.lzo"
        .globl  input_data_end