Project

General

Profile

Actions

Feature #43

closed

S-Video output configuration needs to be identified

Added by Hammel about 14 years ago. Updated almost 14 years ago.

Status:
Closed
Priority:
High
Assignee:
Category:
bootloaders
Target version:
Start date:
18 Oct 2010
Due date:
% Done:

100%

Estimated time:
Severity:
Critical

Description

I booted the board using the serial console and connected the S-Video port to a TV. With the validation kernel and root file system running I enabled the S-Video port and tried mplayer with the provided sample AVI file. The video was in black and white and looked pretty bad. A little digging makes me think that the video resolution as set by the bootloader is in PAL, not NTSC. I tried changing this in the bootloader using some tips I found online (including some info from the DSS documentation in the kernel docs) but never was able to change the settings in a way that looked correct. So more investigation on how to get S-Video output is required.

Actions #1

Updated by Hammel about 14 years ago

The current build specific to bringing up the board does not configured the system properly to be able to run the svideo script scarfed from the validation images. If I try it I get this:

  1. /usr/bin/svideo
    cat: can't open '/sys/devices/platform/omapfb/displays': No such file or directory
    /usr/bin/svideo: line 5: can't create /sys/devices/platform/omapfb/framebuffers: nonexistent directory
    /usr/bin/svideo: line 6: can't create /sys/devices/platform/omapfb/framebuffers: nonexistent directory
    /usr/bin/svideo: line 7: can't create /sys/devices/platform/omapfb/overlays: nonexistent directory
    /usr/bin/svideo: line 8: can't create /sys/devices/platform/omapfb/overlays: nonexistent directory
    /usr/bin/svideo: line 9: can't create /sys/devices/platform/omapfb/displays: nonexistent directory

So how do I configure the display on the TV/DVI/etc.?

Actions #2

Updated by Hammel about 14 years ago

Hmmm. I'm wondering if this might have been because the TV wasn't turned on when that test was run. Hopefully, it will be just that simple. I'll have to try it later tonight.

Actions #3

Updated by Hammel about 14 years ago

Nope. No such luck. Turned on TV, then booted the board:

omapfb omapfb: no displays
omapfb omapfb: failed to setup omapfb
omapfb: probe of omapfb failed with error -22

Full boot log is attached to this report.

Actions #4

Updated by Hammel about 14 years ago

The Angstrom u-boot uses a different revision from the main git repository than what the Free Electrons guide suggested. Additionally, it utilizes a whole slew of patches, a few of which are specific to the use of DSS. According to this post on Google Groups BeagleBoard forum:

http://groups.google.com/group/beagleboard/browse_thread/thread/e94faaff2f393190?hl=en

u-boot plays an important role in bringing up the S-video port (or DSS in general). So I believe I should attempt to update the u-boot build to use the Angstrom specified version of u-boot and find a way to retrieve the patches for it. More than likely, these will have to be placed in a tar archive on the BeagleBox SourceForge site similar to the way the kernel patches are handled.

Actions #5

Updated by Hammel about 14 years ago

The Angstrom version + patches is integrated into the build (not checked in yet). My first attempt failed because I copied in a local copy of the omap3_beagle.h configuration file which was incompatible. Once I fixed that the build worked fine. This build is used when USE_ANGSTROM is set to 1. If it is set to 0 then the Free electrons version (a stable branch from the Denx repository) is used instead.

Because there are so many places to get this stuff I decided to also set up building against the BeagleBoard version of u-boot from gitorious: http://gitorious.org/beagleboard-validation/u-boot
This archive is the one being updated by the BeagleBoard developers. I set up the build to accept this option if USE_GITORIOUS is set to 1. If it is set, then the USE_ANGSTROM setting has not meaning.

Both the Angstrom and Gitorious builds complete successfully. I'll be able to try both tonight when I get home.

Actions #6

Updated by Hammel about 14 years ago

Tonight I tried a variety of branches from both the gitorious and denx.de repositories. A few booted back to the console login but none provided any better DSS support. Results are below.

It appears that gitorious.org has two repositories related to the BeagleBoard:

gitorious.org/beagleboard
gitorious.org/beagleboard-validation

Both have an omap3-dev-usb branch, with a last commit ID of 3f6a11d8a37f11bef4611345b3d3fe38cc086a17. The branch and commit are referenced by the validation images for C4/Bx (http://code.google.com/p/beagleboard/wiki/BeagleboardRevC3Validation), however the validation images only use gitorious.org/beagleboard. Both appear to be the same repository, however, since the log for the branch/commit ID is the same. Neither build successfully. I did:

git clone git://gitorious.org/beagleboard-validation/u-boot.git gitdir
cd gitdir
git checkout 3f6a11d8a37f11bef4611345b3d3fe38cc086a17

The denx.de repository is used by both the Free Electrons guide to bringing up the BeagleBoard and the current Angstrom build (recipes/u-boot/u-boot-git.bb). There is also the sakoman.net repository referenced by u-boot-omap3beagleboard_1.1.4.bb and u-boot-omap3_git.bb in Angstrom. I didn't try that one.

Here is the status of those builds. Note: these were tested on a board that displays either "Ax/Bx" or "Beagle Rev C4" on successful u-boot boots.

  1. ----------------
  2. From := http://gitorious.org/beagleboard-validation/u-boot
  3. UBOOT_URL := git://gitorious.org/beagleboard-validation/u-boot.git
  4. UBOOT_BRANCH := beagle-2010.12rc1
  5. Board rev reported := Beagle Rev C4
  6. Result := Builds okay, locks up booting kernel
  7. (linux-omap-2.6.32, tmlind git, git id: 3fd5969a81a9324b58a1c19cf510c0da97c99565, PSP SDK + SGX patches)
  8. ----------------
  9. From := http://gitorious.org/beagleboard-validation/u-boot
  10. UBOOT_URL := git://gitorious.org/beagleboard-validation/u-boot.git
  11. UBOOT_BRANCH := omap3-dev-usb or 3f6a11d8a37f11bef4611345b3d3fe38cc086a17
  12. Result := compilation error
    arm-unknown-linux-uclibcgnueabi-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -DTEXT_BASE=0x80e80000 -I/home/mjhammel/src/ximba/bb/bld/uboot-git/include -fno-builtin -ffreestanding -nostdinc -isystem /home/mjhammel/src/ximba/bb/bld/crosstool-ng-1.8.2.bld/install/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.3/include -pipe -DCONFIG_ARM -D__ARM__ -march=armv5 -mno-thumb-interwork -march=armv5 -mno-thumb-interwork -Wall -Wstrict-prototypes -fno-stack-protector -c -o board.o board.c
    board.c:126: error: inline function 'coloured_LED_init' cannot be declared weak
    board.c:128: error: inline function 'red_LED_on' cannot be declared weak
    board.c:130: error: inline function 'red_LED_off' cannot be declared weak
    board.c:132: error: inline function 'green_LED_on' cannot be declared weak
    board.c:134: error: inline function 'green_LED_off' cannot be declared weak
    board.c:136: error: inline function 'yellow_LED_on' cannot be declared weak
    board.c:138: error: inline function 'yellow_LED_off' cannot be declared weak
  13. ----------------
  14. From := http://gitorious.org/beagleboard/u-boot
  15. UBOOT_URL := git://gitorious.org/beagleboard/u-boot.git
  16. UBOOT_BRANCH := omap3-dev-usb or 3f6a11d8a37f11bef4611345b3d3fe38cc086a17
  17. Result := compilation error
    arm-unknown-linux-uclibcgnueabi-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -DTEXT_BASE=0x80e80000 -I/home/mjhammel/src/ximba/bb/bld/uboot-git/include -fno-builtin -ffreestanding -nostdinc -isystem /home/mjhammel/src/ximba/bb/bld/crosstool-ng-1.8.2.bld/install/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.3/include -pipe -DCONFIG_ARM -D__ARM__ -march=armv5 -mno-thumb-interwork -march=armv5 -mno-thumb-interwork -Wall -Wstrict-prototypes -fno-stack-protector -c -o board.o board.c
    board.c:126: error: inline function 'coloured_LED_init' cannot be declared weak
    board.c:128: error: inline function 'red_LED_on' cannot be declared weak
    board.c:130: error: inline function 'red_LED_off' cannot be declared weak
    board.c:132: error: inline function 'green_LED_on' cannot be declared weak
    board.c:134: error: inline function 'green_LED_off' cannot be declared weak
    board.c:136: error: inline function 'yellow_LED_on' cannot be declared weak
    board.c:138: error: inline function 'yellow_LED_off' cannot be declared weak
  18. ----------------
  19. From := http://gitorious.org/beagleboard-validation/u-boot
  20. UBOOT_URL := git://gitorious.org/beagleboard-validation/u-boot.git
  21. UBOOT_BRANCH := master
  22. Board rev reported := Board revision Ax/Bx
  23. Result := Builds okay, boots to login, but kernel log shows "omapfb: no displays found"
  24. ----------------
  25. From := http://gitorious.org/beagleboard-validation/u-boot
  26. UBOOT_URL := git://gitorious.org/beagleboard-validation/u-boot.git
  27. UBOOT_BRANCH := validation-20100818
  28. Board rev reported := N/A
  29. Result := Locks up at "I2C: Ready"
  30. ----------------
  31. From := http://code.google.com/p/beagleboard/wiki/BeagleboardRevC3Validation
  32. UBOOT_URL := git://gitorious.org/beagleboard/u-boot.git
  33. UBOOT_BRANCH := omap3-dev-usb
  34. Result := compilation errors
    arm-unknown-linux-uclibcgnueabi-gcc -g -Os -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -fno-strict-aliasing -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -DTEXT_BASE=0x80e80000 -I/home/mjhammel/src/ximba/bb/bld/uboot-git/include -fno-builtin -ffreestanding -nostdinc -isystem /home/mjhammel/src/ximba/bb/bld/crosstool-ng-1.8.2.bld/install/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.3/include -pipe -DCONFIG_ARM -D__ARM__ -march=armv5 -mno-thumb-interwork -march=armv5 -mno-thumb-interwork -Wall -Wstrict-prototypes -fno-stack-protector -c -o board.o board.c
    board.c:126: error: inline function 'coloured_LED_init' cannot be declared weak
    board.c:128: error: inline function 'red_LED_on' cannot be declared weak
    board.c:130: error: inline function 'red_LED_off' cannot be declared weak
    board.c:132: error: inline function 'green_LED_on' cannot be declared weak
    board.c:134: error: inline function 'green_LED_off' cannot be declared weak
    board.c:136: error: inline function 'yellow_LED_on' cannot be declared weak
    board.c:138: error: inline function 'yellow_LED_off' cannot be declared weak
    make2: *** [board.o] Error 1
  35. ----------------
  36. From := Free Electrons guide
  37. UBOOT_URL := git://git.denx.de/u-boot.git
  38. UBOOT_BRANCH := v2010.06
  39. Board rev reported := Board revision Ax/Bx
  40. Result := Builds okay, boots to login, but kernel log shows "omapfb: no displays found"
  41. (linux-omap-2.6.32, tmlind git, git id: 3fd5969a81a9324b58a1c19cf510c0da97c99565, PSP SDK + SGX patches)
  42. ----------------
  43. From := Angstrom
  44. UBOOT_URL := git://git.denx.de/u-boot.git
  45. UBOOT_BRANCH := ca6e1c136ddb720c3bb2cc043b99f7f06bc46c55
  46. With Patches := yes (angstrom: recipes/u-boot/uboot-git/beagleboard/*)
  47. Board rev reported := N/A
  48. Result := Locks up at "I2C: Ready"
  49. ----------------
  50. From := Angstrom
  51. UBOOT_URL := git://git.denx.de/u-boot.git
  52. UBOOT_BRANCH := ca6e1c136ddb720c3bb2cc043b99f7f06bc46c55
  53. With Patches := no
  54. Board rev reported := Board revision Ax/Bx
  55. Result := Builds okay, boots to login, but kernel log shows "omapfb: no displays found"
  56. (linux-omap-2.6.32, tmlind git, git id: 3fd5969a81a9324b58a1c19cf510c0da97c99565, PSP SDK + SGX patches)
  57. ----------------

With so many branches it's hard to know which one is the "stable" version for a given board (I have an Ax/Bx revision). I need to update this bug report to include the errors I got related to LEDs in a couple of these.

Actions #7

Updated by Hammel about 14 years ago

I wrote to the BeagleBoard mailing list last night asking if there are any recommended repositories/branches based on board revisions. As of now I've not gotten any responses.

Actions #8

Updated by Hammel about 14 years ago

Ah. Maybe it's a cross toolchain issue:

http://www.mail-archive.com/openembedded-devel@lists.openembedded.org/msg03334.html

BeagleBox is using 4.4.3. Crosstool-NG permits selection of 4.2.{4,2}.

There is a u-boot patch for this:
http://git.denx.de/?p=u-boot.git;a=commitdiff;h=f865fcbbb35851e75fee9c3a3fa8e0f71d9e6463#patch1

I applied a variation of this patch for the validation image uboot and it allowed it to compile. The patch is attached here and is valid for GCC 4.4.3. I'll test the binary later when I'm near the board.

Actions #9

Updated by Hammel about 14 years ago

Success, well, sort of. The bootloader boots just fine and I get color-bars on the TV while it is booting. Unfortunately, the kernel still reports that no displays are found. So there are still some kernel issues.

But it's a step closer.

Updates will be checked in tonight.

Actions #10

Updated by Hammel about 14 years ago

Various tests with 2.6.32, merging in (for example) the validation-20100805 config (which is based on 2.6.32) did not fix the problem. According to this from Robert Nelson:

http://groups.google.com/group/beagleboard/browse_thread/thread/d91a0dd290c7b44e/4180b0459df81d61?lnk=gst&q=robert+nelson#4180b0459df81d61

there is some support in 2.6.36 now too. The master branch for beagleboard-validation is only at 2.6.34. Angstrom has recipes/linux/linux-omap_2.6.36rc.bb with a few patches. I can try that one and fix up the patches I use. Looks like I'm going to have to hunt around for a kernel with proper support of DSS on a C4 board.

Actions #11

Updated by Hammel almost 14 years ago

I rewrote the bootloader and kernel config handling in the build system so I could experiment with different repos. Once I did that, and verified the old repos I'd tested with previously were still working in the build, I added the repo for the OMAP DSS2 developer @ gitorious.org. Turns out this is the one that works with S-Video. With this kernel (and I'm using the Master branch of this repo) I have color output on the TV, including a colored version of Tux.

The display is not ideal, however. Overscan is bad so I can't see the login prompt on the TV. Also there is a bunch of flicker when using the "ntsc" mode for the tv display setting. If I change this to something the display system doesn't like (an invalid mode) it defaults to PAL settings. In that case I lose the color and overscan is worse, but the flicker is completely gone.

So I have some fine tuning to do but at least the display is working. I'd like to get a video running to see it display full screen and then hook up the DVI and see how that compares. But I'm not there yet. Plenty left to do before I get there.

FYI: The git repo that is now the default for the kernel is git://gitorious.org/linux-omap-dss2/linux.git. The denx.de repo mainline is the default for u-boot. That's the combination I'm going forward with for now.

Actions

Also available in: Atom PDF