标签: mips

如何在 RAM 中使用 rootfs 启动 Linux?

rootfs 是一个 squashfs 映像,我的引导加载程序正在将它加载到 SDRAM 中的某个地址。我需要将哪些参数传递给内核,以便它可以从那里挂载 rootfs?Squashfs 支持是内置的,并且已经可以与

root=/dev/mtdblock2 rootfstype=squashfs  
Run Code Online (Sandbox Code Playgroud)

用于从闪存启动。

编辑:这是一个基于 MIPS 的嵌入式设备,使用自定义引导加载程序。通常情况下,bootloader 将压缩后的内核从 flash 中提取到 SDRAM 中,然后内核将 /dev/mtdblock2 作为 rootfs 挂载。我正在尝试改进引导加载程序,以便它可以将映像下载到其 RAM 并在不写入闪存的情况下启动。

我不知道如何让 Linux 在 RAM 中挂载一个文件系统映像作为 rootfs。

linux embedded mips

19
推荐指数
1
解决办法
3万
查看次数

如何调试无法绑定到 Linux 上的设备的驱动程序?

我想弄清楚为什么以下设备未在我的Creator CI20上设置为其驱动程序。作为参考,我使用的是 Linux 内核 v4.13.0 并在本地进行编译:

make ARCH=mips ci20_defconfig
make -j8 ARCH=mips CROSS_COMPILE=mipsel-linux-gnu- uImage
Run Code Online (Sandbox Code Playgroud)

从正在运行的系统中,我可以看到:

ci20@ci20:~# find /sys | grep rng
/sys/firmware/devicetree/base/jz4780-cgu@10000000/rng@d8
/sys/firmware/devicetree/base/jz4780-cgu@10000000/rng@d8/compatible
/sys/firmware/devicetree/base/jz4780-cgu@10000000/rng@d8/name
/sys/bus/platform/drivers/jz4780-rng
/sys/bus/platform/drivers/jz4780-rng/bind
/sys/bus/platform/drivers/jz4780-rng/unbind
/sys/bus/platform/drivers/jz4780-rng/uevent
Run Code Online (Sandbox Code Playgroud)

所以设备在运行时被内核看到,现在缺少的部分是为什么驱动程序从未绑定?我会期待这样的事情:

/sys/bus/platform/drivers/jz4780-rng/100000d8.rng
Run Code Online (Sandbox Code Playgroud)

我确实找到了其他一些解释如何调试正在运行的系统的帖子,例如:

虽然这些帖子上的信息是准确的,但对我来说并不是很有帮助。由于我在本地构建我的内核(我printkjz4780-rng驱动程序的探测功能中添加了),我的问题是:

  • 我应该在编译时打开什么选项,以便内核打印有关其未能为jz4780-rng驱动程序调用探测函数的准确信息?
  • 特别是如何打印已测试总线/驱动程序的完整列表driver_probe_device

printk可以在代码中的任何地方添加来调试它。问题是:哪个函数正在遍历设备树并调用probe/init 函数?

以供参考:

$ dtc -I fs -O dts /sys/firmware/devicetree/base | grep -A 1 rng
              rng@d8 {
                      compatible = "ingenic,jz4780-rng";
              };
Run Code Online (Sandbox Code Playgroud)

兼容字符串声明为:

cgu: jz4780-cgu@10000000 {
    compatible = …
Run Code Online (Sandbox Code Playgroud)

linux drivers devices mips device-tree

10
推荐指数
1
解决办法
5175
查看次数

寻找基于 ARM 或 MIPS 的计算机(上网本或类似尺寸)来玩

我很无聊,想玩上网本或其他小型电脑。任何人都可以推荐一些东西吗?

要求:

  1. ARM 或 MIPS CPU
  2. 可以运行 Windows CE 6 和/或 Linux(最好是双启动)
  3. Linux 发行版必须是成熟的(对于架构,即没有单用户玩具 GUI)
  4. 成本不到 400 欧元(虽然很酷的机器可能会花费更多)
  5. 无线局域网,任何速度
  6. USB 端口,1.1 或 2.0
  7. SD 读卡器会很好,但不是必需的
  8. SIM 卡插槽和内置 3G 会很好,但不是必需的
  9. 如果上网本/笔记本电脑应该在盖子合上时运行

arm laptop mips

7
推荐指数
2
解决办法
3491
查看次数

如何在 Playstation 2 上安装 Linux

想了解游戏开发?您是 Linux 爱好者,希望测试“Linux 可运行于一切”的说法吗?也许您是一名软件开发人员,希望针对多种架构进行发布,并且您手头没有另一台 MIPS Little Endian 机器来测试您的程序。无论您的情况如何,在 Playstation 2 上安装 Linux 的理由之多令人惊讶,即使在它发布 16 年后(男孩,我突然觉得自己老了。),但同样令人惊讶的是缺乏有关它的文档或如何安装它。

不要误会我的意思,如果您想在带有网络适配器和 IDE 硬盘的胖 PS2 上使用原始的 Sony Linux Kit,或者其中一个更新的开源版本,您可以找到大量信息。然而,这需要购买一些东西,而且可能相当昂贵,尤其是在索尼 Linux 套件本身方面。本指南将介绍有关 PS2 原生硬件的一些基础知识,以及它的硬件兼容性,然后我们将继续介绍如何在更多种类的 PS2 上安装 Linux。

PS2用的是什么CPU?

PS2 使用单核“情感引擎”CPU,原始胖型号的频率为 295MHz,较新的超薄型号的频率为 299MHz。情感引擎是一个 64 位 MIPS Little Endian CPU,支持 128 位地址。

PS2有多少内存?

它有 32MB RDRAM 和 4MB eDRAM。

它有什么样的GPU?

PS2 使用主频为 147.4MHz 的“图形合成器”GPU,能够以 32 位颜色以 60Hz 输出高达 1920x1080 的图形。

它支持什么外部存储?

未经修改的 PS2 支持音频-CD、视频-DVD 和最多两张最大 128MB 的存储卡,用于保存游戏。使用软件漏洞修改的 PS2 还支持两张最大 128MB 的存储卡,用于一般文件管理和存储,以及通过 uLaunchELF 等第三方文件管理器浏览数据 CD/DVD 上的文件,以及一些 USB 1.1 磁盘,通过软件支持在较新的超薄型号上提供对 USB …

linux debian mips

7
推荐指数
1
解决办法
2万
查看次数

在 X86 机器上生成 MIPS 架构汇编代码

当我运行我的 C 程序时,我需要在我的机器上生成MIPS特定的代码。当我简单地奔跑时,

gcc -O2 -S -c hello.c
Run Code Online (Sandbox Code Playgroud)

在我的系统上,我得到了hello.s它似乎生成了一些汇编代码,但它似乎不是MIPS特定的代码。hello.s文件内容如下。

    .file   "hello.c"
    .section    .rodata.str1.1,"aMS",@progbits,1
.LC0:
    .string "Hello world"
    .text
    .p2align 4,,15
.globl main
    .type   main, @function
main:
.LFB11:
    .cfi_startproc
    movl    $.LC0, %edi
    xorl    %eax, %eax
    jmp printf
    .cfi_endproc
.LFE11:
    .size   main, .-main
    .ident  "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-4)"
    .section    .note.GNU-stack,"",@progbits
Run Code Online (Sandbox Code Playgroud)

如何在我的机器上生成MIPS特定代码?

我的机器详细信息如下。

arch
x86_64
Run Code Online (Sandbox Code Playgroud)

compiling cross-compilation mips assembly

6
推荐指数
1
解决办法
1万
查看次数

来自在 qemu 上运行的 quest 操作系统的网络和 Samba

我正在尝试在大端系统上测试一些软件以确保兼容性。我的计划是在 Ubuntu 12.04 上使用 qemu 来模拟 MIPS 系统。到目前为止,我已经能够成功创建任务系统,但我还无法将其与主机系统联网。我可以从访客系统访问外部世界(例如 wget 或 apt-get),但我尝试设置 samba 失败了。

据此在 QEmu 1.1 及更高版本中,网桥助手可以为您设置 tun/tap,而不需要额外的脚本。我正在尝试使用它,因为我见过不同版本的脚本。现将qemu-system-mips -version情况通报如下:

QEMU emulator version 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2.1), Copyright (c) 2003-2008 Fabrice Bellard
Run Code Online (Sandbox Code Playgroud)

我从 1.4.1 源代码编译并使用apt-get. 两者都报道了同样的事情。我假设我有 1.1 或更高版本,尽管有什么-version告诉我的。无论如何,下一个指令是打开默认网络助手的 setuid 属性:

sudo chmod u+s /usr/local/libexec/qemu-bridge-helper
Run Code Online (Sandbox Code Playgroud)

接下来,我bridge.conf/etc/qemu/和 中创建了一个文件/usr/local/etc/qemu-rw-r--r--获取权限。该文件的内容是:

allow br0
Run Code Online (Sandbox Code Playgroud)

如果我使用以下命令启动 QEmu:

qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda disk.img -append "root=/dev/sda1 console=ttyS0" -nographic -net nic -net bridge,br=br0 -smb …
Run Code Online (Sandbox Code Playgroud)

networking samba bridge qemu mips

5
推荐指数
1
解决办法
4422
查看次数

使用 kexec 时如何将 initrd 加载到内存中以传递给内核?

由于 MIPS 端口kexec不支持该--initrd参数,我正在寻找模仿该功能的变通方法。据Linux的/ MIPS维基,MIPS内核的支持rd_startrd_size内核的命令行参数用于指定的initrd的位置。我想知道是否可以将 initrd 加载到内存中并将其传递给内核参数?

如果可能,我应该在内存中的哪个位置加载文件以及如何加载它?我想将内核和 initrd 连接到一个文件中,但是如何获取kexec加载新内核的地址?

一点背景知识:我有一个WNDR3700 wifi 路由器,它运行带有 kexec 内核的OpenWrt。我的目标是引导到存储在 USB 上的普通 OpenWrt 内核以简化升级。问题(目前)是 usb 模块没有构建到内核中,而是作为可加载的内核模块提供。我可以使用嵌入式 initramfs 从 USB 引导到另一个内核,但是使用 initramfs 需要我编译内核,不是吗?那么,或者,我是否可以将 initramfs/initrd 嵌入到现有的内核二进制文件/elf(没有任何 ramdisk)中并避免重新编译内核?

此外,显然将 usb 模块编译到内核中需要重新编译内核,所以这不是一个选项。

linux embedded initrd mips

5
推荐指数
1
解决办法
1341
查看次数

Ralink SoC 的 GCC(工具链) - 找不到 ELF 和语法错误

我买了一个中国的P2P摄像头,没有MJPEG流,所以想编译mjpg-streamer一下。这是我的 CPU 信息:

# cat /proc/cpuinfo 
system type             : Ralink SoC
processor               : 0
cpu model               : MIPS 24K V4.12
BogoMIPS                : 239.61
wait instruction        : yes
microsecond timers      : yes
tlb_entries             : 32
extra interrupt vector  : yes
hardware watchpoint     : yes
ASEs implemented        : mips16 dsp
VCED exceptions         : not available
VCEI exceptions         : not available

# uname -a
Linux (none) 2.6.21 #878 Tue Oct 29 09:53:25 CST 2013 mips unknown
Run Code Online (Sandbox Code Playgroud)

我尝试将Sourcery CodeBench 用于 MIPS …

gcc cross-compilation mips

5
推荐指数
1
解决办法
4447
查看次数

如何在busybox上使只读文件系统可写?

我想更改路由器上的一些文件。首先,我可以更改/var 中的所有内容,但我想更改/etc/fstab。当我尝试更改它时,我收到一条错误消息,指出文件系统是只读的。

路由器内的 Busybox,命令有限,所以我已经得到了用于 mips http://www.busybox.net/downloads/binaries/1.19.0/busybox-mips 的busybox 二进制文件,并通过 tftp ( tftp -g -r busybox-mips my.i.p.addr)上传它,所以现在我可以使用完整的命令 ( /var/tmp/busybox-mipscommand)。

路由器(sdram)内部没有rom,或者没有其他分区。它必须与busybox有关。

# /var/tmp/busybox-mips df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 1344      1344         0 100% /

# mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
proc on /proc type proc (rw,nodiratime)
ramfs on /var type ramfs (rw)
# 



Model: 
        Airties 5021
Processor:
        BCM6332KFBG
        HS1037 P12
        994981 N1
Memory: 
        M12L64164A-7T (SDRAM)
        ANM1P02HL 1028
Run Code Online (Sandbox Code Playgroud)

filesystems busybox router mips squashfs

4
推荐指数
1
解决办法
2万
查看次数

如何从 MIPS 运行旧程序?

我有一台带有名为 atomTV 的程序的旧 PC,用于查看和从分子轨迹文件制作电影。我只有一个二进制文件,它运行的平台是 64 位 MIPS 架构,我运行的是 IRIX。我和创作者谈过,他说他失去了来源。我的 IRIX 电脑最近死机了,但我仍然想使用这个程序。可以做什么?

这些文件是 xyz、dcd、pdb 和那种类型的东西。最好,我想知道在现代 Unix/Linux 环境中运行程序的某种方式。如果重要的话,我可以访问操作系统中的所有旧文件。

当我尝试在 Linux 中运行该程序时,我遇到了错误的 ELF 类型错误。

software-installation elf portability mips irix

2
推荐指数
1
解决办法
415
查看次数

在自定义处理器上运行 linux 内核和 Ubuntu

这几乎不是一个理论问题,因为许多人已经这样做了,尽管关于底层过程的信息很少。

我正在开发一个基于 MIPS 的自定义处理器,我想在其上运行 Ubuntu。在您设计了指令集和计算机体系结构本身之后,我对接下来要做什么感到非常困惑。我需要能够运行内核和操作系统,但它们是如何联系在一起的?

目前我正在研究为 Linux 内核设计一个编译器来生成合适的汇编语言。这是一个好方法吗?之后我需要做什么?

linux kernel development mips assembly

1
推荐指数
1
解决办法
1412
查看次数