第一次接触的开发板是Intel的8051,自己买个DIP封装的芯片,加个晶振和复位就是个最小系统,非常适合入门。然后是STM32系列的开发板,运行一些RTOS系统,非常适合做一些小玩具。再往后接触的开发板就是ARM架构的了,国内的ARM开发板多数都被Samsung的芯片给占了,TI、NXP的芯片相比之下都太小众了,不容易形成大的社区群体;三星的ARM芯片用于开发板的比较大众的有:
ARM架构 |
ARM7 |
ARM9 |
ARM11 |
Cotex-A8 |
Cotex-A9 |
对应芯片 |
S3C44B0 |
S3C2440 |
S3C6410 |
S5PV210 |
Exynos4412 |
如果从资料的完整度和用户数量来看,S3C2440肯定是排在第一位的,当然对于现在Android火热的环境下,S3C6410作为可以最低运行Android系统的开发板也还有市场,目前Exynos4412是开发板市场主流。
下图是ARM处理器架构发展的天梯图,由于图片的年代比较久远,没有标出A53、A72等架构,仅供参考。
前面说了我对市面上流行的开发板的一些认识,都是物理意义上的开发板,而我们这一期要操作的是使用QEMU模拟一个ARM开发板。
在系统环境下输入: qemu-system-arm -M help 可以查看QEMU支持的ARM平台的开发板的型号,如下图所示。
结合一下网上的资料后发现 有关 vexpress-a9 的资料和讨论最多,所以我们选择这个开发板来进行模拟。
vexpress系列(全称Versatile Express Family)是ARM自己推出的开发板,主要是方便SOC厂商设计、验证和测试自己的SOC芯片设计用的,官方的解释是:
ARM® Versatile™ Express development boards are the ideal platform for accelerating the development and reducing the risk of new SoC designs. The combination of ASIC and FPGA technology in ARM boards delivers an optimal solution in terms of speed, accuracy, flexibility and cost.
更多相关内容请参考:https://developer.arm.com/products/system-design/versatile-express-family
虽然我们要用软件模拟运行这个开发板,但硬件结构还是要了解的,这样才能做到知己知彼。由于vexpress的面向用户是SOC设计者,所以设计方法也很另类,采用了主板+子板的设计结构,主板提供各种外围接口,子板提供CPU运算。
主板 Express uATX(或 V2M-P1)是 Versatile Express 系列中的第一款可用主板。它嵌在 uATX 大小的两件式漂亮塑料外壳内。活动式壳盖可以露出主板以便安装子板和连接测试设备。所有连接器和控制器都安装在后面板上。此主板有两组子板牛角连接器。它必须始终与处理器子板 Express 或软宏模型子板配对使用以提供主系统处理器。可以添加可选的逻辑子板 Express 板以提供自定义 IP 开发和验证功能。
处理器子板 Express 板在 Versatile™ Express 开发系统中提供主系统 CPU。处理器子板 必须与提供电源、配置和外设连接的主板 Express uATX 板配对使用。处理器子板 Express 板与 Versatile 产品系列中的前代产品的不同之处在于,其内存和 LCD 控制器等高带宽外设是与 ARM 处理器一起在测试芯片中实现的。这会显示提升性能,使系统更适合进行软件基准测试并完全能运行 Debian Linux 等桌面操作系统。
更多的详细内容请参考:
主板:
https://www.arm.com/zh/products/tools/development-boards/versatile-express/motherboard-express.php
处理器子板:
https://www.arm.com/zh/products/tools/development-boards/versatile-express/coretile-express.php
文档下载:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.boards/index.html
系统原理图:
虽然看上去比较复杂,但是如果我们软件模拟的话就把它当成一个整体就是了。运行系统后和正常的开发板没什么区别。下面我们来实际动手用QEMU模拟运行一下vexpress-a9开发板。
由于我们还没有编译和开发板相关的程序,所以这里先使用一个我编译好的U-Boot程序作为载体运行一下看看效果,先对模拟器模拟开发板有一个感性的认识,安装好qemu软件后,在github上的test目录下 https://github.com/aggresss/LKDemo 有u-boot.sh和u-boot两个文件。将这两个文件放到同一个目录下然后运行 ./u-boot.sh 就可以启动开发板了,下图是运行后的输出信息。
QEMU的相关参数说明请参考: https://qemu.weilnetz.de/doc/qemu-doc.html