Beaglebone kernel source and building kernel modules

I am trying to build a kernel module to test the GPIO toggle rate
using https://github.com/scottellis/overo-irqlat (0) as a template for
my design.

Over the past few days I have been attempting to get the kernel
sources for the beaglebone so that I may successfully build the kernel
module. I follow the steps at the end of this:
http://angstrom.s3.amazonaws.com/demo/beaglebone/index.html (1)

after trying to find the kernel source in the resulting files I found
this thread:
https://groups.google.com/group/beagleboard/msg/0898a8e9ce5af510 (2)

which suggests I comment out a line in the openembedded bitbake shell
script to preserve the kernel sources. At this point the oebb.sh
script always stalls when downloading the kernel. Following is the
output after a keyboard interrupt.

Waiting for 1 active tasks to finish:
0: linux-ti33x-psp-3.1-r2g
+gitr1d84d8853fa30cf3db2571a5aec572accca4e29d do_fetch (pid 24063)

When I remove all of the directories pertaining to the openembedded
build i.e. rm -R setup-scripts/ and follow the steps in link (1)
without modifying the scripts in any way the build still fails at the
same point.

Any ideas? Maybe some sort of verbose mode?

Stall or just taking a long time?

Stall it seems, I have ran it once successfully and it only took overnight, I have run this multiple times and it does absolutely nothing for over 24 HR after it gets stuck on the do_fetch of the kernel. No network activity, no heavy processor load, no nothing.

I've been tryin to build a driver for a USB wireless adapter and
eventually was able to build a kernel module on the BeagleBone. See
the path to building a module here:

http://groups.google.com/group/beagleboard/browse_thread/thread/38bc72ddf999426d

Basically build the SD card image and the source is available to be
copied.

Jerrill

I have more information that may be of use.
I built a clean Ubuntu 11.10 server i386 virtual machine to use to run
the bitbake process.
I should note that the virtual machine has only been used to build the
beaglebone image.
After downloading the requisite packages to build the image I follow
the steps at the end of this:
http://angstrom.s3.amazonaws.com/demo/beaglebone/index.html (1)

After running the process through the night I came back and found an
error and that the kernel package still was stalling. The Error was
for the bluez-4.96.tar.gz packege. The debug output said it failed
with signal 4 and failded with exit code 1.

Bitbake then reports that it is "Waiting for 1 active tasks to finish:
0: linux-ti33x-psp-3.1-r2g+gitr.... do_fetch (pid xxx)"

Any thoughts? I am not sure if I logged this run's output to a file,
If I did I will try and post it here, if not I will roll back the
virtual machine and restart the process and post results when it
finishes.

Here are the prerequisites that I had to install before I could build
the Angstrom SD card image on a fresh Ubuntu 11.10 machine:

Install Bitbake from the Ubuntu Software Center
sudo apt-get install build-essential
sudo apt-get install diffstat
sudo apt-get install texi2html
sudo apt-get install texinfo
sudo apt-get install gawk
sudo apt-get install chrpath
sudo apt-get install lzop

Buried in the error message is usually some dependency that the build
needs but is not handled by Bitbake and then you have to find the
package that contains it. All the errors I encountered were missing
dependencies.

I hope this helps.
Jerrill

I added all of the dependencies you list.

I made logs of running the first two bitbake commands:
./oebb.sh config beaglebone (1)
MACHINE=beaglebone ./oebb.sh bitbake systemd-image (2)

The config.log file corresponds to item (1)
The systemd.log file corresponds to item (2)

The logs are hosted here:
https://github.com/dogisfat/Beaglebone-Kernel-Compile

Jerrill,

Can you walk me thought the steps you went though to compile the kernel module on the beaglebone, I get an error saying:

make[1]: *** No rule to make target kernel/bounds.c', needed by kernel/bounds.s’. Stop.

just to build the kernel modules that come with the kernel, not even a custom kernel module.

Thanks

dogisfat,

I’m just now getting back to the BeagleBone kernel module work after a long delay. Here’s the complete process I used to cross-compile the Ralink RT5370 Driver on Ubuntu 11.10.

Install Bitbake from the Ubuntu Software Center

sudo apt-get install build-essential
sudo apt-get install diffstat
sudo apt-get install texi2html
sudo apt-get install texinfo
sudo apt-get install gawk
sudo apt-get install chrpath
sudo apt-get install lzop
sudo apt-get install python-psyco
mkdir angstrom
cd angstrom
git clone git://git.angstrom-distribution.org/setup-scripts
cd setup-scripts
git checkout origin/oe-core -b oe-core
./oebb.sh config beaglebone
MACHINE=beaglebone ./oebb.sh bitbake systemd-image
MACHINE=beaglebone ./oebb.sh bitbake virtual/kernel

Have you had any luck on your own GPIO kernel module project?

I’ve been working on my own hardware I want to connect to the BeagleBone, but the standard userland GPIO access is way too slow. I’m getting ready to start writing a kernel module to run the hardware and would love for you to share your experiences doing what sounds like the same sort of thing.

Thanks!
Jerrill

Jerrill,

I am attempting to duplicate your beaglebone kernel build from a virgin install of ubuntu 11.10. I have followed your steps (I added sudo apt-get install git), but run into an error. It looks like it can’t find the meta-smartphone repository. Any suggestions?

greg@linux:~/angstrom/setup-scripts$ MACHINE=beaglebone ./oebb.sh bitbake systemd-image
Configured layers:

layer repository name: bitbake
layer uri: git://github.com/openembedded/bitbake.git
layer branch/revision: master/HEAD
Updating layer at layers/bitbake
Current branch master is up to date.

Layers present in repository:

layer repository name: meta-angstrom
layer uri: git://git.angstrom-distribution.org/meta-angstrom
layer branch/revision: master/HEAD
Updating layer at layers/meta-angstrom
Current branch master is up to date.

Layers present in repository:
meta-angstrom

layer repository name: meta-openembedded
layer uri: git://github.com/openembedded/meta-oe.git
layer branch/revision: master/HEAD
Updating layer at layers/meta-openembedded
Current branch master is up to date.

Layers present in repository:
meta-openembedded/meta-efl
meta-openembedded/meta-xfce
meta-openembedded/meta-oe
meta-openembedded/meta-gnome
meta-openembedded/meta-multimedia
meta-openembedded/meta-gpe
meta-openembedded/toolchain-layer
meta-openembedded/meta-initramfs

layer repository name: meta-ti
layer uri: git://git.angstrom-distribution.org/meta-texasinstruments
layer branch/revision: master/HEAD
Updating layer at layers/meta-ti
Current branch master is up to date.

Layers present in repository:
meta-ti

layer repository name: meta-ettus
layer uri: git://github.com/balister/meta-ettus.git
layer branch/revision: master/HEAD
Updating layer at layers/meta-ettus
Current branch master is up to date.

Layers present in repository:
meta-ettus

layer repository name: meta-efikamx
layer uri: git://github.com/kraj/meta-efikamx.git
layer branch/revision: master/HEAD
Updating layer at layers/meta-efikamx
Current branch master is up to date.

Layers present in repository:
meta-efikamx

layer repository name: meta-nslu2
layer uri: git://github.com/kraj/meta-nslu2.git
layer branch/revision: master/HEAD
Updating layer at layers/meta-nslu2
Current branch master is up to date.

Layers present in repository:
meta-nslu2

layer repository name: meta-smartphone
layer uri: http://git.shr-project.org/repo/meta-smartphone.git
layer branch/revision: master/HEAD
Layer checkout missing at /home/greg/angstrom/setup-scripts/sources/meta-smartphone, creating one
Cloning into /home/greg/angstrom/setup-scripts/sources/meta-smartphone…
error: Unable to get pack file http://git.shr-project.org/repo/meta-smartphone.git/objects/pack/pack-342051bcb82b3460b40eab0851835cc5a0e4cde7.pack
transfer closed with 2886419 bytes remaining to read
error: Unable to find 644d5a37bb01dabcb08902d20d7a39354bf6e339 under http://git.shr-project.org/repo/meta-smartphone.git
Cannot obtain needed object 644d5a37bb01dabcb08902d20d7a39354bf6e339
error: Fetch failed.
/home/greg/angstrom/setup-scripts/scripts/layerman: line 13: cd: /home/greg/angstrom/setup-scripts/sources/meta-smartphone: No such file or directory
Layers present in repository:
find: `/home/greg/angstrom/setup-scripts/sources/meta-smartphone’: No such file or directory

layer repository name: meta-intel
layer uri: git://git.yoctoproject.org/meta-intel
layer branch/revision: master/HEAD
Layer checkout missing at /home/greg/angstrom/setup-scripts/sources/meta-intel, creating one
Cloning into /home/greg/angstrom/setup-scripts/sources/meta-intel…
remote: Counting objects: 3294, done.
remote: Compressing objects: 100% (2684/2684), done.
remote: Total 3294 (delta 1654), reused 194 (delta 105)
Receiving objects: 100% (3294/3294), 1.76 MiB | 745 KiB/s, done.
Resolving deltas: 100% (1654/1654), done.
Layers present in repository:
meta-intel/meta-romley
meta-intel/meta-crownbay
meta-intel/meta-fishriver
meta-intel
meta-intel/meta-emenlow
meta-intel/meta-sys940x
meta-intel/meta-n450
meta-intel/meta-jasperforest
meta-intel/meta-fri2
meta-intel/meta-tlk
meta-intel/meta-sugarbay
meta-intel/meta-cedartrail

layer repository name: meta-xilinx
layer uri: git://git.yoctoproject.org/meta-xilinx
layer branch/revision: master/HEAD
Updating layer at layers/meta-xilinx
Current branch master is up to date.

Layers present in repository:
meta-xilinx

layer repository name: meta-openpandora
layer uri: git://github.com/openpandora/meta-openpandora.git
layer branch/revision: master/HEAD
Updating layer at layers/meta-openpandora
Current branch master is up to date.

Layers present in repository:
meta-openpandora

layer repository name: meta-handheld
layer uri: git://git.openembedded.org/meta-handheld
layer branch/revision: master/HEAD
Updating layer at layers/meta-handheld
Current branch master is up to date.

Layers present in repository:
meta-handheld

layer repository name: openembedded-core
layer uri: git://github.com/openembedded/oe-core.git
layer branch/revision: master/HEAD
Updating layer at layers/openembedded-core
Current branch master is up to date.

Layers present in repository:
openembedded-core/meta-hob
openembedded-core/meta
openembedded-core/meta-skeleton

Using /home/greg/.oe/environment-oecore to setup needed variables. It is recommended to do ‘. /home/greg/.oe/environment-oecore’ and run ‘bitbake something’ without using ./oebb.sh as wrapper
Executing: MACHINE=beaglebone bitbake systemd-image
Pseudo is not present but is required, building this first before the main build
DEBUG: Removed the following variables from the environment: OE_BUILD_DIR, DISTRO_DIRNAME, OE_SOURCE_DIR, GNOME_DESKTOP_SESSION_ID, LESSOPEN, GNOME_KEYRING_CONTROL, XDG_SESSION_PATH, DEFAULTS_PATH, SHLVL, MANDATORY_PATH, WINDOWID, BBFETCH2, OE_BASE, USERNAME, OE_BUILD_TMPDIR, XDG_SEAT_PATH, DBUS_STARTER_BUS_TYPE, XDG_CURRENT_DESKTOP, BUILDDIR, GDMSESSION, LESSCLOSE, GTK_MODULES, UBUNTU_MENUPROXY, OLDPWD, DBUS_STARTER_ADDRESS, SCRIPTS_BASE_VERSION, XDG_CONFIG_DIRS, LS_COLORS
DEBUG: Found bblayers.conf (/home/greg/angstrom/setup-scripts/conf/bblayers.conf)
DEBUG: LOAD /home/greg/angstrom/setup-scripts/conf/bblayers.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-angstrom
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-angstrom/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-oe
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-oe/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-efl
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-efl/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gpe
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gpe/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gnome
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gnome/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-xfce
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-xfce/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-ti
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-ti/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-ettus
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-ettus/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-efikamx
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-efikamx/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-nslu2
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-nslu2/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-htc
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-htc/conf/layer.conf
ERROR: Unable to parse /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-htc/conf/layer.conf: [Errno 2] No such file or directory: ‘/home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-htc/conf/layer.conf’
greg@linux:~/angstrom/setup-scripts$

Ted,

I’m in the process of building a new checkout of the git repository using this method right now. My build has made it past the point where yours stopped. Have you tried re-running it on a new checkout to see if the build stops at the same location?

Jerrill

Jerrill,

I have made it a bit further. I had to install Java 7. This is where I am now:

Using /home/greg/.oe/environment-oecore to setup needed variables. It is recommended to do ‘. /home/greg/.oe/environment-oecore’ and run ‘bitbake something’ without using ./oebb.sh as wrapper
Executing: MACHINE=beaglebone bitbake systemd-image
Pseudo is not present but is required, building this first before the main build
DEBUG: Removed the following variables from the environment: OE_SOURCE_DIR, OE_BUILD_DIR, DISTRO_DIRNAME, SHLVL, SUDO_USER, BBFETCH2, OE_BASE, USERNAME, SUDO_UID, OE_BUILD_TMPDIR, SUDO_COMMAND, SUDO_GID, BUILDDIR, OLDPWD, SCRIPTS_BASE_VERSION, MAIL, LS_COLORS
DEBUG: Found bblayers.conf (/home/greg/angstrom/setup-scripts/conf/bblayers.conf)
DEBUG: LOAD /home/greg/angstrom/setup-scripts/conf/bblayers.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-angstrom
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-angstrom/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-oe
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-oe/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-efl
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-efl/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gpe
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gpe/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gnome
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-gnome/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-xfce
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-openembedded/meta-xfce/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-ti
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-ti/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-ettus
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-ettus/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-efikamx
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-efikamx/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-nslu2
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-nslu2/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-htc
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-htc/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-nokia
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-nokia/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-openmoko
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-openmoko/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-palm
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-smartphone/meta-palm/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-sugarbay
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-sugarbay/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-crownbay
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-crownbay/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-emenlow
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-emenlow/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-fishriver
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-fishriver/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-jasperforest
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-jasperforest/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-n450
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/meta-intel/meta-n450/conf/layer.conf
DEBUG: Adding layer /home/greg/angstrom/setup-scripts/sources/openembedded-core/meta
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/openembedded-core/meta/conf/layer.conf
DEBUG: LOAD /home/greg/angstrom/setup-scripts/sources/openembedded-core/meta/conf/bitbake.conf
DEBUG: CONF conf/bitbake.conf:652: including conf/site.conf
DEBUG: LOAD /home/greg/angstrom/setup-scripts/conf/site.conf
DEBUG: CONF conf/bitbake.conf:653: including conf/auto.conf
DEBUG: LOAD /home/greg/angstrom/setup-scripts/conf/auto.conf
ERROR: Unable to parse conf/bitbake.conf: ParseError at /home/greg/angstrom/setup-scripts/conf/auto.conf:1: unparsed line: ‘MACHINE ?= beaglebone’
greg@linux:~/angstrom/setup-scripts$

Thanks, ted

Ted,

Try skipping the “MACHINE=beaglebone ./oebb.sh bitbake systemd-image” step. I think the next step is what builds the kernel source anyway.

I’m in the process of trying to build a Hello World kernel module ON the BeagleBone. I’m made it past building the Kernel headers… or so I thought. And have copied the files to the SD card.

The following are my notes:

reference: http://www.angstrom-distribution.org/building-angstrom

  1. clone the setup scripts as follows

git clone git://github.com/Angstrom-distribution/setup-scripts.git

  1. change to the new directory

cd setup-scripts

  1. run the following to download the kernel source

MACHINE=beagleboard ./oebb.sh config beagleboard

  1. run the following to update the downloaded source if needed

MACHINE=beagleboard ./oebb.sh update

  1. run the following to start the build

MACHINE=beagleboard ./oebb.sh bitbake virtual/kernel

  1. copy the source from:

/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel

to the following:

/media/Angstrom-Cloud9-/usr/src/linux-headers-3.2.5+

  1. on the beaglebone make the following symlinks

ln -s /usr/src/linux-headers-3.2.5+ /lib/modules/uname -r/build

  1. Reference tutorial:

http://tldp.org/LDP/lkmpg/2.4/html/book1.htm

Use the following modifications to the Makefile:

INCLUDE := -isystem /lib/modules/uname -r/build/include -isystem /lib/modules/uname -r/build/arch/arm/include -isystem /lib/modules/uname -r/build/arch/arm/mach-omap2/include -isystem /lib/modules/uname -r/build/arch/arm/plat-omap/include

Now, I’m running into the following:

In file included from /lib/modules/3.2.5+/build/include/linux/notifier.h:14:0,
from /lib/modules/3.2.5+/build/include/linux/memory_hotplug.h:6,
from /lib/modules/3.2.5+/build/include/linux/mmzone.h:657,
from /lib/modules/3.2.5+/build/include/linux/gfp.h:4,
from /lib/modules/3.2.5+/build/include/linux/kmod.h:22,
from /lib/modules/3.2.5+/build/include/linux/module.h:13,
from hello-1.c:13:
/lib/modules/3.2.5+/build/include/linux/rwsem.h: At top level:
/lib/modules/3.2.5+/build/include/linux/rwsem.h:41:23: fatal error: asm/rwsem.h: No such file or directory
compilation terminated.
make: *** [hello-1.o] Error 1

I’m not finding that file in any folder related to the Beaglebone and I haven’t learned how to build the proper kernel source tree so I don’t have to add all the extra include paths.

More news to follow. Open to suggestions if you have them.

Jerrill

Here’s the complete make output:

make: Warning: File Makefile' has modification time 4832 s in the future gcc -O2 -DMODULE -D__KERNEL__ -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /lib/modules/uname -r/build/include -isystem /lib/modules/uname -r/build/arch/arm/include -isystem /lib/modules/uname -r/build/arch/arm/mach-omap2/include -isystem /lib/modules/uname -r`/build/arch/arm/plat-omap/include -c -o hello-1.o hello-1.c
hello-1.c:9:0: warning: “MODULE” redefined
:0:0: note: this is the location of the previous definition
hello-1.c:11:0: warning: “KERNEL” redefined
:0:0: note: this is the location of the previous definition
In file included from /lib/modules/3.2.5+/build/arch/arm/include/asm/system.h:165:0,
from /lib/modules/3.2.5+/build/arch/arm/include/asm/bitops.h:27,
from /lib/modules/3.2.5+/build/include/linux/bitops.h:22,
from /lib/modules/3.2.5+/build/include/linux/kernel.h:17,
from /lib/modules/3.2.5+/build/include/linux/cache.h:4,
from /lib/modules/3.2.5+/build/include/linux/time.h:7,
from /lib/modules/3.2.5+/build/include/linux/stat.h:60,
from /lib/modules/3.2.5+/build/include/linux/module.h:10,
from hello-1.c:13:
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h: In function ‘virt_to_phys’:
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h:236:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h:236:1: note: each undeclared identifier is reported only once for each function it appears in
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h: In function ‘phys_to_virt’:
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h:241:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h: In function ‘virt_to_bus’:
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h:266:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h: In function ‘bus_to_virt’:
/lib/modules/3.2.5+/build/arch/arm/include/asm/memory.h:271:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
In file included from /lib/modules/3.2.5+/build/include/linux/time.h:9:0,
from /lib/modules/3.2.5+/build/include/linux/stat.h:60,
from /lib/modules/3.2.5+/build/include/linux/module.h:10,
from hello-1.c:13:
/lib/modules/3.2.5+/build/include/linux/math64.h: In function ‘div_u64_rem’:
/lib/modules/3.2.5+/build/include/linux/math64.h:51:15: error: ‘LINUX_ARM_ARCH’ undeclared (first use in this function)
In file included from /lib/modules/3.2.5+/build/include/linux/notifier.h:14:0,
from /lib/modules/3.2.5+/build/include/linux/memory_hotplug.h:6,
from /lib/modules/3.2.5+/build/include/linux/mmzone.h:657,
from /lib/modules/3.2.5+/build/include/linux/gfp.h:4,
from /lib/modules/3.2.5+/build/include/linux/kmod.h:22,
from /lib/modules/3.2.5+/build/include/linux/module.h:13,
from hello-1.c:13:
/lib/modules/3.2.5+/build/include/linux/rwsem.h: At top level:
/lib/modules/3.2.5+/build/include/linux/rwsem.h:41:23: fatal error: asm/rwsem.h: No such file or directory
compilation terminated.
make: *** [hello-1.o] Error 1

Jerrill

Ted, I’m running overnight to see what I get.

In the meantime… I though I would try to cross-compile a kernel module using ScratchBox2 on my Ubuntu machine and I end up with the same problem.

jerrill@JerrillUbuntuLT:~/projects/beaglebone/modules/tldb.org$ sb2 make
gcc-4.6 -O2 -DMODULE -D__KERNEL__ -W -Wall -Wstrict-prototypes -Wmissing-prototypes -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/mach-omap2/include -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/plat-omap/include -c -o hello-1.o hello-1.c
hello-1.c:9:0: warning: “MODULE” redefined [enabled by default]
:0:0: note: this is the location of the previous definition
hello-1.c:11:0: warning: “KERNEL” redefined [enabled by default]
:0:0: note: this is the location of the previous definition
In file included from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/system.h:165:0,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/bitops.h:27,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/bitops.h:22,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/kernel.h:17,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/cache.h:4,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/time.h:7,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/stat.h:60,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/module.h:10,
from hello-1.c:13:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h: In function ‘virt_to_phys’:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h:236:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h:236:1: note: each undeclared identifier is reported only once for each function it appears in
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h: In function ‘phys_to_virt’:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h:241:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h: In function ‘virt_to_bus’:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h:266:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h: In function ‘bus_to_virt’:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include/asm/memory.h:271:1: error: ‘CONFIG_DRAM_BASEUL’ undeclared (first use in this function)
In file included from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/time.h:9:0,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/stat.h:60,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/module.h:10,
from hello-1.c:13:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/math64.h: In function ‘div_u64_rem’:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/math64.h:51:15: error: ‘LINUX_ARM_ARCH’ undeclared (first use in this function)
In file included from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/notifier.h:14:0,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/memory_hotplug.h:6,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/mmzone.h:657,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/gfp.h:4,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/kmod.h:22,
from /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/module.h:13,
from hello-1.c:13:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/rwsem.h: At top level:
/home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include/linux/rwsem.h:41:23: fatal error: asm/rwsem.h: No such file or directory
compilation terminated.
make: *** [hello-1.o] Error 1
jerrill@JerrillUbuntuLT:~/projects/beaglebone/modules/tldb.org$

I modified the Makefile as follows:

INCLUDE := -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/include -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/include -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/mach-omap2/include -isystem /home/jerrill/projects/angstrom/setup-scripts/build/tmp-angstrom_2010_x-eglibc/sysroots/beagleboard/kernel/arch/arm/plat-omap/include

I guess it reassuring that I’m getting the same error both cross-compiling under Ubuntu and on the BeagleBone under Angstrom. It’s still frustrating as hell though. I know other people are compiling modules, but information is scarce. I would love to have a straightforward tutorial on how to do this.

Jerrill

Oops… I meant I’m running the following overnight to see what I get.

MACHINE=beaglebone ./oebb.sh bitbake systemd-image

Jerrill

Ted,

I had to run this multiple times and each time it made it a little further… and a little further… I don’t really know what was going on unless they were fixing things as I was trying to build.

Anyhow, I ultimately made it to an error I couldn’t make it past:

NOTE: package systemd-image-1.0-r0: task do_rootfs: Failed
ERROR: Task 8 (/home/jerrill/projects/angstrom/setup-scripts/sources/meta-angstrom/recipes-images/angstrom/systemd-image.bb, do_rootfs) failed with exit code ‘1’
NOTE: Tasks Summary: Attempted 3283 tasks of which 1502 didn’t need to be rerun and 1 failed.

Summary: 1 task failed:
/home/jerrill/projects/angstrom/setup-scripts/sources/meta-angstrom/recipes-images/angstrom/systemd-image.bb, do_rootfs
Summary: There were 71 WARNING messages shown.
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

I found the solution for this here:

https://groups.google.com/forum/?fromgroups#!topic/beagleboard/5ahVzjiWZSs

I added BUILDHISTORY_FEATURES="" to local.conf and the build was finally able to complete!

NOTE: Running task 3286 of 3286 (ID: 12, /home/jerrill/projects/angstrom/setup-scripts/sources/meta-angstrom/recipes-images/angstrom/systemd-image.bb, do_rm_work_all)
NOTE: package systemd-image-1.0-r0: task do_rm_work_all: Started
NOTE: package systemd-image-1.0-r0: task do_rm_work_all: Succeeded
NOTE: Tasks Summary: Attempted 3286 tasks of which 3244 didn’t need to be rerun and all succeeded.

So I think something has definitely been wrong with the build over the past few days. I would start at the update step and try it again. Let me know if you still have problems, and I’ll see if I can help.

Also, I think I told you wrong earlier. After this I now have a BeagleBone kernel source folder that I didn’t have before. I’ll try building my “Hello, world!” kernel module with the new headers this weekend and see if things go better.

Jerrill

Ooops! These should be:

MACHINE=beaglebone

not beagleboard… sorry for any confusion!

Jerrill