Difference between revisions of "EBC Listings for Embedded Linux Primer"

From eLinux.org
Jump to: navigation, search
(Chapter 4: Added Listing 4-8)
m (Added |list to Category)
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:ECE597]]
+
[[Category:ECE497 |list]]
 +
{{YoderHead}}
  
 
Here are the listing from the Embedded Linux Primer as done on the Beagle.
 
Here are the listing from the Embedded Linux Primer as done on the Beagle.
  
== Chapter 2 ==
+
* [[ECE497 Listings for Embedded Linux Primer Chapter 2]]
 +
* [[ECE497 Listings for Embedded Linux Primer Chapter 4]]
 +
* [[ECE497 Listings for Embedded Linux Primer Chapter 5]]
 +
* [[ECE497 Listings for Embedded Linux Primer Chapter 6]]
 +
* [[ECE497 Listings for Embedded Linux Primer Chapter 7]]
 +
* [[ECE497 Listings for Embedded Linux Primer Chapter 8]]
  
{|
+
{{YoderFoot}}
! Number
 
! Page
 
! Caption
 
! Listing
 
|-
 
| 2-1
 
| 2-6
 
| Initial Bootloader Serial Output
 
| <pre>
 
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.1, 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 C4
 
Die ID #5444000400000000040365fa1400e007
 
Hit any key to stop autoboot:  0
 
OMAP3 beagleboard.org #
 
</pre>
 
|-
 
| 2-2
 
| 2-7
 
| Loading the Linux Kernel
 
|
 
|-
 
| 2-3
 
| 2-9
 
| Linux Final Boot Messages
 
| <pre>
 
</pre>
 
|-
 
| 2-4
 
| 2-21
 
| Hello World, Embedded Style
 
| <pre>
 
#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;
 
}
 
</pre>
 
|-
 
| 2-5
 
| 2-22
 
| Hello Output for Host Computer
 
| <pre>
 
</pre>
 
|-
 
| 2-5
 
| 2-22
 
| Hello Output for Beagle
 
| <pre>
 
</pre>
 
|}
 
 
 
== Chapter 4 ==
 
 
 
{|
 
! Number
 
! Page
 
! Caption
 
! Listing
 
|-
 
| 4-1
 
| 4-7
 
| Kernel Build Output
 
| <pre>
 
$ export OETREE="${HOME}/oe"
 
$ PATH=${OETREE}/angstrom-dev/staging/i686-linux/usr/bin/:${PATH}
 
$ PATH=${OETREE}/angstrom-dev/cross/armv7a/bin/:${PATH}
 
$ make CROSS_COMPILE=arm-angstrom-linux-gnueabi- uImage
 
  CHK    include/linux/version.h
 
make[1]: `include/asm-arm/mach-types.h' is up to date.
 
  CHK    include/linux/utsrelease.h
 
  SYMLINK include/asm -> include/asm-arm
 
  CALL    scripts/checksyscalls.sh
 
  CHK    include/linux/compile.h
 
  CC      arch/arm/mach-omap2/io.o
 
  CC      arch/arm/mach-omap2/devices.o
 
      .
 
      .  <lines of output omitted here>
 
      .
 
  LD      vmlinux
 
  SYSMAP  System.map
 
  SYSMAP  .tmp_System.map
 
  OBJCOPY arch/arm/boot/Image
 
  Kernel: arch/arm/boot/Image is ready
 
  GZIP    arch/arm/boot/compressed/piggy.gz
 
  AS      arch/arm/boot/compressed/piggy.o
 
  LD      arch/arm/boot/compressed/vmlinux
 
  OBJCOPY arch/arm/boot/zImage
 
  Kernel: arch/arm/boot/zImage is ready
 
  UIMAGE  arch/arm/boot/uImage
 
Image Name:  Linux-2.6.29-omap1
 
Created:      Tue Mar  9 12:58:27 2010
 
Image Type:  ARM Linux Kernel Image (uncompressed)
 
Data Size:    2991236 Bytes = 2921.13 kB = 2.85 MB
 
Load Address: 0x80008000
 
Entry Point:  0x80008000
 
  Image arch/arm/boot/uImage is ready
 
</pre>
 
|-
 
| 4-2
 
| 4-9
 
| Link Stage: vmlinux
 
| <pre>
 
</pre>
 
|-
 
| 4-3
 
| 4-15
 
| Kernel Subdirectory
 
| <pre>
 
$ ls -ls arch/arm/plat-omap/ | grep -v \\.o
 
total 776
 
  8 -rw-r--r-- 1 yoder yoder  7933 Mar  9 12:14 Kconfig
 
  8 -rw-r--r-- 1 yoder yoder  7799 Mar  9 12:14 Kconfig.backup
 
  8 -rw-r--r-- 1 yoder yoder  7799 Mar  8 11:28 Kconfig~
 
  4 -rw-r--r-- 1 yoder yoder    824 Mar  8 11:28 Makefile
 
  4 -rw-r--r-- 1 yoder yoder  2404 Mar  8 11:18 bootreason.c
 
16 -rw-r--r-- 1 yoder yoder  15334 Mar  8 11:18 clock.c
 
12 -rw-r--r-- 1 yoder yoder  8210 Mar  8 11:18 common.c
 
  4 -rw-r--r-- 1 yoder yoder  1593 Mar  8 11:18 component-version.c
 
  4 -rw-r--r-- 1 yoder yoder  4053 Mar  8 11:18 cpu-omap.c
 
  4 -rw-r--r-- 1 yoder yoder  1975 Mar  8 11:18 debug-devices.c
 
  8 -rw-r--r-- 1 yoder yoder  7120 Mar  8 11:18 debug-leds.c
 
12 -rw-r--r-- 1 yoder yoder  9975 Mar  8 11:18 devices.c
 
60 -rwxr-xr-x 1 yoder yoder  59827 Mar  8 11:26 dma.c
 
24 -rw-r--r-- 1 yoder yoder  20791 Mar  8 11:18 dmtimer.c
 
12 -rw-r--r-- 1 yoder yoder  9675 Mar  8 11:25 fb.c
 
16 -rw-r--r-- 1 yoder yoder  12815 Mar  8 11:18 gpio-switch.c
 
48 -rw-r--r-- 1 yoder yoder  47671 Mar  8 11:18 gpio.c
 
  8 -rw-r--r-- 1 yoder yoder  5841 Mar  8 11:18 i2c.c
 
  4 drwxr-xr-x 3 yoder yoder  4096 Mar  8 11:18 include
 
  4 -rw-r--r-- 1 yoder yoder  3749 Mar  8 11:18 io.c
 
20 -rw-r--r-- 1 yoder yoder  19782 Mar  8 11:28 iommu.c
 
20 -rw-r--r-- 1 yoder yoder  17214 Mar  8 13:42 iommu.ko
 
  4 -rw-r--r-- 1 yoder yoder  1924 Mar  8 13:40 iommu.mod.c
 
  4 -rw-r--r-- 1 yoder yoder  2152 Mar  8 11:28 iopgtable.h
 
20 -rw-r--r-- 1 yoder yoder  19139 Mar  8 11:28 iovmm.c
 
16 -rw-r--r-- 1 yoder yoder  14686 Mar  8 13:42 iovmm.ko
 
  4 -rw-r--r-- 1 yoder yoder  1764 Mar  8 13:40 iovmm.mod.c
 
12 -rw-r--r-- 1 yoder yoder  12069 Mar  8 11:18 mailbox.c
 
28 -rw-r--r-- 1 yoder yoder  26560 Mar  8 11:18 mcbsp.c
 
  4 -rw-r--r-- 1 yoder yoder  2109 Mar  8 11:18 mux.c
 
  4 -rw-r--r-- 1 yoder yoder  2739 Mar  8 11:18 ocpi.c
 
12 -rw-r--r-- 1 yoder yoder  10915 Mar  8 11:18 sram.c
 
20 -rw-r--r-- 1 yoder yoder  18290 Mar  8 11:18 usb.c
 
16 -rw-r--r-- 1 yoder yoder  13911 Mar  8 11:26 vram.c
 
  8 -rw-r--r-- 1 yoder yoder  6426 Mar  8 11:26 vrfb.c
 
 
 
</pre>
 
|-
 
| 4-4
 
| 4-17
 
| Snippet from Linux 2.6 .config
 
| <pre>
 
...
 
#
 
# USB Input Devices
 
#
 
CONFIG_USB_HID=y
 
# CONFIG_HID_PID is not set
 
# CONFIG_USB_HIDDEV is not set
 
 
 
#
 
# Special HID drivers
 
#
 
CONFIG_HID_COMPAT=y
 
CONFIG_HID_A4TECH=y
 
CONFIG_HID_APPLE=y
 
CONFIG_HID_BELKIN=y
 
CONFIG_HID_CHERRY=y
 
...
 
</pre>
 
|-
 
| 4-5
 
| 4-21
 
| Linux autoconf.h
 
| <pre>
 
#define CONFIG_USB_SISUSBVGA_MODULE 1
 
#define CONFIG_USB_PHIDGETMOTORCONTROL_MODULE 1
 
#define CONFIG_USB_MUSB_HDRC 1
 
#define CONFIG_USB_LEGOTOWER_MODULE 1
 
#define CONFIG_USB_SERIAL_IR_MODULE 1
 
#define CONFIG_USB_GSPCA_T613_MODULE 1
 
#define CONFIG_USB_SERIAL_TI_MODULE 1
 
#define CONFIG_USB_ETH_RNDIS 1
 
#define CONFIG_USB_SERIAL_MODULE 1
 
#define CONFIG_USB_W9968CF_MODULE 1
 
#define CONFIG_USB_RTL8150 1
 
#define CONFIG_USB_SERIAL_WHITEHEAT_MODULE 1
 
#define CONFIG_USB_GADGET_MUSB_HDRC 1
 
...
 
</pre>
 
|-
 
| 4-6
 
| 4-22
 
| Makefile Targets
 
| <pre>
 
$ make help
 
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
 
  silentoldconfig - Same as oldconfig, but quietly
 
  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
 
  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/yoder/oe/angstrom-dev/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.29-r46/git/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
 
  installmandocs  - install man pages generated by mandocs
 
  mandocs        - man pages
 
  pdfdocs        - PDF
 
  psdocs          - Postscript
 
  xmldocs        - XML DocBook
 
 
 
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
 
 
 
  afeb9260_defconfig      - Build for afeb9260
 
  am200epdkit_defconfig    - Build for am200epdkit
 
  ams_delta_defconfig      - Build for ams_delta
 
  assabet_defconfig        - Build for assabet
 
  at91cap9adk_defconfig    - Build for at91cap9adk
 
  at91rm9200dk_defconfig  - Build for at91rm9200dk
 
  at91rm9200ek_defconfig  - Build for at91rm9200ek
 
  at91sam9260ek_defconfig  - Build for at91sam9260ek
 
  at91sam9261ek_defconfig  - Build for at91sam9261ek
 
  at91sam9263ek_defconfig  - Build for at91sam9263ek
 
  at91sam9g20ek_defconfig  - Build for at91sam9g20ek
 
  at91sam9rlek_defconfig  - Build for at91sam9rlek
 
  ateb9200_defconfig      - Build for ateb9200
 
  badge4_defconfig        - Build for badge4
 
  cam60_defconfig          - Build for cam60
 
  carmeva_defconfig        - Build for carmeva
 
  cerfcube_defconfig      - Build for cerfcube
 
  cm_x300_defconfig        - Build for cm_x300
 
  colibri_defconfig        - Build for colibri
 
  collie_defconfig        - Build for collie
 
  corgi_defconfig          - Build for corgi
 
  csb337_defconfig        - Build for csb337
 
  csb637_defconfig        - Build for csb637
 
  dss_omap3_beagle_defconfig - Build for dss_omap3_beagle
 
  dss_omap_3430sdp_defconfig - Build for dss_omap_3430sdp
 
  dss_overo_defconfig      - Build for dss_overo
 
  ebsa110_defconfig        - Build for ebsa110
 
  ecbat91_defconfig        - Build for ecbat91
 
  edb7211_defconfig        - Build for edb7211
 
  ep93xx_defconfig        - Build for ep93xx
 
  eseries_pxa_defconfig    - Build for eseries_pxa
 
  ezx_defconfig            - Build for ezx
 
  footbridge_defconfig    - Build for footbridge
 
  fortunet_defconfig      - Build for fortunet
 
  h3600_defconfig          - Build for h3600
 
  h5000_defconfig          - Build for h5000
 
  h7201_defconfig          - Build for h7201
 
  h7202_defconfig          - Build for h7202
 
  hackkit_defconfig        - Build for hackkit
 
  imx27ads_defconfig      - Build for imx27ads
 
  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
 
  littleton_defconfig      - Build for littleton
 
  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
 
  msm_defconfig            - Build for msm
 
  mv78xx0_defconfig        - Build for mv78xx0
 
  mx1ads_defconfig        - Build for mx1ads
 
  mx31ads_defconfig        - Build for mx31ads
 
  mx31litekit_defconfig    - Build for mx31litekit
 
  mx31moboard_defconfig    - Build for mx31moboard
 
  mx31pdk_defconfig        - Build for mx31pdk
 
  n770_defconfig          - Build for n770
 
  n800_defconfig          - Build for n800
 
  neocore926_defconfig    - Build for neocore926
 
  neponset_defconfig      - Build for neponset
 
  netwinder_defconfig      - Build for netwinder
 
  netx_defconfig          - Build for netx
 
  ns9xxx_defconfig        - Build for ns9xxx
 
  omap2_evm_defconfig      - Build for omap2_evm
 
  omap3_beagle_defconfig  - Build for omap3_beagle
 
  omap3_evm_defconfig      - Build for omap3_evm
 
  omap3_pandora_defconfig  - Build for omap3_pandora
 
  omap_2430sdp_defconfig  - Build for omap_2430sdp
 
  omap_3430sdp_defconfig  - Build for omap_3430sdp
 
  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_h3_1710_defconfig  - Build for omap_h3_1710
 
  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
 
  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
 
  pcm037_defconfig        - Build for pcm037
 
  pcm038_defconfig        - Build for pcm038
 
  picotux200_defconfig    - Build for picotux200
 
  pleb_defconfig          - Build for pleb
 
  pnx4008_defconfig        - Build for pnx4008
 
  pxa255-idp_defconfig    - Build for pxa255-idp
 
  qil-a9260_defconfig      - Build for qil-a9260
 
  realview-smp_defconfig  - Build for realview-smp
 
  realview_defconfig      - Build for realview
 
  rpc_defconfig            - Build for rpc
 
  rx51_defconfig          - Build for rx51
 
  s3c2410_defconfig        - Build for s3c2410
 
  s3c6400_defconfig        - Build for s3c6400
 
  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
 
  sx1_defconfig            - Build for sx1
 
  tct_hammer_defconfig    - Build for tct_hammer
 
  trizeps4_defconfig      - Build for trizeps4
 
  usb-a9260_defconfig      - Build for usb-a9260
 
  usb-a9263_defconfig      - Build for usb-a9263
 
  versatile_defconfig      - Build for versatile
 
  viper_defconfig          - Build for viper
 
  w90p910_defconfig        - Build for w90p910
 
  xm_x2xx_defconfig        - Build for xm_x2xx
 
  yl9200_defconfig        - Build for yl9200
 
  zylonite_defconfig      - Build for zylonite
 
 
 
  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
 
</pre>
 
|-
 
| 4-7
 
| 4-27
 
| Partial Listing of Kconfig for ARM Architecture
 
| <pre>
 
...
 
</pre>
 
|-
 
| 4-8
 
| 4-30
 
| Snippet from .../arch/arm/Kconfig
 
| <pre>
 
...
 
source "init/Kconfig"
 
 
 
source "kernel/Kconfig.freezer"
 
 
 
menu "System Type"
 
 
 
choice
 
prompt "ARM system type"
 
default ARCH_VERSATILE
 
 
 
config ARCH_AAEC2000
 
bool "Agilent AAEC-2000 based"
 
select CPU_ARM920T
 
select ARM_AMBA
 
select HAVE_CLK
 
help
 
  This enables support for systems based on the Agilent AAEC-2000
 
 
 
config ARCH_INTEGRATOR
 
bool "ARM Ltd. Integrator family"
 
...
 
source "arch/arm/plat-omap/Kconfig"
 
</pre>
 
|}
 

Latest revision as of 12:40, 3 October 2013