xref: /openbmc/u-boot/doc/README.ae350 (revision 328e3f8a706931e1a8f76adfdc015ad76cbeb83c)
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