Dobrica Pavlinušić's random unstructured stuff
CubieBoard: Revision 40
BreadBoard V1.0 03-25 For CubieBoard.pdf
A20
NAND in mainline kernelSamsung K9GBG08U0A NAND
many bad blockshttp://linux-sunxi.org/Mainline_NAND_Howto#Many_bad_blocks To fix many bad blocks issue you should:
1. Disable nand-on-flash-bbt in your dts Let's try to do this with armbian. First, enable nand overlay dpavlin@cubieboard2:~$ cat /boot/armbianEnv.txt overlays=nand Then remove nand-om-flash-btt: # backup original cp /boot/dtb-4.14.22-sunxi/overlay/sun7i-a20-nand.dtbo /boot/dtb-4.14.22-sunxi/overlay/sun7i-a20-nand.dtbo.orig dpavlin@cubieboard2:~$ dtc -I dtb -O dts /boot/dtb-4.14.22-sunxi/overlay/sun7i-a20-nand.dtbo | grep -v nand-on-flash-bbt > /tmp/nand.dts root@cubieboard2:~# dtc -I dts -O dtb /tmp/nand.dts > /boot/dtb-4.14.22-sunxi/overlay/sun7i-a20-nand.dtbo Compile armbian kernel with this patch applied dpavlin@armbian:~/build$ cp ./patch/kernel/sunxi-dev/nand-disable-badblock-check-for-migration.patch.disabled \ ./userpatches/kernel/sunxi-next/nand-disable-badblock-check-for-migration.patch u-bootHELLO! BOOT0 is starting! boot0 version : 1.5.1 dram size =1024 Succeed in opening nand flash. Succeed in reading Boot1 file head. The size of Boot1 is 0x0003c000. The file stored in 0X00000000 of block 2 is perfect. Check is correct. Ready to disable icache. Succeed in loading Boot1. Jump to Boot1. [ 0.133] boot1 version : 1.4.0 [ 0.133] pmu type = 3 [ 0.134] bat vol = 0 [ 0.161] axi:ahb:apb=3:2:2 [ 0.161] set dcdc2=1400, clock=1008 successed [ 0.163] key [ 0.175] no key found [ 0.175] flash init start [ 4.051] flash init finish [ 4.052] fs init ok [ 4.053] fattype FAT16 [ 4.053] fs mount ok [ 4.060] script finish [ 4.061] power finish [ 4.069] BootMain start [ 4.069] 13 [ 4.089] key value = 0 [ 4.089] recovery key high 6, low 4 [ 4.090] unable to find fastboot_key key_max value [ 4.098] test for multi os boot with display [ 4.100] show pic finish [ 4.103] load kernel start [ 4.127] load kernel successed [ 4.127] start address = 0x4a00000 U-Boot 2011.09-rc1 (Nov 26 2012 - 14:01:52) Allwinner Technology CPU: SUNXI Family Board: A10-EVB DRAM: 512 MiB NAND: 3776 MiB In: serial Out: serial Err: serial --------fastboot partitions-------- -total partitions:11- -name- -start- -size- bootloader : 1000000 1000000 env : 2000000 1000000 boot : 3000000 2000000 system : 5000000 14000000 data : 19000000 20000000 misc : 39000000 1000000 recovery : 3a000000 2000000 cache : 3c000000 8000000 private : 44000000 1000000 sysrecovery : 45000000 14000000 UDISK : 59000000 93000000 ----------------------------------- Hit any key to stop autoboot: 0 sunxi# compiledpavlin@klin:/klin/u-boot$ cp configs/Cubieboard_defconfig .config # add NAND, MTD options, A10 for cubieboard1 # compile while defining flash: dpavlin@klin:/klin/u-boot$ cat build-cubieboard.sh make V=1 CONFIG_NAND_SUNXI_SPL_ECC_STRENGTH=40 CONFIG_SYS_NAND_PAGE_SIZE=4036 CONFIG_SYS_NAND_OOBSIZE=640 CONFIG_SYS_NAND_BLOCK_SIZE=0x100000 dpavlin@cubieboard:~$ scp 10.60.0.92:/klin/u-boot/u-boot*spl* . dpavlin@cubieboard:~$ sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8 488+1 records in 488+1 records out 500154 bytes (500 kB) copied, 0.0423498 s, 11.8 MB/s pinoutU14 (Next to SATA connector)
U15 (Between Ethernet port and USB ports)
everything below line is for legacy kernel and quite old disk speedNANDroot@cubieboard2:/home/dpavlin# uname -a Linux cubieboard2 3.4.109-sun7i #4 SMP PREEMPT Sun Oct 11 14:32:15 CEST 2015 armv7l GNU/Linux root@cubieboard2:/home/dpavlin# hdparm -t /dev/nand /dev/nand: Timing buffered disk reads: 32 MB in 3.22 seconds = 9.94 MB/sec # this is different, faster sdcard root@cubieboard2:~# uname -a Linux cubieboard2 4.3.3-sunxi #3 SMP Mon Dec 28 11:27:16 CET 2015 armv7l GNU/Linux root@cubieboard2:~# hdparm -tT /dev/mmcblk0 /dev/mmcblk0: Timing cached reads: 770 MB in 2.00 seconds = 384.59 MB/sec Timing buffered disk reads: 60 MB in 3.05 seconds = 19.67 MB/sec SATAPowered by 2A Nexus 7 power supply (for SATA) root@debian:~/sunxi-tools# ./bin2fex /boot/script.bin script.fex fexc-bin: /boot/script.bin: version: 0.1.2 fexc-bin: /boot/script.bin: size: 42144 (76 sections) root@debian:~/sunxi-tools# cp script.fex script+sata.fex root@debian:~/sunxi-tools# diff -urw script.fex script+sata.fex --- script.fex 2013-05-30 10:41:13.979510762 +0000 +++ script+sata.fex 2013-05-30 10:42:36.380244101 +0000 @@ -595,7 +595,7 @@ [sata_para] sata_used = 1 -sata_power_en = +sata_power_en = port:PB08<1><default><default><0> [mmc0_para] sdc_used = 1 root@debian:~/sunxi-tools# ./fex2bin script+sata.fex /boot/script.bin root@debian:/etc# git diff diff --git a/modules b/modules index d8894c3..9e65a80 100644 --- a/modules +++ b/modules @@ -4,3 +4,4 @@ # at boot time, one per line. Lines beginning with "#" are ignored. # Parameters can be specified after the module name. +sw_ahci_platform Reboot to activate changes and test speed (using 80G intel SSD to have sense of maximum performance) root@debian:~# hdparm -i /dev/sda /dev/sda: Model=INTEL SSDSA2M080G2GC, FwRev=2CV102HD, SerialNo=CVPO035101VN080JGN Config={ Fixed } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=1 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=156301488 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 AdvancedPM=no WriteCache=enabled Drive conforms to: ATA/ATAPI-7 T13 1532D revision 1: ATA/ATAPI-2,3,4,5,6,7 * signifies the current active mode root@debian:~# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 784 MB in 2.00 seconds = 392.08 MB/sec Timing buffered disk reads: 460 MB in 3.00 seconds = 153.32 MB/sec And test with disk: root@debian:~# hdparm -i /dev/sda /dev/sda: Model=ST96812AS, FwRev=7.24, SerialNo=3PJ1GCKE Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=off CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=117231408 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 AdvancedPM=yes: unknown setting WriteCache=enabled Drive conforms to: Unspecified: ATA/ATAPI-1,2,3,4,5,6,7 * signifies the current active mode root@debian:~# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 746 MB in 2.00 seconds = 372.90 MB/sec Timing buffered disk reads: 120 MB in 3.03 seconds = 39.56 MB/sec GPIOCameraOV7670 is supported http://linux-sunxi.org/CSI
hardwarepinout: https://www.olimex.com/wiki/How_to_add_pwm cat /sys/class/pwm-sunxi/pwm0/pin PB2 echo 10khz > /sys/class/pwm-sunxi/pwm0/period echo 25 > /sys/class/pwm-sunxi/pwm0/duty_percent echo 1 > /sys/class/pwm-sunxi/pwm0/run LEDsdpavlin@cubieboard2:~$ grep . /sys/class/leds/*/trigger /sys/class/leds/blue:ph21:led2/trigger:none battery-charging-or-full battery-charging battery-full battery-charging-blink-full-solid ac-online usb-online mmc0 timer [heartbeat] backlight cpu0 cpu1 default-on /sys/class/leds/green:ph20:led1/trigger:[none] battery-charging-or-full battery-charging battery-full battery-charging-blink-full-solid ac-online usb-online mmc0 timer heartbeat backlight cpu0 cpu1 default-on forum
ina219device treedpavlin@cubieboard2:~$ sensors ina219-i2c-1-40 Adapter: mv64xxx_i2c adapter in0: +0.04 V in1: +4.64 V power1: 66.88 W curr1: +13.64 A iio_hwmon-isa-0000 Adapter: ISA adapter temp1: +33.6�C root@cubieboard2:~# dmesg | grep ina | tail -1 [ 6597.685287] ina2xx 1-0040: power monitor ina219 (Rshunt = 100 uOhm) # hum, it should be 10uA, so I changed that in device tree dpavlin@cubieboard2:~$ dmesg | grep ina219 [ 11.594536] ina2xx 1-0040: power monitor ina219 (Rshunt = 10 uOhm) dpavlin@cubieboard2:~$ sensors ina219-i2c-1-40 Adapter: mv64xxx_i2c adapter in0: +0.02 V in1: +4.75 V power1: 85.00 W curr1: +17.97 A iio_hwmon-isa-0000 Adapter: ISA adapter temp1: +32.5�C # still wrong current! user-land CUser-land implementation which works: https://github.com/ZigFisher/Glutinium/blob/master/i2c-telemetry/src/ina219.c modified a little to provide full timestamp and fflush: ina219.c dpavlin@cubieboard2:~$ ./ina219 -b 1 -i 1 2017-10-23T12:40:24 4744mV 262.2mA 2017-10-23T12:40:26 4756mV 249.1mA 2017-10-23T12:40:27 4776mV 223.0mA 2017-10-23T12:40:28 4772mV 223.8mA 2017-10-23T12:40:29 4760mV 224.0mA 2017-10-23T12:40:30 4768mV 223.0mA 2017-10-23T12:40:31 4772mV 223.1mA 2017-10-23T12:40:32 4748mV 224.6mA 2017-10-23T12:40:33 4776mV 223.1mA 2017-10-23T12:40:34 4768mV 223.5mA |