ARM-linux与跨工具链问题

ARM-linux与跨工具链问题,linux,embedded,kernel,arm,toolchain,Linux,Embedded,Kernel,Arm,Toolchain,我的手臂工具链可能有问题,但可能还有其他问题我做错了。我使用三星s3c2440 ARM9 uC制作了中国制造的开发板。我将Ubuntu x86与本机gcc(4.3.3)和交叉编译版本arm unknown linux uclibc gcc(crosstool-NG-1.3.2)4.3.2一起使用 我学习了来自美国的教程 并为该板使用了Leshak的内核补丁。问题是他的二进制文件工作得很好,而我的却不 我通过RS232(串行端口)与主板通信,并且在目标Linux上配置了串行终端。我使用Leshak

我的手臂工具链可能有问题,但可能还有其他问题我做错了。我使用三星s3c2440 ARM9 uC制作了中国制造的开发板。我将Ubuntu x86与本机gcc(4.3.3)和交叉编译版本arm unknown linux uclibc gcc(crosstool-NG-1.3.2)4.3.2一起使用

我学习了来自美国的教程 并为该板使用了Leshak的内核补丁。问题是他的二进制文件工作得很好,而我的却不

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

qq2440> setenv bootargs 'noinitrd root=/dev/mtdblock2 rootfstype=jffs2 rw console=ttySAC0,115200'
对于target,我使用香草Linux源代码版本2.6.29,以及由Leshak创建的补丁。我不相信Linux会正式支持它,因为它不是主流产品

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

你知道我下一步该怎么做吗

谢谢和问候


克里斯

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

听起来像是在谈论一个串行端口,一旦控制权从uboot传递到内核,它似乎就在给出垃圾。我理解对了吗

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

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

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

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


你可能想仔细检查你的工具链的末端与你的董事会的期望值。一些ARM/XScale处理器可以在软件中配置为big-endian或little-endian,因此可能值得仔细检查。

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

picocom-b 115200/dev/ttyS0——发送命令“sx-vv”

  • 只需启用内核的调试构建[在构建uImage时],这样就可以更清楚地了解场景[因为所有的printk都将被启用,这会使您的启动速度有点慢]

  • 您是否可以检查您是否将正确的参数传递给UART,即串行端口名称、波特率等。这将由电路板制造商三星提供

  • WRT网络而不是DHCP您可以只为您的系统分配一个静态ip地址,因为DHCP进程可能仍然没有打开

  • 另外一个更好的选择是使用NFS,但这取决于您的选择和应用程序的用途。要使用NFS,您的网络应该处于启动和运行状态,并且您的文件系统应该是共享的

  • 正如retracile已经指出的,“Endianness”可能是一个值得研究的点

    您可以参考可能会帮助您的链接,因为它是特定于S3C2440的

    希望这有帮助


    -hjsblogger

    您可能需要发布一些实际的终端输出以获得有用的反馈。您是否获得了要加载和引导的预构建映像?如果是这样的话,试着用你的工具链构建一个演示应用程序,并用预构建的图像运行它。如果一个简单的测试应用程序没有运行,那么工具链设置就有问题,你的图像可能没有正确构建;您可能需要检查特定于体系结构的不一致性,您可能应该有某种类型的/var/log/boot,您应该将输出显示给它。@simon:将编译一些简单的测试应用程序(如led测试)用我的工具链看看它works@simon:我一回到家就会添加一些输出,告诉您关于uboot将控制传递到内核的正确信息。内核命令行看起来不错。我使用相同的配置。内存布局正确。回家后我会检查endiannes的设置,并会让您知道。