【问题标题】:ARM linux and cross toolchain issueARM linux和跨工具链问题
【发布时间】:2010-11-20 18:26:23
【问题描述】:

我的手臂工具链可能有问题,但可能还有其他问题。我有中国制造的开发板 qq2440 使用 Samsung s3c2440 ARM9 uC。我正在使用带有本机 gcc(4.3.3) 和交叉编译版本 arm-unknown-linux-uclibc-gcc (crosstool-NG-1.3.2) 4.3.2 的 Ubuntu x86

我遵循http://blog.leshak.ru/english/pages/how-to-install-u-boot-linux-2629-rootfsjffs2-busybox-1132-into-nand-qq2440/ 的教程 并为该板使用了 Leshak 的内核补丁。问题是他的二进制文件可以完美运行,而我的则不行......

我通过 RS232(串行端口)与我的开发板通信,并且我在目标 Linux 上配置了串行终端。我使用 Leshak 的 uboot 映像。要配置我的内核,我使用以下命令行:

qq2440> setenv bootargs 'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 rw console=ttySAC0,115200'

对于目标,我使用 vanilla Linux 源版本 2.6.29,带有由 Leshak 创建的补丁。我真的不相信 Linux 会正式支持它,因为它不是主流产品。

我的内核映像开始启动,但它可能会将带宽(或 CPU 频率)更改为某个非标准值(已尝试所有标准值)。而不是指示将内核加载到内存中的点,我只有垃圾。不幸的是,它可能不会完成启动过程,因为网络接口和文件系统都没有出现。所以我发现它在中间的某个地方出现了恐慌。

有什么想法我接下来应该做什么?

感谢和问候,

克里斯

【问题讨论】:

  • 您可能需要发布一些实际的终端输出以获得任何有用的反馈。
  • 您是否获得了要加载和启动的预构建映像?如果是这样,请尝试使用您的工具链构建一个演示应用程序并使用预构建的图像运行它。如果一个简单的测试应用程序没有运行,那么工具链设置有问题,你的图像可能没有正确构建。
  • Ubuntukernel 在原版内核上做了很多调整;您可能想要检查特定于体系结构的不一致,您可能应该有某种 /var/log/boot 来显示输出。
  • @simon: 将用我的工具链编译一些简单的测试应用程序(如 led 测试),看看它是否有效
  • @simon:我一回到家就会添加一些输出

标签: linux embedded kernel arm toolchain


【解决方案1】:
    1234563 /p>
  1. 您能否检查是否将正确的参数传递给 UART,即。串口名称,波特率等这将由主板制造商三星提供

  2. WRT 网络而不是 DHCP,您是否可以只为您的系统分配一个静态 IP 地址,因为 DHCP 进程可能仍未开启。

  3. 另外一个更好的选择是使用 NFS,但是是的,这取决于您的选择和应用程序的目的。要使用 NFS,您的网络应该已启动并正在运行,并且您的文件系统应该是共享的。

正如 retracile 已经指出的那样,“字节顺序”可能是一个值得研究的点!!!

您可以参考 this 链接,因为它特定于 S3C2440,因此可能会对您有所帮助

希望这会有所帮助。

-hjsblogger

【讨论】:

    【解决方案2】:

    当我从 picocom 省略 --send-cmd 时,我曾经遇到过类似的问题。这是我向 picocom 发出的命令,用于与 mini2440 进行串行 uBoot 通信。

    picocom -b 115200 /dev/ttyS0 --send-cmd "sx -vv"

    【讨论】:

      【解决方案3】:

      这里可能会发生很多不同的事情。

      听起来您在谈论串行端口,并且一旦将控制权从 uboot 传递给内核,它似乎就会产生垃圾。我理解正确吗?

      查看在内核命令行上为串行控制台指定波特率、奇偶校验等。

      哦,还有 IIRC,ARM Linux 树中有一些“early_printk”的东西可以帮助您调试串行控制台问题。 (但我会警告你——我处理这个问题已经有几年了,所以我的记忆很模糊。)

      仔细检查内存地址布局(所有各种设备的位置)是否与您的电路板匹配。 (我认为这可能不是问题,但为了完整起见,我想提一下。)

      你说你有一个可以正常工作的二进制内核;将该内核的内核配置与您用于构建内核的配置进行比较。调查每一个差异,尤其是 ARM 特有的差异。

      您可能需要仔细检查工具链的字节顺序与电路板的预期。 一些 ARM / XScale 处理器可以在软件中配置为大端或小端,因此可能值得仔细检查。

      【讨论】:

      • 关于 uboot 将控制权传递给内核的正确方法。内核命令行看起来不错。我正在使用相同的配置。内存布局正确。回家后我会检查字节序设置,并通知您。
      猜你喜欢
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-17
      • 2018-08-21
      相关资源
      最近更新 更多