![]() |
Brief overview on help to use uboot/usb serial and compile a kernel - Printable Version +- PINE64 (https://forum.pine64.org) +-- Forum: PinePhone (https://forum.pine64.org/forumdisplay.php?fid=120) +--- Forum: General Discussion on PinePhone (https://forum.pine64.org/forumdisplay.php?fid=127) +--- Thread: Brief overview on help to use uboot/usb serial and compile a kernel (/showthread.php?tid=10383) |
Brief overview on help to use uboot/usb serial and compile a kernel - davegermiquet - 06-22-2020 My current experiences with Mobian, and compiling the kernel: Brief overview: - My main objective was to compile ZRAM module in to the kernel of Mobian. What ended up happening I learned the following:
[*]How to edit the initrd, add use existing image, to make my own custom image Example serial module: COVVY CP2102 Module USB to TTL 5PIN Serial Converter Adapter Module, UART STC Downloader for 3.3V and 5V with Jumper Wires (2pcs) by LYCHEE LIMITED Learn more: https://www.amazon.ca/dp/B07VMKYZD6/ref=cm_sw_em_r_mt_dp_U_GGp8EbG2TYKA3 Result: Telegram started working properly ZRAM sped things up Wifi stopped breaking! (Example above) Debugging from uboot on OSX system: - Install Uart Drivers - Plug in USB cable to Mac book You can access like the following: screen /dev/cu.SLAB_USBtoUART 115200 (Above depends on module using) UBOOT INFORMATION: Once connected, when you boot up you get the following, hit ESC right away to get into options: Note: DO not use the initrd RAM feature for uboot, you won’t get any booting going on
ext4load mmc 1:2 0x40080000 /boot/Image ext4load mmc 1:2 0x4FA00000 /boot/dtb/sun50i-a64-pinephone-1.2.dtb Or ext4load mmc 1:2 ${kernel_addr_r} /boot/Image ext4load mmc 1:2 ${fdt_addr_r} /boot/dtb/sun50i-a64-pinephone-1.2.dtb setenv bootargs root=/dev/mmcblk2p2 rw console=ttyS0,115200 console=tty1 initrd=/boot/initrd.img booti 0x40080000 - 0x4FA00000 Common commands in uboot settings:
Example: - help ext4load - mmc list - mmc info - printenv Common environment helpful variables inside boot that I found: ${kernel_addr_r} (where I can load the image but I don’t think it matters where you put (not sure) ${ftb_addr_r} where I put the pine phone DTB files. The following raw commands start up the kernel Example boot up: of kernel Trying to boot from MMC2 NOTICE: BL31: v2.3(): NOTICE: BL31: Built : 17:34:37, Apr 26 2020 NOTICE: BL31: Detected Allwinner A64/H64/R18 SoC (1689) NOTICE: BL31: Found U-Boot DTB at 0x40635c0, model: Pine64 PinePhone (1.2) INFO: ARM GICv2 driver initialized INFO: Configuring SPC Controller INFO: PMIC: Probing AXP803 on RSB INFO: PMIC: dcdc1 voltage: 3.300V INFO: PMIC: dcdc5 voltage: 1.200V INFO: PMIC: dcdc6 voltage: 1.100V INFO: PMIC: dldo1 voltage: 3.300V INFO: BL31: Platform setup done INFO: BL31: Initializing runtime services INFO: BL31: cortex_a53: CPU workaround for 843419 was applied INFO: BL31: cortex_a53: CPU workaround for 855873 was applied NOTICE: PSCI: System suspend is available via SCPI INFO: BL31: Preparing for EL3 exit to normal world INFO: Entry point address = 0x4a000000 INFO: SPSR = 0x3c9 U-Boot 2020.04+dfsg-2+pinephone4 (Jun 11 2020 - 07:21:23 +0000) DRAM: 2 GiB MMC: mmc@1c0f000: 0, mmc@1c11000: 1 Loading Environment from FAT... Unable to use mmc 1:2... starting USB... No working controllers found Hit any key to stop autoboot: 0 => KERNEL I USED: origin https://gitlab.com/mobian1/devices/pinephone-linux.git (fetch) origin https://gitlab.com/mobian1/devices/pinephone-linux.git (push) How to compile kernel and setup uboot on mobian:
> docker run / or docker exec to get on docker instance Once all prerequisites installed: > git clone linuxkernel > Copy mobians /proc/config.gz for a starting point of previous config cd kernelfolder/ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- mrproper > cp config.gz .config make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- oldconfig make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig (Add the features you want) make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs Then make the modules into a separate folder, so you can copy the over, cp $LINUX/arch/arm64/boot/Image /build make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules_install INSTALL_MOD_PATH=/build/lib cp./arch/<arch>/boot/dts/ Probably only need one but I copied all dtbs to /build folder sun50i-a64-pine64-lts.dtb sun50i-a64-pinephone-1.2.dts sun50i-a64-pine64-lts.dts sun50i-a64-pinephone.dtb sun50i-a64-pine64-plus.dtb sun50i-a64-pinephone.dts sun50i-a64-pine64-plus.dts sun50i-a64-pinephone.dtsi sun50i-a64-pine64.dtb sun50i-a64-pinetab.dtb sun50i-a64-pine64.dts sun50i-a64-pinetab.dts sun50i-a64-pinebook.dtb sun50i-a64-sopine-baseboard.dtb sun50i-a64-pinebook.dts sun50i-a64-sopine-baseboard.dts sun50i-a64-pinephone-1.0.dtb sun50i-a64-sopine.dtsi sun50i-a64-pinephone-1.0.dts sun50i-h6-pine-h64-model-b.dtb sun50i-a64-pinephone-1.1.dtb sun50i-h6-pine-h64-model-b.dts sun50i-a64-pinephone-1.1.dts sun50i-h6-pine-h64.dtb sun50i-a64-pinephone-1.2.dtb sun50i-h6-pine-h64.dts How to make the initrd: cd /build/initrd zcat existingimg.img | cpio -idmv Usually all you need to do is copy over only the latest modules folder, or replace them Then zip it up find . | cpio -o -c | gzip -9 > /build/new.img Now you should probably have all the files: On mobian (Due to small boot folder do this) mkdir /realboot Copy dtbs folder to the /realboot folder Copy image to the /realboot folder Copy initrd to the /realboot folder Copy the new modules created to the proper folder on /lib/modules folder unmount /boot (the small folder) copy all these files on /boot (on mmcblk2p2) create the following text file: ext4load mmc 1:2 ${kernel_addr_r} /boot/Image ext4load mmc 1:2 ${fdt_addr_r} /boot/dtb/sun50i-a64-pinephone-1.2.dtb setenv bootargs root=/dev/mmcblk2p2 rw console=ttyS0,115200 console=tty1 initrd=/boot/initrd.img booti 0x40080000 - 0x4FA00000 run mkimage: bash-3.2# mkimage -C none -A arm -T script -d boot.text boot.scr then fdisk /dev/mmcblk2 and make the /dev/mmcblk2p2 the active partition reboot. RE: Brief overview on help to use uboot/kernel/serial - doniks - 06-22-2020 Pretty cool! Thanks for sharing! |