Sign inSign up

aispro/kernel_dev2

By aispro

Updated over 5 years ago

arm-src-kernel 3.14.29 + toolchain (used in AIS gates DEV1, DEV-BT, DEV2)

Image
0

850

aispro/kernel_dev2 repository overview

1. run this container

docker pull  aispro/kernel_dev2
docker run -it aispro/kernel_dev2

bash on runing container

docker exec -it aispro/kernel_dev2 /bin/bash

2. get your kernel config

you can back it up from a terminal/shell on the iot gate

su
dd if=/dev/block/boot of=/sdcard/boot-mmcblk0p12.bin

copy the /sdcard/boot-mmcblk0p12.bin file to your linux box.

use commands split_bootimg.pl boot-mmcblk0p12.bin to extract kernel & ramdisk

chmod +x split_bootimg.pl
split_bootimg.pl 

copy the boot-mmcblk0p12.bin-kernel back to container via docker cp

docker cp boot-mmcblk0p12.bin-kernel <container-id>:/home

use this script in docker container to extract config

cd /home
sh /home/arm-src-kernel-2015-11-04-9e845bea41/scripts/extract-ikconfig boot-mmcblk0p12.bin-kernel > config.txt

3. check config is ok

cp -a config.txt /home/arm-src-kernel-2015-11-04-9e845bea41/arch/arm64/configs/dev1_defconfig

ARCH=arm64 CROSS_COMPILE=/opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- make dev1_defconfig

output:

root@272fbd04423d:/home/arm-src-kernel-2015-11-04-9e845bea41# make ARCH=arm64 dev1_defconfig
#
# configuration written to .config
#

4. select driver to compile as kernel module

ARCH=arm64 CROSS_COMPILE=/opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- make menuconfig

Navigate to Device Drivers -> USB Support -> USB Serial Converter Support

Select it as a Module hitting the “M” key so that it reads “”.

or do this selection by hand in .config file

Make changes and save config as .config

5. Build selected drivers

ARCH=arm64 CROSS_COMPILE=/opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- make -j8 modules

output:

   ...
  LD [M]  drivers/media/usb/gspca/gspca_main.ko
  LD [M]  drivers/usb/dwc3/dwc3-exynos.ko
  LD [M]  drivers/usb/dwc3/dwc3-keystone.ko
  LD [M]  drivers/usb/dwc3/dwc3.ko
  LD [M]  drivers/usb/serial/ch341.ko
  LD [M]  drivers/usb/serial/cp210x.ko
  LD [M]  drivers/amlogic/usb/dwc_otg/310/dwc_otg.ko
  LD [M]  drivers/usb/serial/ftdi_sio.ko
  LD [M]  net/mac80211/mac80211.ko
  LD [M]  drivers/usb/serial/pl2303.ko
  LD [M]  drivers/usb/serial/usb-serial-simple.ko
  LD [M]  net/wireless/cfg80211.ko


install driver on box

mount -o rw,remount /system
cd /system/lib/ 
insmod cp210x.ko

6. Build kernel

ARCH=arm64 CROSS_COMPILE=/opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- make meson64_defconfig
ARCH=arm64 CROSS_COMPILE=/opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- make menuconfig
ARCH=arm64 CROSS_COMPILE=/opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu- make -j8

oputput:

...
  LD      vmlinux
  SORTEX  vmlinux
  SYSMAP  System.map
  OBJCOPY arch/arm64/boot/Image
  OBJCOPY arch/arm64/boot/Image
  Building modules, stage 2.
  MODPOST 7 modules
  GZIP    arch/arm64/boot/Image.gz
  LZO     arch/arm64/boot/Image.lzo
  CC      drivers/usb/serial/ch341.mod.o
  CC      drivers/usb/serial/cp210x.mod.o
  CC      drivers/usb/serial/ftdi_sio.mod.o
  CC      drivers/usb/serial/pl2303.mod.o
  CC      drivers/usb/serial/usb-serial-simple.mod.o
  LD [M]  drivers/usb/serial/ch341.ko
  LD [M]  drivers/usb/serial/cp210x.ko
  LD [M]  drivers/usb/serial/pl2303.ko

Be careful :

  • copy Image.lzo to boot partition as zImage - Don't rename the files in boot.img!
  • edit the bootimg.cfg file in boot to replicate the kernel change in size
  • connect via uart-ttl(rx/tx/gnd 115200) to board, to watch the booting logs
  • try to boot the device

how this image was built:

docker run -it ubuntu:trusty /bin/bash

sudo apt -y install gcc-aarch64-linux-gnu libc6-dev gcc g++ make dpkg-dev ncurses-dev lzop wget bc wget bc

wget http://openlinux2.amlogic.com:8000/download/ARM/kernel/arm-src-kernel-2015-11-04-9e845bea41.tar.gz

tar xvf arm-src-kernel-2015-11-04-9e845bea41.tar.gz

cd arm-src-kernel-2015-11-04-9e845bea41

mkdir -p .git/hooks

install toolchain

mkdir -p /opt/toolchains

wget https://releases.linaro.org/archive/14.09/components/toolchain/binaries/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.bz2 tar -xjf gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux.tar.bz2 -C /opt/toolchains

wget https://releases.linaro.org/archive/14.09/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz tar xvJf gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux.tar.xz -C /opt/toolchains

apt install agcc-multilib lib32stdc++6 lib32z1

export PATH=$PATH:/opt/toolchains/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin

Tag summary

Content type

Image

Digest

Size

1.8 GB

Last updated

over 5 years ago

docker pull aispro/kernel_dev2