Difference between revisions of "PineNote Development"
(→Entering Maskrom Mode: Update maskrom entering instructions, turns out my cable was bad or something?) |
(Add some mainline instructions) |
||
Line 79: | Line 79: | ||
This can be a bit fiddly to get right, and may need a few tries. | This can be a bit fiddly to get right, and may need a few tries. | ||
= Mainline development = | |||
== Status == | |||
Some work happening here: https://gitlab.com/calebccff/linux, the idea is to import the parts of the eink/ebc drivers which are open source and use the downstream u-boot framebuffer driver as a reference to create a basic framebuffer driver. | |||
Currently mainline struggles to boot due to weird issues while probing fixed regulators (?). It also fails to detect eMMC. | |||
== How to boot mainline == | |||
'''TODO:''' Add more details | |||
UART is currently REQUIRED for this to work! We depend on u-boot falling back to console. Once we have a prebuilt u-boot which will use extlinux by default UART won't be needed anymore. | |||
Currently it's possible to boot mainline by doing roughly the following: | |||
1. Erase boot and dtbo with rkdeveloptool (back them up first!!!) | |||
2. Create an ext2 partition image and mount it (fallocate, mkfs.ext2) | |||
3. Build your mainline kernel | |||
4. Copy the kernel, dtb and an initramfs to the root of the mounted image (use any old postmarketOS initramfs) | |||
5. Create a file in the root of the mounted image called <code>extlinux.conf</code> with the following contents: | |||
<pre> | |||
timeout 10 | |||
default MAINLINE | |||
menu title boot prev kernel | |||
label MAINLINE | |||
kernel /vmlinuz | |||
fdt /rk3566-pinenote.dtb | |||
initrd /initramfs | |||
append earlycon console=tty0 console=ttyS2,1500000n8 fw_devlink=off PMOS_NO_OUTPUT_REDIRECT | |||
</pre> | |||
6. Unmount the image and then use rkdeveloptool to flash it to the "recovery" partition on the pinenote (it's about the right size until we get around to replacing the partition layout). | |||
7. Reboot your pinenote, it should boot to a u-boot console, run the following command to boot your mainline kernel: | |||
<pre> | |||
sysboot ${devtype} ${devnum}:9 any ${scriptaddr} extlinux.conf | |||
</pre> |
Revision as of 16:08, 12 September 2021
This article seeks to provide general development information for the PineNote
Flashing Software
Currently, the only way to flash software is using rkdeveloptool.
Using rkdeveloptool
rkdeveloptool is a command line utility built on libusb.
Downloading and Building rkdeveloptool
PINE64 develops its own updated fork of rkdeveloptool on GitLab.
You will need to have libusb 1.0 and its development headers installed.
git clone https://gitlab.com/pine64-org/quartz-bsp/rkdeveloptool.git cd rkdeveloptool mkdir build cd build cmake ..
This sets up all the build files. You can then compile with make
inside the build directory.
After you're done, you'll likely also need to install the udev rules, or else your user won't have permission to access the USB devices:
sudo cp 99-rk-rockusb.rules /etc/udev/rules.d/ sudo udevadm --control reload
Building Downstream U-Boot
While in maskrom mode, we need to have a u-boot to download onto the device for any of the other commands to work.
git clone -b quartz64 https://gitlab.com/pgwipeout/u-boot-rockchip.git git clone -b rkbin https://github.com/JeffyCN/rockchip_mirrors.git rkbin cd u-boot-rockchip export CROSS_COMPILE=aarch64-none-linux-gnu- make rk3566-quartz64_defconfig ./make.sh
Running rkdeveloptool
First, you'll want to make sure the device you've connected is in maskrom mode:
./rkdeveloptool list
It should output something like DevNo=1 Vid=0x2207,Pid=0x350a,LocationID=202 Maskrom
. If it doesn't, see PineNote Development#Entering Maskrom Mode.
You can now download u-boot onto it:
./rkdeveloptool boot ../u-boot-rockchip/rk356x_spl_loader_v1.08.111.bin
This should output Downloading bootloader succeeded.
.
We can now verify that this worked using e.g. the "read flash info" command:
./rkdeveloptool read-flash-info
TODO: finish this section
Entering Maskrom Mode
- Flip the device around so that the display faces down
- Lay the pen on the right side, with its tip pointing towards the speaker grill, and its magnet pointing towards the upper right corner of the label on the back.
- Turn the device on and wait for it to show up in
lsusb
. It should now be in Loader mode, according torkdeveloptool list-devices
- Unplug the device and plug it back in. It should now be in maskrom mode.
This can be a bit fiddly to get right, and may need a few tries.
Mainline development
Status
Some work happening here: https://gitlab.com/calebccff/linux, the idea is to import the parts of the eink/ebc drivers which are open source and use the downstream u-boot framebuffer driver as a reference to create a basic framebuffer driver.
Currently mainline struggles to boot due to weird issues while probing fixed regulators (?). It also fails to detect eMMC.
How to boot mainline
TODO: Add more details
UART is currently REQUIRED for this to work! We depend on u-boot falling back to console. Once we have a prebuilt u-boot which will use extlinux by default UART won't be needed anymore.
Currently it's possible to boot mainline by doing roughly the following:
1. Erase boot and dtbo with rkdeveloptool (back them up first!!!)
2. Create an ext2 partition image and mount it (fallocate, mkfs.ext2)
3. Build your mainline kernel
4. Copy the kernel, dtb and an initramfs to the root of the mounted image (use any old postmarketOS initramfs)
5. Create a file in the root of the mounted image called extlinux.conf
with the following contents:
timeout 10 default MAINLINE menu title boot prev kernel label MAINLINE kernel /vmlinuz fdt /rk3566-pinenote.dtb initrd /initramfs append earlycon console=tty0 console=ttyS2,1500000n8 fw_devlink=off PMOS_NO_OUTPUT_REDIRECT
6. Unmount the image and then use rkdeveloptool to flash it to the "recovery" partition on the pinenote (it's about the right size until we get around to replacing the partition layout).
7. Reboot your pinenote, it should boot to a u-boot console, run the following command to boot your mainline kernel:
sysboot ${devtype} ${devnum}:9 any ${scriptaddr} extlinux.conf