July 5, 2012
February 2, 2012
The Linux Kernel Makefile.in
OpenSS7, one of my favorite projects, succeed to make fully blown LKM compilation.
After some experiments fail miserable...
My KISS style LKM inside Atoconf based on faking Makefile.in
OpenSS7 macro to find kernel
acinclude.in per module macro
Fake Makefile.in
After some experiments fail miserable...
My KISS style LKM inside Atoconf based on faking Makefile.in
OpenSS7 macro to find kernel
# =========================================================================
# _LINUX_KERNEL
# -------------------------------------------------------------------------
# The linux kernel build directory is the build kernel tree root against which
# kernel modules will be compiled.
# -------------------------------------------------------------------------
AC_DEFUN([_LINUX_KERNEL], [dnl
AC_CACHE_CHECK([for kernel build directory], [linux_cv_kernel_build], [dnl
AC_MSG_RESULT([searching...])
AC_ARG_WITH([kernel-build],
AS_HELP_STRING([--with-kernel-build=DIR],
[specify the base kernel build directory in which configured
kernel source resides.]),
[with_kernel_build="$withval"],
[with_kernel_build=])
if test :"${with_kernel_build:-no}" != :no
then
linux_cv_kernel_build="$with_kernel_build"
fi
if test :"${linux_cv_kernel_build:-no}" = :no -o ! -d "$linux_cv_kernel_build"
then
if test :"${linux_cv_kernel_build:-no}" = :no
then
AC_MSG_ERROR([
***
*** This package does not support headless kernel build. Install the
*** appropriate built kernel-source and kernel-headers package for the
*** target kernel and then configure again.
***
*** The following directories do no exist in the build environment:
*** "$with_kernel_build"
***
*** ])
fi
fi
AC_MSG_CHECKING([for kernel build directory]) ])
kbuilddir="$linux_cv_kernel_build"
AC_SUBST([kbuilddir])dnl
])# LINUX_KERNEL
acinclude.in per module macro
# =============================================================================
# _MODEM_SETUP_MODULES
# -----------------------------------------------------------------------------
AC_DEFUN([_MODEM_SETUP_MODULES], [dnl
AC_ARG_ENABLE([module-lte-sched],
AS_HELP_STRING([--enable-module-lte-sched],
[enable module lte_sched for linkage with MODEM.
@<:@default=module@:>@]),
[enable_module_lte_sched="$enableval"],
[if test :${modem_big_compile:-yes} = :yes ; then enable_module_lte_sched='yes' ; else enable_module_lte_sched='module' ; fi])
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED], [test :${modem_cv_module_lte_sched:-module} = :yes])
# -----------------------------------------------------------------------------
AC_CACHE_CHECK([for MODEM module lte_sched], [modem_cv_module_lte_sched], [dnl
modem_cv_module_lte_sched="${enable_module_lte_sched:-module}"
if test :$modem_cv_module_lte_sched = :module -a :${linux_cv_k_linkage:-loadable} = :linkable ; then
modem_cv_module_lte_sched='yes'
fi])
# -----------------------------------------------------------------------------
case ${modem_cv_module_lte_sched:-module} in
(yes)
AC_DEFINE_UNQUOTED([CONFIG_MODEM_LTE_SCHED], [1], [When defined,] AC_PACKAGE_TITLE [
will include the lte_sched module for linkage with MODEM. When undefined,]
AC_PACKAGE_TITLE [will not include the lte_sched module for linkage with MODEM.])
;;
(module)
AC_DEFINE_UNQUOTED([CONFIG_MODEM_LTE_SCHED_MODULE], [1], [When defined,]
AC_PACKAGE_TITLE [will include the lte_sched module as a standalone loadable kernel module. When
undefined,] AC_PACKAGE_TITLE [will not include the lte_sched module as a standalone loadable kernel
module.])
;;
esac
# -----------------------------------------------------------------------------
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED], [test :${modem_cv_module_lte_sched:-module} = :yes])
AM_CONDITIONAL([CONFIG_MODEM_LTE_SCHED_MODULE], [test :${modem_cv_module_lte_sched:-module} = :module])
])# _MODEM_SETUP_MODULES
Fake Makefile.in
target_alias = @target_alias@
target_cpu = @target_cpu@
prefix = @prefix@
KERNEL_ROOT=@kbuilddir@
TARGETDIR=$(prefix)/firmware
ifneq ($(KERNELRELEASE),)
ifdef V
KBUILD_VERBOSE = $(V)
endif
EXTRA_CFLAGS += -I$(src)
EXTRA_CFLAGS +=
@CONFIG_LTE_SCHED_MODULE_TRUE@lte_sched.c: lte_sched.h
@CONFIG_LTE_SCHED_MODULE_TRUE@obj-m += lte_sched.o
#sched_csap-y := sched_csap.o
else
all: modules
modules:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=1 -C $(KERNEL_ROOT) M=`pwd` modules
clean:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=0 -C $(KERNEL_ROOT) M=`pwd` clean
install:
echo "Making $@ in `pwd`"
ARCH=$(target_cpu) CROSS_COMPILE="$(target_alias)-" \
$(MAKE) V=1 -C $(KERNEL_ROOT) M=`pwd` INSTALL_MOD_PATH=$(TARGETDIR) modules_install
endif
January 22, 2012
EmacsWiki: Fly Make for ATS
EmacsWiki: Fly Make:
'via Blog this'
Following is the ATS aka Applied Type System initialization code in Emacs lisp.
'via Blog this'
Following is the ATS aka Applied Type System initialization code in Emacs lisp.
; ats
(defun flymake-ats-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "atscc" (list "-tc " local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.\\(d\\|s\\)ats\\'" flymake-ats-init))
(push
'("\\(syntax error: \\)?\\([^\n:]*\\): \\[?[0-9]*(line=\\([0-9]*\\), offs=\\([0-9]*\\))\\]?\\(.*\\)?"
2 3 4 5) flymake-err-line-patterns)
January 5, 2012
LOAD K MODULE SYMBOL TABLE INTO DEBUGGER
Hi,
scd /sys/module/chra read write/sections
cat .bss .data .text
0xf8e1e830
0xf8e1e6f4
0xf8e1e000
(gdb) add-symbol-file /home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko 0xf8e1e000 -s .data 0xf8e1e6f4 -s .bss 0xf8e1e830
add symbol table from file "/home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko" at
.text_addr = 0xf8e1e000
.data_addr = 0xf8e1e6f4
.bss_addr = 0xf8e1e830
(y or n) y
Reading symbols from /home/nkhare/Training/LinuxKernel/oops/char-dev-read-write-oop/char-read-write.ko...done.
(gdb) p mycdrv1_read
\$1 = {ssize_t (struct file *, char *, size_t, loff_t *)} 0xf8e1e000
(gdb) list mycdrv1_read
January 4, 2012
Versatile Platform Baseboards - QEMU
Versatile Platform Baseboards - ARM:
'via Blog this'
Hi,
'via Blog this'
Hi,
1. NETWORK
sudo tunctl -u $USER -t tap1
ifconfig tap1 192.168.0.1
sudo /usr/sbin/dhcpd -d -cf ./dhcp.conf tap1
default-lease-time 6000;
max-lease-time 72000;
option domain-name-servers 192.168.0.1;
option routers 192.168.0.1;
server-name "192.168.0.1";
ddns-update-style none;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.254;
}
2. UML
pkill -SIGUSR1 -o linux-2.6.24-rc7
./kernel32-3.1.5 ubda=./Debian-Squeeze-x86-root_fs
eth0=tuntap,tap1,fe:f0:00:00:00:01,192.168.1.254 con0=fd:0,fd:1
3. QEMU
u-boot-2010.09/
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- versatilepb_config
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
qemu-system-arm -M versatilepb -nographic -kernel u-boot
qemu-system-arm -M versatilepb -nographic -kernel u-boot -s -S
qemu-system-arm -kernel zImage.integrator -initrd arm_root.img -net nic -net tap,ifname=tap0,script=no
4. LINUX
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- versatile_defconfig -s
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage -s
qemu-system-arm -M versatilepb -nographic -kernel u-boot-2010.09/u-boot -net nic -net tap,ifname=tap1,script=no
5. U-BOOT
VersatilePB # sete ipaddr 192.168.0.2
VersatilePB # sete serverip 192.168.0.1
VersatilePB # sete bootfile linux-2.6.37.4.uImage
VersatilePB # tftpboot
$ dd if=/dev/zero of=flash.img bs=1M count=64
$ dd if=u-boot.bin of=flash.img conv=notrunc
$ qemu-system-arm -M versatilepb -nographic -pflash flash.img
VersatilePB # sete ipaddr 192.168.0.2
VersatilePB # sete serverip 192.168.0.1
VersatilePB # sete bootfile linux-2.6.37.4.uImage
VersatilePB # printenv
6. EVM
Linux T4000 2.6.37.4 #3 Fri Dec 23 13:54:46 EET 2011 armv5tejl GNU/Linux
T4000:~#
root=/dev/nfs rw nfsroot=135.243.22.64:/opt/rfs mem=256M earlycon=uart8250,mmio,0xfe090000,115200 console=ttyS0,115200n8 ip=135.243.22.59:::135.243.22.254:255.255.255.254::: hwaddress=eth1,00:02:F7:00:19:19 nol2x0 nopcie noswap
qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd rootfs -append "root=/dev/nfs rw nfsroot=135.243.22.63:/opt/rfs console=ttyAMA0 console=ttyS0 noswap ip=192.168.0.2::192.168.0.1:255.255.255.0:::" -nographic -net nic -net tap,ifname=tap1,script=no
7. HDA
qemu-system-arm -M versatilepb -cpu cortex-a8 -kernel ./vmlinuz -hda arm-rootfs.img -m 256 -append "root=/dev/sda mem=256M devtmpfs.mount=0 rw"
8. BB
qemu-system-arm -M versatilepb -m 128M -kernel zImage -initrd /udir/vkinzers/repos/openLRT/qemu/rootfs.bb.img -append "root=/dev/ram rdinit=/bin/sh console=ttyAMA0 console=ttyS0 ip=192.168.0.2::192.168.0.255:255.255.255.0:::" -nographic -net nic -net tap,ifname=tap1,script=no
tar xjvf busybox-1.19.3.tar.bz2
722 cd busybox-1.19.3/
723 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- defconfig
724 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig
725 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- install
726 ls -R _install/
727 cd _install find . | cpio -o --format=newc > ../rootfs.bb.img
Subscribe to:
Posts (Atom)