在QEMU上运行NIOS2

4

我在QEMU NIOS IP中发现了以下内容:https://wiki.qemu.org/Documentation/Platforms/Nios2 我从英特尔的网站上下载了他们的工具链:https://www.intel.com/content/www/us/en/programmable/products/boards_and_kits/dev-kits/altera/kit-niosii-2s60.html 我有一些问题:

  1. QEMU IP中的NIOS2是否与英特尔的NIOS IP匹配?
  2. 您使用哪个工具链来编译和在QEMU中运行它?它是否与英特尔网站提供的工具链相同?
  3. 如何在NIOS上生成固件代码并在QEMU上运行。维基百科上说: qemu-system-nios2 -M 10m50-ghrd -kernel -dtb -nographic
  4. 如何为其生成dtb文件?
  5. 我们需要采用由quartos/EDS创建的产品以运行QEMU吗,还是只需使用编译的二进制文件?(DTB-板级规格?)
  6. 我们需要使用特定的QEMU参数/参数来运行它吗?
  7. 您是否有使用其外设的NIOS代码示例?

基本上,我没有找到关于如何在QEMU中使用NIOS2的任何文档/示例。您能提供一些额外的信息吗? 即使是一些基本的“hello world”(编译并在QEMU中运行)也是很好的......


我想尝试使用这个来调试一些东西,但是很难从旧链接中找到工具链。这里有一些信息:https://rocketboards.org/foswiki/Documentation/NiosIILinuxUserManual 但是Sourcery CodeBench Lite似乎现在在美国不可用。 - fuzzyTew
https://rocketboards.org/foswiki/Documentation/AlteraMAX1010M50RevCDevelopmentKitLinuxSetup 似乎链接到了一个10m50-ghrd的Linux镜像文件,我还没有尝试过。直接链接是 https://rocketboards.org/foswiki/pub/Documentation/AlteraMAX1010M50RevCDevelopmentKitLinuxSetup/vmlinux_rootfs.pof - fuzzyTew
同样的链接(我粘贴的第二个)还描述了相关的 .dtb 文件所在位置。它位于 https://github.com/altera-opensource/linux-socfpga 的 ACDS15.0_REL_GSRD_RC2 标签中的 arch/nios2/boot/dts/10m50_devboard.dts 。我猜测 Github 不显示该标签,因为该标签非常古老。 - fuzzyTew
这个工具可以在pof文件中显示tvmlinux.hex文件:https://github.com/tomverbeure/aha363/blob/master/tools/pof_tool.py - fuzzyTew
这是应该可以工作的东西:https://docs.zephyrproject.org/1.13.0/boards/nios2/qemu_nios2/doc/board.html - fuzzyTew
显示剩余5条评论
1个回答

2
更新:这个问题的最新回答可能是分析Linux控制台Nios测试,网址为https://gitlab.com/qemu-project/qemu/-/blob/master/tests/acceptance/boot_linux_console.py#L1029(当然也可以联系维护者)。来自2018年12月14日的日历内核映像运行良好。看起来所有这些都可以通过buildroot完成。
我的评论开始产生了成果,所以我将尝试整理出一个部分答案。我还没有让它工作,但也许对于那些可能会进一步工作的人来说这可能有帮助。
注意:如果您只想运行单个nios2二进制文件,则可以直接将其传递给qemu-nios2qemu-system-nios2用于运行Linux。
  1. 我认为qemu的行为是功能而不是知识产权。如果不匹配,那将是一个错误。我不知道它是否如此。在此提到知识产权,请记住,开源项目通常由少数脆弱的关心开发者运行,如果知识产权的所有权受到挑战,他们通常没有法律团队。如果有问题,最好将相关方引荐给https://eff.org/,他们经常在法律上代表这些事情。
  2. 我预计任何nios2工具链都可以工作。这里有一个工具链,来自快速的互联网搜索,让我找到了bootlin.com。似乎包括如何从源代码复制的说明。
  3. 见第4点
  4. 以下是我目前为固件生成做的:
# set up a toolchain (note: this old step is redundant with buildroot, lower down, which also installs a toolchain and even builds a kernel if asked)
wget https://toolchains.bootlin.com/downloads/releases/toolchains/nios2/tarballs/nios2--glibc--stable-2020.08-1.tar.bz2
tar -jxvf nios2--glibc--stable-2020.08-1.tar.bz2

# get kernel sources (pass --depth 1 to speed up)
git clone https://github.com/altera-opensource/linux-socfpga.git

# build kernel and device tree
cd linux-socfpga
make ARCH=nios2 CROSS_COMPILE=$(pwd)/../nios2--glibc--stable-2020.08-1/bin/nios2-linux- 10m50_defconfig 10m50_devboard.dtb vmlinux -j5
cd ..

# kernel is now at linux-socfpga/vmlinux
# device tree is now at linux-socfpga/arch/nios2/boot/dts/10m50_devboard.dtb

# set up buildroot to build a root image
git clone https://github.com/buildroot/buildroot.git
cd buildroot

# configure for qemu nios2
make qemu_nios2_10m50_defconfig 

# build root image
PERL_MM_OPT= LDFLAGS= CPPFLAGS= LD_LIBRARY_PATH= make
cd ..

# rootfs images are now in buildroot/output/images/
  1. 很抱歉,我只是一位访客,不知道quartos/eds是谁,也不知道你所指的编译二进制文件是什么。
  2. qemu命令行看起来是这样的:qemu-system-nios2 -M <机器> -kernel <内核文件> -dtb <设备树文件> <根文件系统镜像文件>。示例机器为10m50-ghrd,我们在上面构建了内核,可能只有这一个。
  3. 还没有!如果我有进展,我会尽快更新这个答案。如果你有进展,也可以随时编辑它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接