microblaze运行linux方案探索

方案背景

microblaze上跑linux的方案,包括如何启动和固化

解决方案(1)

1 相关技术

1.1 microblaze运行linux可行性

  1. 主要开发文档
    ug1144

  1. microblaze官方wiki

介绍mmu,处理器结构,microblaze with linux

原文链接

  1. 4种启动方案与一种实现案例(博客)

MicroBlaze处理器的PetaLinux操作系统移植:PetaLinux有4种启动方案:XMD下载启动、TFTP网络下载启动、Flash启动和SysACE CF卡启动。其中,XMD和TFTP网络下载启动方案,在每次系统上电后都必须重新下载,适用于系统调试;Flash启动方案在系统上电后自动从Flash中读取配置文件,但Flash烧写速度较慢,更改系统配置较为不便。因此,本系统选用SysACECF卡启动方案..

  1. mircoblaze的vivado搭建官方指南

相关文档大全

《ug940》

1.2固化bitstream文件?

1.传统方法对Bitstream进行flash固化

需要说明的是,下载完比特流后,如果开发板断电,程序会丢失。如果想要程序断电不丢失的话,需要将程序固化至开发板中,这个需要在嵌入式 SDK 软件中完成, ZYNQ 芯片无法单独固化比特流文件(PL的配置文件)。这是由于 ZYNQ 非易失性存储器的引脚(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的专用引脚, 这些非易失性存储器由 PS 的 ARM 处理器进行驱动,需要将bit流文件和elf文件(软件程序的下载文件) 合成一个 BOOT.BIN,才能进行固化, 因此需要学习 ZYNQ 嵌入式 SDK 的开发流程。

  1. 尚不明确micrblaze软核是先进行固化后在完成镜像移植启动,还是在镜像移植

2 相关设计参考

2.1 启动(使用flash完成操作系统启动)

参考启动流程:

参考文章MicroBlaze 上的嵌入式软件堆栈概述:
MicroBlaze 的软件堆栈不像Xilinx的其他嵌入式设备那样从加固的BootROM开始。相反,初始引导代码必须包含在FPGA比特流中,通常通过初始化映射到MicroBlaze引导向量的一小块 BlockRAM来实现。对于某些系统,整个应用程序可能会驻留在这个BlockRAM 中。对于更复杂的系统(例如Linux),可以在BlockRAM中初始化第一阶段引导加载程序。Xilinx 提供了一个称为 FS-Boot的第一阶段引导加载程序,它在启动时执行并负责将第二阶段引导加载程序(通常是U-Boot,但可能是最终应用程序)从非易失性存储器复制到 MicroBlaze可以从中执行的存储器中,通常为DDR。FS-Boot 至少需要 8KB 的 BlockRAM。

有关创建 FS-Boot 并将其合并到比特流中的更多信息,请参阅PetaLinux 工具指南。

microblaze启动手册说明—《ug11440》:

flash做uboot—《ug1144》:

zynq支持的flash容量

2.2 BD设计结构参考

2.3 设计方案猜想

通过petalinux配置位于flash启动镜像并封装,使用jtag完成镜像启动?

3 其他注意点

3.1 ug1144,P17

解决方案(2)—还未研究

相关技术

1 uclinux

运行uclinux嵌入式系统uclinux表示micro-control linux

在Microblaze处理器上进行uclinux移植
除了uclinux,在单片机上可以移植哪些版本的linux

无名无名 (提问者)2017-10-09
也就是说,在目前的嵌入式市场里面,不带mmu的系统已经占比特别少了,对吗?

jiangtao9999
jiangtao9999 (作者) 回复无名 (提问者)2017-10-12
所以我说放弃单片机这个概念。因为你用的东西也不一定就真的是通用 CPU 但也不一定就真的是几千个晶体管的只能当作 DPS 看待的玩意。现在技术提升了,很多功能溢出的 CPU 也不贵。很多人就会倾向于选择通用设备而方便开发。而且现在这种产品的需求量也是很大的,功能残缺的东西,也大有人用。这些东西,有的时候不是再跑个 uclinux 去浪费资源,而是直接写成运行功能的代码,不用操作系统直接运行的了。

怎么说呢。现在定义上,只要能实现一个芯片搞定,就叫单片机。但是随着技术发展,很多东西都能封装到一个芯片上,但是实际上内部设计,还是不同功能独立区分的。所以相对来说 ARM 更多的类似于多个芯片集成封装。更何况 ARM 内部集成的电路还有更多的功能。而不是传统的那种真的只有一个芯片设计的 CPU 了。你可以理解单片机就是为了一件任务做设计的,没有高级系统。而 ARM 跑 Linux ,属于通用 CPU 运行通用型操作系统。

印象里当初 uclinux 其实主要用在没有 mmu 的 arm 上,但是现在硬件基本都有 mmu ,甚至 arm 的 vfp/neon 都成标配了(当然也可以选择没有的,但是没有浮点运算现在这种什么都要求计算性能的地方用整数计算机很慢的)。

综上,现在最好放弃单片机这种概念了。比较容易乱。

方案

和普通单片机一样完成系统移植?


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!