我发现在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我有几个问题:
- QEMU的NIOS2 IP是否匹配intel的NIOS IP ?
- 你在QEMU中编译和运行它的工具链是什么?是否与intel网站提供的工具链相同?
- 如何通用固件代码并在NIOS上通过QEMU运行。维基百科上说:qemu-system-nios2 - m10m50 -ghrd -kernel -dtb -nographic
- 如何为它生成dtb文件?
- 我们是否需要使用quartos/EDS为QEMU的运行创建的产品,而不是编译后的二进制文件?(DTB -板规格?)
- 我们需要使用特定的QEMU参数/参数来运行它吗?你有NIOS使用其外围设备的代码示例吗?
基本上,我没有找到任何关于如何在QEMU中使用NIOS2的文档/示例。你能提供一些额外的信息吗?甚至一些基本的"hello would"(在QEMU中编译和运行)也会很棒…
UPDATE:这个问题的最新答案可能是分析https://gitlab.com/qemu-project/qemu/-/blob/master/tests/acceptance/boot_linux_console.py#L1029上的linux控制台nios测试(当然也可以联系维护人员)。从降临日历2018天14内核图像运行得很好。看起来这一切都可以用buildroot来完成。
我的评论开始有成果了,所以我将试着把部分答案放在一起。我还没有让这个工作,但也许这可以帮助其他人谁可能会工作更远。
注意:如果你只想运行一个nios2二进制文件,你可以把它直接传递给qemu-nios2
。qemu-system-nios2
用于运行linux。
- 我相信qemu的行为是功能性的,而不是知识产权的。如果不匹配就会出现bug。我不知道是否有。在这里提到IP,请记住,开源项目通常是由少数脆弱的有同情心的开发者运营的,如果知识产权的所有权受到挑战,他们通常没有法律团队。如果有问题,礼貌的做法是将相关方转到https://eff.org/,他们通常在法律上代表此类事情。
- 我希望任何nios2工具链都能工作。这是我在网上快速搜索到bootlin.com的一个工具链。似乎包括如何从源复制它的说明。
- 看到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/
- 恐怕我只是一个访客,我不知道谁是四开本/编辑本,也不知道你指的是什么编译二进制文件。
- qemu命令行显示为
qemu-system-nios2 -M <machine> -kernel <kernel file> -dtb <dtb file> <rootfs image file>
。示例机器是10m50-ghrd
,我们为它构建了上面的内核,这可能是唯一的一台。 - 没有!如果我继续讲下去,我会试着更新这个答案。如果你有进一步的了解,可以随意编辑。