Since I'm new to this forum a big "Hello everyone!" is in order.
Recently I bought myself a BeagleBone and a cape from Chipsee with 7in LCD and resistive touch (plus DVI output and audio support). Provided Angstrom image works fine. So do TI's Linux image and Android 4.0 image which came with the board. Since I'm new to Linux I decided that the best way to learn was to get down and dirty and build a custom kernel + file system to work with my new toy.
I downloaded the latest Linux kernel source (3.6.6) and Linaro's Linux tool-chain for ARMs. With the source downloaded and a bit of tinkering inside make menuconfig
I now have my first image. I thought it would be as simple as substituting the uImage in the boot directory of Angstrom on the SD card with my new one (to at least get a boot-up penguin on my screen or at least some kernel booting messages over UART debug). At the same time I thought it just can't be that easy and I was right. I get the familiar Starting kernel ... hang. And for the life of me I can not set kernel's debugging port correctly to see what is going wrong. Here is what I did:
- Get linux 3.6.6 source (and put it in its own folder in my home folder) and gcc-arm-linux-gnueabi
- Go into downloaded source folder
- make clean
- make ARCH=arm omap2plus_defconfig
- make ARCH=arm menuconfig (changes I made are described below)
- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- uImage
- I then placed this newly created uImage in place of the old one on Angstrom SD card which came with the BeagleBone
- I added "console=ttyO0,115200n8" to uEnv.txt so that it now contains two lines. The other is "optargs=run_hardware_tests quiet" (all without quotation marks) I also tried console=ttyO2,115200n8 as per BeagleBoard.orf's faq page but that didn't work either
- As I already mentioned, after placing the card into the board and booting I get the known Starting kernel ... hang (so U-Boot does it's thing but Linux kernel does not load)
Changes to .config (using menuconfig):
- enable da8xx-fb as described here: http://processors.wiki.ti.com/index.php/AM335x_LCD_Controller_Driver%27s_Guide (driver compiled into kernel)
- enable ethernet interface as described here: http://processors.wiki.ti.com/index.php/AM335x_CPSW_%28Ethernet%29_Driver%27s_Guide (driver compiled into kernel)
- "Compile the kernel with Debug Info" (CONFIG_DEBUG_INFO)
- "Kernel low-level debugging functions" (CONFIG_DEBUG_LL) and further "Kernel low-level debugging port - No low-level debugging UART". Here Only the following was available: No low-level debugging UART, Kernel low-level debugging via EmbeddedICE DCC channel and Kernel low-level debug output via semihosting I/O. I am pretty sure that last two are not applicable so I chose the first hoping that the uEnv.txt line "console=ttyO0,115200n8" would configure the proper port for UART debugging.
I found the "console=ttyO0,115200n8" line for uEnv.txt on the internet somewhere so I am not the least sure it is correct.
Based on the description I gave I would like to kindly ask for some help in answering below questions:
1) First, was it OK for me to base the kernel image off of omap2plus_defconfig ? I could not find a clear explanation about this when Googling so I am still in the dark whether Sitara and OMAP are code compatible, so to speak? What exactly is the difference between the two families? Is it just performance in terms of higher frequency and so on or are there any other differences which may cause trouble if building Linux kernel for OMAPs? Also, which OMAP should I chose? 1,2,3,... ?
2) What am I doing wrong that I am not getting any debug info over UART when the kernel starts booting? I have a feeling I am not setting the port correctly. Does anyone know how to set it or where I could find this out? Perhaps from the working images that came with the board? I read this:
http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_Linux
but when searching in menuconfig I can not find CONFIG_OMAP_LL_DEBUG_UART3. When Googling this I discovered that this option is only found in Linux kernels 2.6.6–2.6.12.
3) I am using the filesystem which came with the board (Angstrom distro). Is simply replacing the kernel while leaving the file system as it is likely to cause any errors? Could this be causing the kernel to not boot? And if it is, should I at least see some activity on the debug lines and perhaps a boot up penguin on the LCD?
4) If anyone has the will and some time to spare I would appreciate any comments on the attached configuration file I used for building the Linux Kernel. I would be especially grateful for any comments on the two changes I made and those are adding da8cc-fb driver and ethernet drivers (described above). I am not sure whether I am allowed to attach Chipsee's schematics of their 7in LCD cape or not. But the LCD is connected to AM3359's LCD pins directly so its internal LCD controller should be able to drive the LCD.
5) This is moving ahead a bit but my next step will be to get the touch-screen controller working. Any tips on how to achieve that?
My first post and already so long. :) I hope it will not discourage anyone from reading it.
Thanks in advance for al your help.
Cheers!