wiki:AllWinner

Version 23 (modified by Fred Leeflang, 7 days ago) (diff)

--

AllWinner A20 Notes

U-boot

  • Makefile verbose: Add to Makefile KBUILD_VERBOSE = 1
  • CONFIG_MMC_TRACE: Add to include/common.h: #define DEBUG #define CONFIG_MMC_TRACE
  • Voeg patch toe van https://yadi.sk/d/5wWlPyYb3UHLth, eg. Download naar emmcFix.patch, ~/u-boot# patch -p1 <<emmcFix.sh
  • Installeer python-dev, zlib1g-dev, pkg-config, libusb-1.0-0-dev, swig

DTB

Maak een arch/arm/dts/sun7i-a20-emcatron.dts gebaseerd op arch/arm/dts/sun7i-a20-cubietruck.dts, edit deze nieuwe file.

Kernel

Hierna:

root@e560:~/linux# ls -l arch/arm/boot/zImage -rwxr-xr-x 1 root root 3940736 Apr 19 04:36 arch/arm/boot/zImage

Deze kernel copieren we even naar de u-boot folder, vervolgens:

  • root@e560:~/u-boot# sunxi-fel -v uboot u-boot-sunxi-with-spl.bin write 0x42000000 zImage

Door u-boot's autoboot af te breken krijgen we de prompt:

  • => setenv bootargs console=ttyS0,115200
  • => bootz

Buildroot

Eerst dient voor de Be een defconfig gemaakt te worden in configs/:

cd configs
root@gaya:/usr/src/buildroot/configs# cp bananapi_m1_defconfig be_defconfig

Hierna vinden we in be_defconfig:

BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/bananapi/bananapi-m1/boot.cmd"

En:

BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/bananapi/bananapi-m1/genimage.cfg"

Hier moet bananapi/bananapi-m1 vervangen worden door be/v2:

BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/be/v2/boot.cmd"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/be/v2/genimage.cfg"

Hierna:

root@gaya:/usr/src/buildroot/board# cp -a bananapi/bananapi-m1 be/v2

En edit de files in be/v2

Be V2 files

In be/v2 vinden we nu:

root@gaya:/usr/src/buildroot/board/be/v2# ls
boot.cmd  genimage.cfg	readme.txt

In boot.img staat:

setenv bootargs console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rootwait

HEt beste om aan de slag te gaan te Be toe te voegen als 'nieuw board' is 'make menuconfig'. In menuconfig zijn er drie bestandslocaties die erg belangrijk zijn:

  • In 'buildroot' is dat 'Location to save buildroot config'. We zetten deze even op [PREFIX]/buildroot/configs/be_defconfig
  • In 'Kernel' dient 'In-Tree Device Tree Source File names' te worden gezet. Wij zetten deze op sun7i-a20-be
  • In 'Bootloaders' dient de 'Board defconfig' gezet te worden. Wij zetten deze op A20-Be

Als we buildroot nu zouden compileren zou het een aantal bestanden niet kunnen vinden dus die moeten we eerst aanmaken. Eerst 'saven' we de config nadat we bovenstaande aanpassingen hebben gemaakt. De 'save optie' zal default '.config' gebruiken. Dit is prima maar hierna:

fredl@gaya:/usr/src/buildroot$ cp .config configs/be_defconfig 

Alles combineren

Buildroot genereert een output/images/sdcard.img. Teneinde deze image in the eMMC te krijgen gaan we hem eerst meecopieren naar DRAM met:

  • fredl@gaya:/usr/src/u-boot$ sudo ../sunxi-tools/sunxi-fel -v uboot u-boot-sunxi-with-spl.bin write 0x42000000 sdcard.img
  • Nadat we de u=boot prompt hebben kunnen we het image uit DRAM naar eMMC schrijven.
  • mmc write addr blk# cnt

Voor bovenstaande is 'addr' het hexadecimale DRAM adres waarin de image gecopieerd is (0x42000000), blk# de offset in eMMC waarbij de U-Boot SPL op 8k dient te staan. Met 512 blocksize hebben we dus offset 16 nodig (16x512 = 8k). De sdcard.img is in ons geval 131072000 bytes dus er moeten 131072000/512 = 25600 blocks oftewel 'mmc write 0x42000000 0x0 0x3E800'