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

891

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