Compare commits

...

12 Commits

Author SHA1 Message Date
Oleg Kalachev
594733385f Add a TODO 2021-05-18 14:58:20 +03:00
Oleg Kalachev
b0ea2f9a96 Merge branch 'master' into clover-mini 2021-05-12 10:52:18 +03:00
Oleg Kalachev
bbb481522e Add calibration file for OV7251 2021-05-12 08:59:56 +03:00
Oleg Kalachev
52f4ac4bbd image: enable OV7251 camera on CAM0 on Compute Module 2021-05-12 08:55:09 +03:00
Oleg Kalachev
96eae2d50c image: build overlay for OV7251 camera on CAM0 2021-05-12 08:54:44 +03:00
Oleg Kalachev
d58d238ace builder: add image-hardware setup for building hardware drivers 2021-05-12 08:54:11 +03:00
Oleg Kalachev
f735d9276b builder: add a TODO 2021-04-27 23:07:10 +03:00
Oleg Kalachev
9a7928511a image: get kernel version from the fs for building rtl8812au 2021-04-08 04:07:51 +03:00
Oleg Kalachev
8ce700380c image: update Raspberry Pi OS to 2021-03-04 2021-04-08 02:12:16 +03:00
Oleg Kalachev
720b7d4274 image: add some todo 2021-04-02 18:58:36 +03:00
Oleg Kalachev
efaddd34c8 image: enable USB in Compute Module 4 2021-04-02 10:35:49 +03:00
Oleg Kalachev
5d29453ae0 image: build rtl8812au wi-fi driver 2021-04-02 02:31:34 +03:00
6 changed files with 176 additions and 3 deletions

View File

@@ -79,4 +79,14 @@ if ! grep -q "^bcm2835-v4l2" /etc/modules;
then printf "bcm2835-v4l2\n" >> /etc/modules then printf "bcm2835-v4l2\n" >> /etc/modules
fi fi
echo_stamp "#8 End of configure hardware interfaces" echo_stamp "#8 Check if Compute Module 4"
if grep -q "Compute Module 4" "/proc/device-tree/model"; then
echo_stamp "Enable USB on Compute Module 4"
echo "dtoverlay=dwc2,dr_mode=host" >> /boot/config.txt
echo_stamp "Enable OV7251 camera overlay"
echo "#dtoverlay=ov7251 # OV7251 camera on CAM1" >> /boot/config.txt
echo "dtoverlay=ov7251cam0 # OV7251 camera on CAM0" >> /boot/config.txt
fi
echo_stamp "#9 End of configure hardware interfaces"

View File

@@ -0,0 +1,111 @@
// SPDX-License-Identifier: GPL-2.0-only
// Definitions for OV7251 camera module on VC I2C bus
/dts-v1/;
/plugin/;
//#include <dt-bindings/gpio/gpio.h>
/{
compatible = "brcm,bcm2835";
fragment@0 {
target = <&i2c_vc>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
ov7251: ov7251@60 {
compatible = "ovti,ov7251";
reg = <0x60>;
status = "okay";
clocks = <&ov7251_clk>;
clock-names = "xclk";
clock-frequency = <24000000>;
vdddo-supply = <&ov7251_dovdd>;
vdda-supply = <&ov7251_avdd>;
vddd-supply = <&ov7251_dvdd>;
enable-gpios = <&gpio 41 0>;
port {
ov7251_0: endpoint {
remote-endpoint = <&csi0_ep>;
clock-lanes = <0>;
data-lanes = <1>;
clock-noncontinuous;
link-frequencies =
/bits/ 64 <456000000>;
};
};
};
};
};
fragment@1 {
target = <&csi0>;
__overlay__ {
status = "okay";
port {
csi0_ep: endpoint {
remote-endpoint = <&ov7251_0>;
data-lanes = <1>;
};
};
};
};
fragment@2 {
target = <&i2c0if>;
__overlay__ {
status = "okay";
};
};
fragment@3 {
target-path="/";
__overlay__ {
ov7251_avdd: fixedregulator@0 {
compatible = "regulator-fixed";
regulator-name = "ov7251_avdd";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
};
ov7251_dovdd: fixedregulator@1 {
compatible = "regulator-fixed";
regulator-name = "ov7251_dovdd";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
ov7251_dvdd: fixedregulator@2 {
compatible = "regulator-fixed";
regulator-name = "ov7251_dvdd";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
};
ov7251_clk: ov7251-clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
};
};
};
fragment@4 {
target = <&i2c0mux>;
__overlay__ {
status = "okay";
};
};
fragment@5 {
target-path="/__overrides__";
__overlay__ {
cam0-pwdn-ctrl = <&ov7251>,"enable-gpios:0";
cam0-pwdn = <&ov7251>,"enable-gpios:4";
};
};
};

View File

@@ -15,7 +15,8 @@
set -e # Exit immidiately on non-zero result set -e # Exit immidiately on non-zero result
SOURCE_IMAGE="https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-lite.zip" # https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit
SOURCE_IMAGE="https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-03-25/2021-03-04-raspios-buster-armhf-lite.zip"
export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'} export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'}
export LANG=${LANG:='C.UTF-8'} export LANG=${LANG:='C.UTF-8'}
@@ -102,6 +103,8 @@ ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/rsysrot
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.service' '/lib/systemd/system/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.service' '/lib/systemd/system/'
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.socket' '/lib/systemd/system/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/butterfly.socket' '/lib/systemd/system/'
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/monkey.service' '/lib/systemd/system/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/monkey.service' '/lib/systemd/system/'
# build hardware drivers
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-hardware.sh'
# software install # software install
${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-software.sh' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-software.sh'
# examples # examples

9
builder/image-hardware.sh Executable file
View File

@@ -0,0 +1,9 @@
#! /usr/bin/env bash
set -ex
echo "Build overlay for OV7251 camera on CAM0"
# TODO: check Raspberry Pi OS version /boot/issue.txt
dtc -I dts -O dtb -o /boot/overlays/ov7251cam0.dtbo /home/pi/catkin_ws/src/clover/builder/assets/ov7251cam0-overlay.dts

View File

@@ -60,4 +60,24 @@ domain-needed
quiet-dhcp6 quiet-dhcp6
EOF EOF
echo_stamp "#4 End of network installation" echo_stamp "#4 Build the RTL8814AU Wi-Fi adapter driver"
cd /home/pi
git clone https://github.com/aircrack-ng/rtl8812au.git --depth=1
cd rtl8812au
echo kernel version: $(uname -r)
echo kernel version from procfs: $(cat /proc/version)
echo version: $(git describe --tags --always)
sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile # https://github.com/aircrack-ng/rtl8812au#for-raspberry-rpi
sed -i 's/CONFIG_PLATFORM_ARM_RPI = n/CONFIG_PLATFORM_ARM_RPI = y/g' Makefile
# sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile
apt-cache policy raspberrypi-kernel-headers
apt-get install -y raspberrypi-kernel-headers dkms
ls /lib/modules
KERNEL_VERSION=$(cd /lib/modules && echo *-v7l+) # can't use `uname` as it gives incorrect value in emulated environment
echo make
make KERNEL_VER=$KERNEL_VERSION KVER=$KERNEL_VERSION
echo make install
make install KERNEL_VER=$KERNEL_VERSION KVER=$KERNEL_VERSION
# TODO: rm -rf /home/pi/rtl8812au
echo_stamp "#5 End of network installation"

View File

@@ -0,0 +1,20 @@
image_width: 640
image_height: 480
distortion_model: rational_polynomial
camera_name: main_camera_optical
camera_matrix:
rows: 3
cols: 3
data: [ 279.33, 0, 304.288, 0, 280.417, 268.697, 0, 0, 1, ]
distortion_coefficients:
rows: 1
cols: 14
data: [ 0.155023, -0.0432218, 0.00152622, 6.48563e-05, 0.00390709, 0.495321, -0.0748121, 0.00553976, 0, 0, 0, 0, 0, 0, ]
rectification_matrix:
rows: 3
cols: 3
data: [ 1, 0, 0, 0, 1, 0, 0, 0, 1, ]
projection_matrix:
rows: 3
cols: 4
data: [ 279.33, 0, 304.288, 0, 0, 280.417, 268.697, 0, 0, 0, 1, 0, ]