17 August 2010 1. Introduction ---------------- This document accompanies OMAP(TM) Software Release L24.9 based on Linux 2.6.35 on OMAP4430 SDP, Blaze and Panda boards. The document specifies details about: - downloading the source code and building the images - supported features - defects fixed and defects existing in the release. 2. Release Summary ------------------ This is a release of the Linux Baseport for OMAP4430. It supports the OMAP4 SDP, Blaze and Panda boards. The kernel is based on Linux version 2.6.35 from open source. U-boot is based on open-source version 1.1.4. NOTE that the Kernel for SDP, Blaze and Panda boards is the same. However the bootloaders for Panda are in separate GITs compared to the ones for SDP and Blaze. L24.10 onwards the same bootloader codebase will support all the boards. 2.1 Bootloaders for SDP and Blaze boards The u-boot source can be obtained via GIT from: http://dev.omapzoom.org/?p=bootloader/u-boot.git;a=shortlog;h=refs/heads/omap4_dev The x-loader source can be obtained via GIT from: http://dev.omapzoom.org/?p=bootloader/x-loader.git;a=shortlog;h=refs/heads/omap4_dev 2.2 Bootloaders for Panda boards The u-boot source can be obtained via GIT from: GIT: git://gitorious.org/pandaboard/u-boot.git Branch: omap4_panda The x-loader source can be obtained via GIT from: GIT: git://gitorious.org/pandaboard/x-loader.git Branch: omap4_panda 2.3 Kernel for all boards (SDP, Blaze, Panda) The kernel source can be obtained via GIT from: http://dev.omapzoom.org/?p=integration/kernel-omap4.git;a=shortlog;h=refs/heads/L24.9 Components that are supported in the release: X-loader, U-Boot, OS Kernel (SMP), Phoenix power IC, UART, GP Timer, GPIO, Watchdog, Neon, I2C, MMC/SD/eMMC, Ethernet, RTC, SDMA (including descriptor loading), Keypad, Touch screen, McSPI, McBSP, Mentor USB, Phoenix General Purpose ADC, Battery Charging, Power Management Frameworks, Sensors (Proximity, Accelerometer, Ambient Light, Temperature, Digital Compass,Pressure) LED (PWM and GPIO), EHCI, OHCI. Audio (Phoenix Audio IC, ABE, AESS), Display driver (TAAL based), Basic display (DSS2 migration, FB dev), Tiler memory manager. WLAN support FM/Bluetooth support 3. Instructions ---------------- 3.1 Board setup Please refer to the OMAP4430 SDP guide for instructions on setting up the OMAP4 board. 3.2 Compiling Images While building u-boot and x-loader, please note the difference in config files used for SDP/Blaze versus Panda. For building the kernel, the config file is same for all boards. 3.2.1 Compiling U-boot Set the environment variable PATH such that cross compile binaries point to the needed tool chain. Refer to section 5 for tool chain information. To select the default configuration for U-Boot type: For SDP and Blaze boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_config For Panda boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430panda_config To build the U-Boot image type: # make CROSS_COMPILE=arm-none-linux-gnueabi- 3.2.2 Compiling X-loader (for booting from external/removable MMC/SD) Set the environment variable PATH such that cross compile binaries point to the needed tool chain. Refer to section 5 for tool chain information. U-boot needs to be placed in a directory parallel to x-loader and compiled first. E.g.: [DIR] omap4 +-- u-boot +-- x-loader To select the default configuration for X-loader type: For ES1.0 SDP and Blaze boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_MPU_600MHz_config For ES2.0 SDP and Blaze boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_config For ES1.0 Panda boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430sdp_600_config For ES2.0 Panda boards: # make CROSS_COMPILE=arm-none-linux-gnueabi- omap4430panda_config To build the X-loader image type: # make CROSS_COMPILE=arm-none-linux-gnueabi- # make ift CROSS_COMPILE=arm-none-linux-gnueabi- The above step will create a MLO image, which can be copied into the MMC/SD card for booting via MMC/SD. For booting from eMMC flash this MLO at sector 0x0 or sector 0x100. See section 3.3.2 for detailed instructions for flashing and booting from eMMC. 3.2.4 Compiling the Kernel Set the environment variable PATH such that cross-compile binaries point to the needed tool chain. Refer to section 5 for tool chain information. The default configuration file for OMAP 4430 is present at arch/arm/configs/omap_4430sdp_defconfig. To work with the default configuration file, run following commands: # make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- omap_4430sdp_defconfig For booting the kernel on OMAP4430 ES1.0, additionally enable CONFIG_OMAP4_ES1 in the kernel config. Build kernel with: # make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage NOTE: The above steps will create arch/arm/boot/uImage in the kernel directory which is the binary used for booting. 3.3 Flashing and Booting 3.3.1 Booting from removable MMC Use the MLO (ref: section 3.2.2) and u-boot.bin (ref: section 3.2.1) binaries and follow the instructions at http://elinux.org/BeagleBoard#MMC.2FSD_boot to boot the board from removable MMC. Set the board switch settings as follows to boot the board from removable MMC: S9 - 1-off, 2-on, 3-on, 4-on S8 - 1-off, 2-on, 3-off, 4-on, 5-on, 6-on, 7-on, 8-on 3.3.2 Flashing and booting from eMMC Follow the instructions below to save x-loader and u-boot binaries to eMMC and subsequently boot from eMMC. Get the x-loader and u-boot binaries (that you want to flash to eMMC) into RAM using one of the following options. Option 1: Use a debugger or OMAPFlasher tool to download x-loader (with configuration header, e.g. MLO) as well as u-boot.bin into SDRAM and run u-boot from SDRAM. Option 2: Boot via a removable MMC card following the instructions in section 3.3.1. After booting from removable MMC, copy the MLO and u-boot.bin from the MMC to RAM using the following commands: OMAP44XX SDP # mmcinit 0 OMAP44XX SDP # fatload mmc 0 [Ram Address X] MLO OMAP44XX SDP # fatload mmc 0 [Ram Address Y] u-boot.bin Once the x-loader and u-boot binaries are in RAM, use the following commands to copy them to eMMC. 1) Erase all EMMC contents OMAP44XX SDP # mmcinit 1 OMAP44XX SDP # mmc 1 erase 0x0 0x800000 2) Flash x-loader OMAP44XX SDP # mmc 1 erase 0x100 [size of x-loader in hex] OMAP44XX SDP # mmc 1 write [Ram Address X] 0x100 [size of x-loader in hex] Note: Ram address X is address where x-loader is downloaded in RAM using either the debugger, OMAPFlasher or removable MMC. 3) Flash u-boot.bin OMAP44XX SDP # mmc 1 erase 0x400 [size] OMAP44XX SDP # mmc 1 write [Ram Address Y] 0x400 [size] Note: Ram address Y is address where u-boot is downloaded in RAM using either the debugger, OMAPFlasher or removable MMC. Set the board switch settings as follows to boot the board from eMMC: S9 - 1-off, 2-on, 3-on, 4-on S8 - 1-on, 2-on, 3-on, 4-on, 5-on, 6-off, 7-on, 8-on 3.3.3 Using Filesystem from eMMC Use fdisk to create an ext2 partition (/dev/mmcblk0p2) in eMMC leaving 2MB of space at the top. Use the following commands to flash the filesystem to eMMC partition 1) Bootup with a known good kernel and filesystem from RAM 2) Use a filesystem which has USB Gadget filestorage module g_filestorage.ko 3) Connect the usb cable from the board to the PC 4) Load the USB filestorage gadget module as: insmod g_filestorage.ko file=/dev/mmcblk0p2 stall=0 removable=1 5) When the USB drive enumerates on the Linux PC, mount the drive 6) Add ext2 filesystem to the mounted drive 7) sync and then mount the drive. 8) Add the following in bootargs "root=/dev/mmcblk0p2 rw rootdelay=1" to be able to use the eMMC based FS as rootfs. 3.3.4 Bootargs If your board has 1GB memory, add "mem=1G" in the bootargs. Most OMAP4430 ES2.0 SDP and Blaze boards have 1GB RAM. OMAP4 ES1.0 boards have 512 MB RAM. Since UART3 is used as the console on OMAP4 Wakeup board, you need to set 'console=ttyO2,115200n8' in the bootargs While using a filesystem from MMC/SD/eMMC, you may use params such as: 'root=/dev/mmcblk1p2 rw rootdelay=1'. The rootdelay is required because removable cards may take a few seconds to be detected. On SDP and Blaze boards, eMMC block device will always be available at /dev/mmcblk0 while removable MMC/SD block device will be available at /dev/mmcblk1. While using a filesystem via NFS, you may use params such as: 'root=/dev/nfs rw nfsroot=<serverip>:<mount-partition>,nolock' Refer to section 3.4.2 for display related bootargs options For detailed list and explaination of the various boot parameters, please refer http://www.kernel.org/pub/linux/kernel/people/gregkh/lkn/lkn_pdf/ch09.pdf 3.3.5 Saving environment variables in u-boot The 'saveenv' command in u-boot saves the environment variables in eMMC on OMAP4 SDP and Blaze boards. This is not supported on Panda boards as eMMC is not available on Panda boards. On SDP and Blaze, the environment variables are stored on a RAW partition of size 1MB on eMMC starting from sector 0x700 to sector 0x7FF. The usage is as below: - Just typing saveenv prompts user to press 'y' or 'Y' once user confirms env is saved to eMMC or else throws message "Cannot save env to eMMC' - Typing "saveenv -f" forcefully updates env without user intervention. 3.4 Using FB and V4L2 Display driver For details please refer to: http://omappedia.org/wiki/Bootargs_for_enabling_display Write Back usage guide is available at: http://omappedia.org/wiki/Write_Back_pipeline_usage_guide 3.5 Enabling Power Management Features All PM features are enabled by default in OMAP4 kernel configuration (omap_4430sdp_defconfig). Note that PM features on OMAP4430 ES1.0 are not supported and hence all PM features are disabled once CONFIG_OMAP4_ES1 is selected. 3.5.1 CPU Hotplug To hotplug out CPU1 use the following command echo 0 > /sys/devices/system/cpu/cpu1/online To bring back CPU1 online use the following command echo 1 > /sys/devices/system/cpu/cpu1/online Note that CPU0 cannot be offlined due to hardware limitation. Currenlty CPU1 transitions to CSWR state when offlined. This can only be verified using OBS signals. 3.5.2 CPUIdle To test cpuidle, it's necessary that CPU1 is hotplugged out. Use the below command to hotplug out CPU1 echo 0 > /sys/devices/system/cpu/cpu1/online Once CPU1 is hotplugged out, OBS signals can be used to verify MPU/CPU0/CPU1 transtitions. Currently only sleep state of MPU CSWR is supported. 3.5.3 System Suspend To test system suspend, use the following command echo mem > /sys/power/state Use OBS signals to verify MPU/CPU0/CPU1 transitions. Currently only sleep state of MPU CSWR is supported. Please use a ramdisk inorder to test system suspend feature 3.6 Using Audio Driver Include the asound.conf file in /etc directory in your FS. It maps the different audio devices Usage: aplay -D mm file.wav aplay -D tones file.wav aplay -D vx file.wav aplay -D hd_audio file.wav 4. Features ----------- 4.1 New Features - EHCI and OHCI are supported for functionality. These drivers do not support Power Management and hence are disabled in the default kernel configuration. - Himem support is enabled by default. - Power management (CONFIG_PM) is enabled by default for OMAP4430 ES2.0, while it is disabled for OMAP4430 ES1.0. 4.2 Supported Features - Boot-loader: X-loader with MMC/eMMC/SD support U-boot with USB, MMC/eMMC/SD and Ethernet support - OS Kernel OS Kernel (SMP) Phoenix power IC, UART, GP Timer, GPIO, Watchdog, NEON, I2C, MMC/SD/eMMC , Ethernet, RTC, SDMA (including descriptor loading), Keypad, Touch screen, McSPI, McBSP, Mentor USB, EHCI, OHCI, Phoenix General Purpose ADC, Battery Charging. Proximity sensor Accelerometer sensor Ambient Light sensor Temperature sensor Digital Compass Pressure Sensor LED (PWM and GPIO) - Power Management Frameworks - Clock framework - Clockdomain framework - Powerdomain framework - Regulator framework - CPUidle with support upto MPU CSWR - System wide suspend with support upto MPU CSWR - CPU1 hotplug with support upto CPU1 CSWR NOTE: - Power management (CONFIG_PM) is enabled by default for OMAP4430 ES2.0, while it is disabled for OMAP4430 ES1.0. - All clocks are still kept enabled on bootloader. - These features can only be validated on EMU devices with omap4_pm_defconfig - Audio Audio playback to Phoenix Hand-free, Head set output devices. HDMI audio playback Audio record through Phoenix analog MIC input. Simultaneous audio playback and capture. Audio Playback to Phoenix Earphone Audio Playback using Tones port ALSA controls for ABE mixers Add McPDM power management support - Video Display driver - FBdev and V4L2 API support - Primary and Secondary DSI and HDMI displays - Simultaneous rendering on all 3 displays - Blanking of display after inactivity timer - Suspend and Resume on all the displays - Primary LCD - Secondary LCD - HDMI - Pico DLP Tiler memory manager. - WLAN - FM/Bluetooth 4.3 Postponed Features -none 4.4 Future Planned Features Refer to Program schedule. 4.5 Defects Fixed in This Release OMAPS00219723 MMC: sometimes the order of detection of eMMC and external SD card is wrong OMAPS00221981 eMMC device shall be stable at /dev/mmcblk0 OMAPS00219502 IRQ 93 - I2C ISR not correctly handled OMAPS00218080 PT: Robustness: EXT2-fs (mmcblk1p1): error: ext2_lookup is generated after certain number of iterations OMAPS00214020 ethernet doesn't get configured with L24.4 kernel OMAPS00215563 Not able to wakeup from suspend state OMAPS00216039 L24x: Tick suppression won't work because of the LOCAL A9 timer aren't wakeup capable OMAPS00216037 L24x: CPUx comes out of low power mode when there is an enevt om CPUy OMAPS00220851 DMA test case failures - Descriptor loading and SMP OMAPS00219141 u-boot net root path is too short OMAPS00221839 MUSB (OTG) in Host mode: enumeration failure if USB device connected before blaze boot OMAPS00215668 MUSB driver in device mode has problems with unaligned DMA. OMAPS00221528 MUSB Host :- Fix the default DMA mapping of control transfer buffers OMAPS00221512 USB: MUSB Host: Data transfers (Write to USB disk) fails with FAT errors OMAPS00219663 1080p to WVGA downscaling of YUYV does not work OMAPS00218554 HDMI panel shows tearing when 3 different 3D apps are executed OMAPS00222043 On display-next branch or L24.8 if we disable HDMI in menuconfig, build error is observed OMAPS00213825 Kernel crash when many processes have been scheduled OMAPS00216449 Problems are seen with NFS when 'tcp' option is not specified in bootargs. OMAPS00214020 ethernet doesn't get configured with L24.4 kernel 4.6 Open Defects OMAPS00215651 MUSB driver in host mode has problems with unaligned DMA OMAPS00217993 Display on Primary LCD does not wakeup when USB is active OMAPS00218029 PT_PPM: Low USB-MS throughputs metrics for write operations OMAPS00220506 omap-serial driver is unstable during bluetooth file transfer stress testing. OMAPS00221541 UART trasfers fails at 3.5Mbps baudrate with DMA mode. OMAPS00222079 MMC corruption on reading when ADMA is used OMAPS00222347 [PT][Endurance] Transfer: PTLv1.3.8: Dxfer failed after some iterations OMAPS00222789 At random times, booting is not completed and the SDP hangs. OMAPS00222925 USB Host - Chapter 9 control,in out test case failure OMAPS00221067 omaplfb relies on the FB2OFB definition, which is not defined by the headers of the Ubuntu kernel headers OMAPS00219789 V4L2 error observed when rendering frames from Video decode testcases OMAPS00216592 There is no way available for dynamically setting/resetting dithering bit OMAPS00213906 180 degree rotation of yuv format shows a bluish tinge OMAPS00220816 PicoDLP shows a junk buffer at the bottom of the frame OMAPS00219829 PT_PPM: AV Playback: FPS numbers for Video Playback via HDMI are below validation criteria OMAPS00220581 L_JPEGDEC_FUNCTIONAL_001: multiple dark lines are seen when image is displayed OMAPS00222834 HDMI as a default device is giving OCP errors OMAPS00222915 HDMI driver must not periodically wake up the system to enable ESD chip detecting plug insertion OMAPS00222943 Key press cannot wakeup system 4.7 Open Change Requests None 4.8 Rejected Defects OMAPS00221558 HSMMC : Copying same file twice on MMC and when run "cmp" will throw error OMAPS00218323 PT_Adhoc:Audio Playback of a file stored in SD card, Terminal hangs while SD is removed. OMAPS00221850 UST OTG ( as HOST): CDC-ACM class issue OMAPS00219388 Secondary display corruption with L24.6 4.9 Postponed Defects OMAPS00221726 PT_PPM: Low USB-MS throughputs metrics for read operations OMAPS00216446 Disabling "auto update" on DSI would impact the V4l2 drivers that have the ISRs hooked up for FRAMEDONE already. 4.10 Limitations 1) MAC address reading from ethernet EEPROM is not supported. 5. Tool Chain ------------- The toolchain used to build the code can be obtained from CodeSourcery at the following URL: http://www.codesourcery.com/sgpp/lite/arm/portal/release1293 The tool chain version is Sourcery G++ Lite 2010q1-202 for ARM GNU/Linux. -------------------------------------------------------------------------------- OMAP(TM) is a Trademark of Texas Instruments Incorporated Innovator(TM) is a Trademark of Texas Instruments Incorporated Code Composer Studio(TM) is a Trademark of Texas Instruments Incorporated DSP/BIOS(TM) is a Trademark of Texas Instruments Incorporated All other trademarks are the property of the respective owner.