1f981e66eSRick ChenAndes Technology SoC AE350 2f981e66eSRick Chen=========================== 3f981e66eSRick Chen 4f981e66eSRick ChenAE350 is the mainline SoC produced by Andes Technology using AX25 CPU core 5f981e66eSRick Chenbase on RISC-V architecture. 6f981e66eSRick Chen 7f981e66eSRick ChenAE350 has integrated both AHB and APB bus and many periphals for application 8f981e66eSRick Chenand product development. 9f981e66eSRick Chen 10f981e66eSRick ChenAX25-AE350 11f981e66eSRick Chen========= 12f981e66eSRick Chen 13f981e66eSRick ChenAX25-AE350 is the SoC with AE350 hardcore CPU. 14f981e66eSRick Chen 15f981e66eSRick ChenConfigurations 16f981e66eSRick Chen============== 17f981e66eSRick Chen 18f981e66eSRick ChenCONFIG_SKIP_LOWLEVEL_INIT: 19f981e66eSRick Chen If you want to boot this system from SPI ROM and bypass e-bios (the 20f981e66eSRick Chen other boot loader on ROM). You should undefine CONFIG_SKIP_LOWLEVEL_INIT 21f981e66eSRick Chen in "include/configs/ax25-ae350.h". 22f981e66eSRick Chen 23f981e66eSRick ChenBuild and boot steps 24f981e66eSRick Chen==================== 25f981e66eSRick Chen 26f981e66eSRick Chenbuild: 27f981e66eSRick Chen1. Prepare the toolchains and make sure the $PATH to toolchains is correct. 28*368ff578SRick Chen2. Use `make ae350_rv[32|64]_defconfig` in u-boot root to build the image for 32 or 64 bit. 29f981e66eSRick Chen 30f981e66eSRick ChenVerification 31f981e66eSRick Chen==================== 32f981e66eSRick Chen 33f981e66eSRick ChenTarget 34f981e66eSRick Chen==================== 35f981e66eSRick Chen1. startup 36f981e66eSRick Chen2. relocation 37f981e66eSRick Chen3. timer driver 38f981e66eSRick Chen4. uart driver 39f981e66eSRick Chen5. mac driver 40f981e66eSRick Chen6. mmc driver 41f981e66eSRick Chen7. spi driver 42f981e66eSRick Chen 43f981e66eSRick ChenSteps 44f981e66eSRick Chen==================== 45f981e66eSRick Chen1. Define CONFIG_SKIP_LOWLEVEL_INIT to build u-boot which is loaded via gdb from ram. 46f981e66eSRick Chen2. Undefine CONFIG_SKIP_LOWLEVEL_INIT to build u-boot which is booted from spi rom. 47f981e66eSRick Chen3. Ping a server by mac driver 48f981e66eSRick Chen4. Scan sd card and copy u-boot image which is booted from flash to ram by sd driver. 49f981e66eSRick Chen5. Burn this u-boot image to spi rom by spi driver 50f981e66eSRick Chen6. Re-boot u-boot from spi flash with power off and power on. 51f981e66eSRick Chen 52f981e66eSRick ChenMessages of U-Boot boot on AE350 board 53f981e66eSRick Chen====================================== 54f981e66eSRick ChenU-Boot 2018.01-rc2-00033-g824f89a (Dec 21 2017 - 16:51:26 +0800) 55f981e66eSRick Chen 56f981e66eSRick ChenDRAM: 1 GiB 57f981e66eSRick ChenMMC: mmc@f0e00000: 0 58f981e66eSRick ChenSF: Detected mx25u1635e with page size 256 Bytes, erase size 4 KiB, total 2 MiB 59f981e66eSRick ChenIn: serial@f0300000 60f981e66eSRick ChenOut: serial@f0300000 61f981e66eSRick ChenErr: serial@f0300000 62f981e66eSRick ChenNet: 63f981e66eSRick ChenWarning: mac@e0100000 (eth0) using random MAC address - be:dd:d7:e4:e8:10 64f981e66eSRick Cheneth0: mac@e0100000 65f981e66eSRick Chen 66f981e66eSRick ChenRISC-V # version 67f981e66eSRick ChenU-Boot 2018.01-rc2-00033-gb265b91-dirty (Dec 22 2017 - 13:54:21 +0800) 68f981e66eSRick Chen 69f981e66eSRick Chenriscv32-unknown-linux-gnu-gcc (GCC) 7.2.0 70f981e66eSRick ChenGNU ld (GNU Binutils) 2.29 71f981e66eSRick Chen 72f981e66eSRick ChenRISC-V # setenv ipaddr 10.0.4.200 ; 73f981e66eSRick ChenRISC-V # setenv serverip 10.0.4.97 ; 74f981e66eSRick ChenRISC-V # ping 10.0.4.97 ; 75f981e66eSRick ChenUsing mac@e0100000 device 76f981e66eSRick Chenhost 10.0.4.97 is alive 77f981e66eSRick Chen 78f981e66eSRick ChenRISC-V # mmc rescan 79f981e66eSRick ChenRISC-V # fatls mmc 0:1 80f981e66eSRick Chen 318907 u-boot-ae350-64.bin 81f981e66eSRick Chen 1252 hello_world_ae350_32.bin 82f981e66eSRick Chen 328787 u-boot-ae350-32.bin 83f981e66eSRick Chen 84f981e66eSRick Chen3 file(s), 0 dir(s) 85f981e66eSRick Chen 86f981e66eSRick ChenRISC-V # sf probe 0:0 50000000 0 87f981e66eSRick ChenSF: Detected mx25u1635e with page size 256 Bytes, erase size 4 KiB, total 2 MiB 88f981e66eSRick Chen 89f981e66eSRick ChenRISC-V # sf test 0x100000 0x1000 90f981e66eSRick ChenSPI flash test: 91f981e66eSRick Chen0 erase: 36 ticks, 111 KiB/s 0.888 Mbps 92f981e66eSRick Chen1 check: 29 ticks, 137 KiB/s 1.096 Mbps 93f981e66eSRick Chen2 write: 40 ticks, 100 KiB/s 0.800 Mbps 94f981e66eSRick Chen3 read: 20 ticks, 200 KiB/s 1.600 Mbps 95f981e66eSRick ChenTest passed 96f981e66eSRick Chen0 erase: 36 ticks, 111 KiB/s 0.888 Mbps 97f981e66eSRick Chen1 check: 29 ticks, 137 KiB/s 1.096 Mbps 98f981e66eSRick Chen2 write: 40 ticks, 100 KiB/s 0.800 Mbps 99f981e66eSRick Chen3 read: 20 ticks, 200 KiB/s 1.600 Mbps 100f981e66eSRick Chen 101f981e66eSRick ChenRISC-V # fatload mmc 0:1 0x600000 u-boot-ae350-32.bin 102f981e66eSRick Chenreading u-boot-ae350-32.bin 103f981e66eSRick Chen328787 bytes read in 324 ms (990.2 KiB/s) 104f981e66eSRick Chen 105f981e66eSRick ChenRISC-V # sf erase 0x0 0x51000 106f981e66eSRick ChenSF: 331776 bytes @ 0x0 Erased: OK 107f981e66eSRick Chen 108f981e66eSRick ChenRISC-V # sf write 0x600000 0x0 0x50453 109f981e66eSRick Chendevice 0 offset 0x0, size 0x50453 110f981e66eSRick ChenSF: 328787 bytes @ 0x0 Written: OK 111f981e66eSRick Chen 112f981e66eSRick ChenRISC-V # crc32 0x600000 0x50453 113f981e66eSRick Chencrc32 for 00600000 ... 00650452 ==> 692dc44a 114f981e66eSRick Chen 115f981e66eSRick ChenRISC-V # crc32 0x80000000 0x50453 116f981e66eSRick Chencrc32 for 80000000 ... 80050452 ==> 692dc44a 117f981e66eSRick ChenRISC-V # 118f981e66eSRick Chen 119f981e66eSRick Chen*** power-off and power-on, this U-Boot is booted from spi flash *** 120f981e66eSRick Chen 121f981e66eSRick ChenU-Boot 2018.01-rc2-00032-gf67dd47-dirty (Dec 21 2017 - 13:56:03 +0800) 122f981e66eSRick Chen 123f981e66eSRick ChenDRAM: 1 GiB 124f981e66eSRick ChenMMC: mmc@f0e00000: 0 125f981e66eSRick ChenSF: Detected mx25u1635e with page size 256 Bytes, erase size 4 KiB, total 2 MiB 126f981e66eSRick ChenIn: serial@f0300000 127f981e66eSRick ChenOut: serial@f0300000 128f981e66eSRick ChenErr: serial@f0300000 129f981e66eSRick ChenNet: 130f981e66eSRick ChenWarning: mac@e0100000 (eth0) using random MAC address - ee:4c:58:29:32:f5 131f981e66eSRick Cheneth0: mac@e0100000 132f981e66eSRick ChenRISC-V # 133f981e66eSRick Chen 134f981e66eSRick Chen 135f981e66eSRick ChenBoot bbl and riscv-linux via U-Boot on QEMU 136f981e66eSRick Chen=========================================== 137f981e66eSRick Chen1. Build riscv-linux 138f981e66eSRick Chen2. Build bbl and riscv-linux with --with-payload 139f981e66eSRick Chen3. Prepare ae350.dtb 140f981e66eSRick Chen4. Creating OS-kernel images 141f981e66eSRick Chen ./mkimage -A riscv -O linux -T kernel -C none -a 0x0000 -e 0x0000 -d bbl.bin bootmImage-bbl.bin 142f981e66eSRick Chen Image Name: 143f981e66eSRick Chen Created: Tue Mar 13 10:06:42 2018 144f981e66eSRick Chen Image Type: RISC-V Linux Kernel Image (uncompressed) 145f981e66eSRick Chen Data Size: 17901204 Bytes = 17481.64 KiB = 17.07 MiB 146f981e66eSRick Chen Load Address: 00000000 147f981e66eSRick Chen Entry Point: 00000000 148f981e66eSRick Chen 149f981e66eSRick Chen4. Copy bootmImage-bbl.bin and ae350.dtb to qemu sd card image 150f981e66eSRick Chen5. Message of booting riscv-linux from bbl via u-boot on qemu 151f981e66eSRick Chen 152f981e66eSRick ChenU-Boot 2018.03-rc4-00031-g2631273 (Mar 13 2018 - 15:02:55 +0800) 153f981e66eSRick Chen 154f981e66eSRick ChenDRAM: 1 GiB 155f981e66eSRick Chenmain-loop: WARNING: I/O thread spun for 1000 iterations 156f981e66eSRick ChenMMC: mmc@f0e00000: 0 157f981e66eSRick ChenLoading Environment from SPI Flash... *** Warning - spi_flash_probe_bus_cs() failed, using default environment 158f981e66eSRick Chen 159f981e66eSRick ChenFailed (-22) 160f981e66eSRick ChenIn: serial@f0300000 161f981e66eSRick ChenOut: serial@f0300000 162f981e66eSRick ChenErr: serial@f0300000 163f981e66eSRick ChenNet: 164f981e66eSRick ChenWarning: mac@e0100000 (eth0) using random MAC address - 02:00:00:00:00:00 165f981e66eSRick Cheneth0: mac@e0100000 166f981e66eSRick ChenRISC-V # mmc rescan 167f981e66eSRick ChenRISC-V # mmc part 168f981e66eSRick Chen 169f981e66eSRick ChenPartition Map for MMC device 0 -- Partition Type: DOS 170f981e66eSRick Chen 171f981e66eSRick ChenPart Start Sector Num Sectors UUID Type 172f981e66eSRick ChenRISC-V # fatls mmc 0:0 173f981e66eSRick Chen 17901268 bootmImage-bbl.bin 174f981e66eSRick Chen 1954 ae2xx.dtb 175f981e66eSRick Chen 176f981e66eSRick Chen2 file(s), 0 dir(s) 177f981e66eSRick Chen 178f981e66eSRick ChenRISC-V # fatload mmc 0:0 0x00600000 bootmImage-bbl.bin 179f981e66eSRick Chen17901268 bytes read in 4642 ms (3.7 MiB/s) 180f981e66eSRick ChenRISC-V # fatload mmc 0:0 0x2000000 ae350.dtb 181f981e66eSRick Chen1954 bytes read in 1 ms (1.9 MiB/s) 182f981e66eSRick ChenRISC-V # setenv bootm_size 0x2000000 183f981e66eSRick ChenRISC-V # setenv fdt_high 0x1f00000 184f981e66eSRick ChenRISC-V # bootm 0x00600000 - 0x2000000 185f981e66eSRick Chen## Booting kernel from Legacy Image at 00600000 ... 186f981e66eSRick Chen Image Name: 187f981e66eSRick Chen Image Type: RISC-V Linux Kernel Image (uncompressed) 188f981e66eSRick Chen Data Size: 17901204 Bytes = 17.1 MiB 189f981e66eSRick Chen Load Address: 00000000 190f981e66eSRick Chen Entry Point: 00000000 191f981e66eSRick Chen Verifying Checksum ... OK 192f981e66eSRick Chen## Flattened Device Tree blob at 02000000 193f981e66eSRick Chen Booting using the fdt blob at 0x2000000 194f981e66eSRick Chen Loading Kernel Image ... OK 195f981e66eSRick Chen Loading Device Tree to 0000000001efc000, end 0000000001eff7a1 ... OK 196f981e66eSRick Chen[ 0.000000] OF: fdt: Ignoring memory range 0x0 - 0x200000 197f981e66eSRick Chen[ 0.000000] Linux version 4.14.0-00046-gf3e439f-dirty (rick@atcsqa06) (gcc version 7.1.1 20170509 (GCC)) #1 Tue Jan 9 16:34:25 CST 2018 198f981e66eSRick Chen[ 0.000000] bootconsole [early0] enabled 199f981e66eSRick Chen[ 0.000000] Initial ramdisk at: 0xffffffe000016a98 (12267008 bytes) 200f981e66eSRick Chen[ 0.000000] Zone ranges: 201f981e66eSRick Chen[ 0.000000] DMA [mem 0x0000000000200000-0x000000007fffffff] 202f981e66eSRick Chen[ 0.000000] Normal empty 203f981e66eSRick Chen[ 0.000000] Movable zone start for each node 204f981e66eSRick Chen[ 0.000000] Early memory node ranges 205f981e66eSRick Chen[ 0.000000] node 0: [mem 0x0000000000200000-0x000000007fffffff] 206f981e66eSRick Chen[ 0.000000] Initmem setup node 0 [mem 0x0000000000200000-0x000000007fffffff] 207f981e66eSRick Chen[ 0.000000] elf_hwcap is 0x112d 208f981e66eSRick Chen[ 0.000000] random: fast init done 209f981e66eSRick Chen[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516615 210f981e66eSRick Chen[ 0.000000] Kernel command line: console=ttyS0,38400n8 earlyprintk=uart8250-32bit,0xf0300000 debug loglevel=7 211f981e66eSRick Chen[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) 212f981e66eSRick Chen[ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes) 213f981e66eSRick Chen[ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes) 214f981e66eSRick Chen[ 0.000000] Sorting __ex_table... 215f981e66eSRick Chen[ 0.000000] Memory: 2047832K/2095104K available (1856K kernel code, 204K rwdata, 532K rodata, 12076K init, 756K bss, 47272K reserved, 0K cma-reserved) 216f981e66eSRick Chen[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 217f981e66eSRick Chen[ 0.000000] NR_IRQS: 0, nr_irqs: 0, preallocated irqs: 0 218f981e66eSRick Chen[ 0.000000] riscv,cpu_intc,0: 64 local interrupts mapped 219f981e66eSRick Chen[ 0.000000] riscv,plic0,e4000000: mapped 31 interrupts to 1/2 handlers 220f981e66eSRick Chen[ 0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns 221f981e66eSRick Chen[ 0.000000] Calibrating delay loop (skipped), value calculated using timer frequency.. 20.00 BogoMIPS (lpj=40000) 222f981e66eSRick Chen[ 0.000000] pid_max: default: 32768 minimum: 301 223f981e66eSRick Chen[ 0.004000] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes) 224f981e66eSRick Chen[ 0.004000] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes) 225f981e66eSRick Chen[ 0.056000] devtmpfs: initialized 226f981e66eSRick Chen[ 0.060000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns 227f981e66eSRick Chen[ 0.064000] futex hash table entries: 256 (order: 0, 6144 bytes) 228f981e66eSRick Chen[ 0.068000] NET: Registered protocol family 16 229f981e66eSRick Chen[ 0.080000] vgaarb: loaded 230f981e66eSRick Chen[ 0.084000] clocksource: Switched to clocksource riscv_clocksource 231f981e66eSRick Chen[ 0.088000] NET: Registered protocol family 2 232f981e66eSRick Chen[ 0.092000] TCP established hash table entries: 16384 (order: 5, 131072 bytes) 233f981e66eSRick Chen[ 0.096000] TCP bind hash table entries: 16384 (order: 5, 131072 bytes) 234f981e66eSRick Chen[ 0.096000] TCP: Hash tables configured (established 16384 bind 16384) 235f981e66eSRick Chen[ 0.100000] UDP hash table entries: 1024 (order: 3, 32768 bytes) 236f981e66eSRick Chen[ 0.100000] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes) 237f981e66eSRick Chen[ 0.104000] NET: Registered protocol family 1 238f981e66eSRick Chen[ 0.616000] Unpacking initramfs... 239f981e66eSRick Chen[ 1.220000] workingset: timestamp_bits=62 max_order=19 bucket_order=0 240f981e66eSRick Chen[ 1.244000] io scheduler noop registered 241f981e66eSRick Chen[ 1.244000] io scheduler cfq registered (default) 242f981e66eSRick Chen[ 1.244000] io scheduler mq-deadline registered 243f981e66eSRick Chen[ 1.248000] io scheduler kyber registered 244f981e66eSRick Chen[ 1.360000] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled 245f981e66eSRick Chen[ 1.368000] console [ttyS0] disabled 246f981e66eSRick Chen[ 1.372000] f0300000.serial: ttyS0 at MMIO 0xf0300020 (irq = 10, base_baud = 1228800) is a 16550A 247f981e66eSRick Chen[ 1.392000] console [ttyS0] enabled 248f981e66eSRick Chen[ 1.392000] ftmac100: Loading version 0.2 ... 249f981e66eSRick Chen[ 1.396000] ftmac100 e0100000.mac eth0: irq 8, mapped at ffffffd002005000 250f981e66eSRick Chen[ 1.400000] ftmac100 e0100000.mac eth0: generated random MAC address 6e:ac:c3:92:36:c0 251f981e66eSRick Chen[ 1.404000] IR NEC protocol handler initialized 252f981e66eSRick Chen[ 1.404000] IR RC5(x/sz) protocol handler initialized 253f981e66eSRick Chen[ 1.404000] IR RC6 protocol handler initialized 254f981e66eSRick Chen[ 1.404000] IR JVC protocol handler initialized 255f981e66eSRick Chen[ 1.408000] IR Sony protocol handler initialized 256f981e66eSRick Chen[ 1.408000] IR SANYO protocol handler initialized 257f981e66eSRick Chen[ 1.408000] IR Sharp protocol handler initialized 258f981e66eSRick Chen[ 1.408000] IR MCE Keyboard/mouse protocol handler initialized 259f981e66eSRick Chen[ 1.412000] IR XMP protocol handler initialized 260f981e66eSRick Chen[ 1.456000] ftsdc010 f0e00000.mmc: mmc0 - using hw SDIO IRQ 261f981e66eSRick Chen[ 1.464000] bootconsole [early0] uses init memory and must be disabled even before the real one is ready 262f981e66eSRick Chen[ 1.464000] bootconsole [early0] disabled 263f981e66eSRick Chen[ 1.508000] Freeing unused kernel memory: 12076K 264f981e66eSRick Chen[ 1.512000] This architecture does not have kernel memory protection. 265f981e66eSRick Chen[ 1.520000] mmc0: new SD card at address 4567 266f981e66eSRick Chen[ 1.524000] mmcblk0: mmc0:4567 QEMU! 20.0 MiB 267f981e66eSRick Chen[ 1.844000] mmcblk0: 268f981e66eSRick ChenWed Dec 1 10:00:00 CST 2010 269f981e66eSRick Chen/ # 270f981e66eSRick Chen 271f981e66eSRick Chen 272f981e66eSRick Chen 273f981e66eSRick ChenTODO 274f981e66eSRick Chen================================================== 275f981e66eSRick ChenBoot bbl and riscv-linux via U-Boot on AE350 board 276