wiki:AllWinner

Version 18 (modified by Fred Leeflang, 8 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

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

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

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 0x10 0x3E800'