FAQ for DaVinci Linux

From Texas Instruments Embedded Processors Wiki

Jump to: navigation, search
Translate this page to   

This is a collection of DaVinci open source Linux frequently asked questions (FAQ). They are mainly collected from DaVinci open source mailing list.

Contents

No kernel output after U-Boot load

Q: I compiled (new) kernel and started it by (new) U-Boot on a (new) board and I get no output after U-Boot copied the kernel to RAM and jumped to it:

## Booting image at 83000000 ...
   Image Name:   Linux-2.6.23-rc3-davinci1
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1434276 Bytes =  1.4 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK

Starting kernel ...

<nothing, no output>

A: The kernel uncompression code is probably not writing to your serial port. Edit arch/arm/mach-davinci/include/mach/uncompress.h to refer to your UART instead of UART2 (the default).

No output after uncompressing kernel

Q: I get past the kernel uncompressing part but I still get no output after that:

## Booting image at 83000000 ...
   Image Name:   Linux-2.6.23-rc3-davinci1
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1434276 Bytes =  1.4 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing
Linux.............................................................
................................. done, booting the kernel.

<nothing, no output>

A: Enable

Kernel hacking -> Kernel debugging -> Kernel low-level debugging functions

in Kernel configuration. Drop a printascii() in printk() and see where it hangs.

Enable debug output without kernel recompile

Q: I want to enable kernel debugging, but I don't want (I'm not able) to recompile the kernel. Is there an other way to enable kernel low level debugging output?

A: Instead of above Kernel hacking -> Kernel debugging -> Kernel low-level debugging functions you can try to reconfigure serial console at kernel command line. If you use e.g. U-Boot to pass kernel parameters, you can try to replace

... console=/dev/ttyS0,115200n8 ...

with

... console=uart,io,0xe1020000,115200n8 ...

Note: Once the kernel boots fine, you must change the console definition back to the standard value, otherwise the kernel will have a conflict when reserving the memory location again for the ttyS0.

Error a

Q: I enabled low-level debugging function like described above and then get

Linux.............................................................
................................. done, booting the kernel.

Error a

A: "a" stands for "architecture". This means that U-Boot passes the wrong architecture machine number in processor register r1 to kernel. U-Boot and Kernel machine numbers don't match. For possible solutions see below.

Wrong machine number I

Q: My (old/new) U-Boot doesn't start my (new/old) Linux kernel correctly, because the machine number passed by U-Boot to the kernel don't match kernels one.

A: Correct your U-Boot and/or Linux kernel to use matching machine numbers.

Wrong machine number II

Q: My (old/new) U-Boot doesn't start my (new/old) Linux kernel correctly, because the machine numbers don't match. I don't want to correct machine numbers. What else can I do?

A: Try hackish patch to disable machine number in kernel.

Machine numbers

Q: What are these machine numbers this FAQ talks about above?

A: See Machine numbers and machine number registry. Machine number is compiled into U-Boot and passed by register to Linux kernel. Linux kernel has machine number compiled in as well. Both machine numbers have to match, else kernel won't boot.

Build Instructions for U-boot

Q:How do I build U-Boot for DaVinci technology-based processors?

A:If you do not already have the u-boot source code, you can get it from our DaVinci Software Update Site available to registered DVEVM users.

https://www-a.ti.com/extranet/cm/product/dvevmsw/dspswext/general/homepage.shtml

Please make sure you have the version of u-boot source code that corresponds to the version of the DVEVM software release you are working with. Once you have the u-boot source code on your Linux host work-station, you can go to the top level directory in the u-boot source tree and execute the following three commands to build u-boot for DVEVM.

host % make mrproper

host % make davinci_config

host % make


The ‘make mrproper’ command is analogous to ‘make clean’ command; the ‘make davinci_config’ command sets up the necessary environment for u-boot to be built for DVEVM platform; finally, the ‘make’ command builds u-boot.



Q: How do I build NAND version of U-Boot for DaVinci™ technology-based processors?

A: Building NAND version of u-boot is very similar to building NOR (default) version of u-boot, except for one main difference. The main difference is that before you build NAND version of u-boot, you must edit:

$(UBOOT_ROOT_DIR)/include/configs/davinci.h

File and comment out the following line near the top of this file:

  1. define CFG_ENV_IS_IN_FLASH 1

This single line (uncommented by default) is what controls whether NOR or NAND version of u-boot gets built. After this, the process to build u-boot is the same; mainly, go to the top level root directory of the u-boot source tree and execute the following commands.

host % make mrproper

host % make davinci_config

host % make

Configuring more than 2 McASP serializers for Receive/Transmit

Multi-serializer mode is not supported Out of the box. Following modifications to the source code are required for it to work:

Leave a Comment
Personal tools
Namespaces
Variants
Actions
Navigation
Print/export
Toolbox