Linux kernel start up and debugging

Slightly off-topic, but linux is stil a unixoid operating system. And every hint on system startup and debugging is valuable.

https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_anderson.pdf

Seems like running OpenOCD and Turtelizer2 JTAG dongle with NanosG20 will be necesssary. AT91SAM9G20 support should be available, I hope.

Other points are:

  • Use QEMU/VirtualBox + GDB to observe startup behaviour of FreeBSD
  • Remember, nobody forbids looking at certain portions of Linux/NetBSD/OpenBSD kernel sources
  • OpenBSD and NetBSD are also a source of knowledge
  • Take a look at Atmel startup code
  • Make a table of prio 1 peripherials used by the kernel
  • Prioritize other peripherials

So, in summary I will use NanosG20 hardware, U-boot for PortuxG20 and FreeBSD kernel (no idea what is implemented at the moment)

NanosG20 FreeBSD

I would be glad to see FreeBSD running on NanosG20. Since I have no idea how to do that, I need  to investigate. One way would be finding a posibility to run u-boot for AT91SAM9G20 out of the NanosG20 2nd Stage Bootloader (stripped linux kernel). But another solution does exist:

http://www.armbedded.eu/node/445

It is a transplantation of PortuxG20 u-boot into NanosG20.

If this will work, next step would be flashing AT91SAM9G20 u-boot with FreeBSD booting support. And last but not least a working AT91SAM9G20 kernel must be available.

Another help:

Similar processor:

http://www.hytherion.com/beattidp/comput/armbsd/freebsd-on-at91sam9260ek.html

http://wiki.freebsd.org/FreeBSDAtmel

Comparison of linux and bsd kernel startup sequence:

http://cisr.nps.edu/downloads/papers/05paper_linux.pdf

BSD kernel structure:

http://www.atmnis.com/~proger/openkyiv/openkyiv2009_proger_sys.pdf

 

I am stuck with modifying kernel and building console-image. It does work only once after removing  all tmp’s and deploy”s  since afterwards console-image recipe uses wrong outdated shared cache files. Manually configuring kernel via menuconfig and subsequent deploy via bitbake -c deploy virtual/kernel is always succesful.

———————————————————————————————————————————————

The undocumented tasks of OE-core bitbake :

  • cleanall
  • cleansstate

They appear to solve my problems. Clean is not sufficient.

———————————————————————————————————————————————

Migrating Ångström framework (Bitbake/Poky/OpenEmbedded issues)

Last week I had to use my wife’s powerful laptop. Since downloaded sources take approx. 13 GB, starting from scratch would be not especially efficient. So I had to copy the stuff and met some problems. Of course, it was up to absolute paths contained in configuration files and created temporary data. Following points are important:

  • delete old .oe directory from your home directory if there was one before
  • change saved_tempdir file in ../angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc as there is a absolute path to the original temporary directory in it (do simple `pwd` > saved_tempdir)
  • delete content of ../angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc, leave only saved_tempdir file in it
  • delete site.conf and sanity-info files contained in ../angstrom/setup-scripts/conf, they are being created while running MACHINE=beagleboard ./oebb.sh config beagleboard
  • sometimes, but do not ask why, sanity.conf contained in ../angstrom/setup-scripts/sources/openembedded-core/meta/conf must be touched. Rules for this behavior remain unknown.

This instruction sounds to be simple and short, but discovering it took quite a while. I hope it will help you !

—————————————————————————————————————————————————————

Another bad thing found is u-boot recipe error, deployment is done only once, after building for first time. The only method to do it again is running following commands with –force option:

bitbake -f -c clean u-boot

and consecutive

bitbake -f -c deploy u-boot

Only this combo works! bitbake u-boot doesn’t – copying from staging area fails, although logfile comment remarks an attempt to do that!

—————————————————————————————————————————————————————