README.ae350 10 KB

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