gpt4 book ai didi

embedded - 将 newlib 移植到自定义 ARM 设置

转载 作者:行者123 更新时间:2023-12-01 23:11:47 39 4
gpt4 key购买 nike

这是我的第一篇文章,它涵盖了我已经尝试断断续续工作了大约一年的内容。

从本质上讲,它可以归结为以下内容:我有一份 newlib 的副本,我正试图在 LPC2388(来自 NXP 的 ARM7TDMI)上工作。这是在使用 arm-elf-gcc 的 linux 机器上

我的问题是,我一直在看很多关于移植 newlib 的教程,他们都在谈论 stub (比如退出、打开、读/写、sbrk),我有一个漂亮的关于如何实现所有这些功能的好主意。但是我应该把它们放在哪里?

我有来自 sources.redhat.com/pub/newlib/newlib-1.18.0.tar.gz 的 newlib 发行版,四处寻找后我发现了“syscalls.c”(在 newlib-1.18.0/newlib/libc 中/sys/arm) 其中包含我必须更新的所有 stub ,但它们都填充了看起来相当完整的代码(没有 crt0.S 似乎NOT 工作,which本身不适用于我的芯片)。

我是否应该自己删除这些函数,然后重新编写它们?或者我应该把它们写在别的地方。我是否应该使用我的“架构”名称在 newlib/libc/sys 中创建一个全新的文件夹并更改目标以匹配?

我也很好奇在将这样的东西作为开源项目发布后是否有适当的分发礼仪。我目前有一个脚本可以下载 binutils、arm-elf-gcc、newlib 和 gdb,并编译它们。如果我正在修改 newlib 目录中的文件,我应该提交一个我的脚本自动应用的补丁吗?或者我应该将修改后的 newlib 添加到存储库中吗?

感谢您的阅读!接下来是对我正在做的事情的更详细的分割。


对于那些想要/需要有关我的设置的更多信息的人:

我正在大致基于 Uzebox 项目 (http://belogic.com/uzebox/) 构建一个 ARM 视频游戏控制台。

我一直在做各种各样的事情,从很多不同的资源中汲取灵感,试图找出答案。你可以在这里读到我冒险的开始(sparkfun 论坛,没有人回应,因为我自己想出来了):forum.sparkfun.com/viewtopic.php?f=11&t=22072

我通过阅读有关移植 newlib 的 Stackoverflow 问题并查看了一些不同的教程(如 wiki.osdev.org/Porting_Newlib )来了解所有这些内容,但他们也告诉我要实现 stub 而没有提到在哪里,谁、什么、何时或如何!

最佳答案

But where should I put them?

您可以将它们放在您喜欢的位置,只要它们存在于最终链接中即可。您可以将它们合并到 libc 库本身,或者您可以保持通用,并将系统调用作为单独的目标特定对象文件或库。

您可能需要创建自己的特定于目标的 crt0.s 并为您的目标组装和链接它。

Quantum Leaps 的 Miro Samek 提供了关于启动和运行 GNU/ARM 开发的好教程 here .这些示例基于 Atmel AT91 部件,因此您需要了解一些关于您的 NXP 设备的信息以调整启动代码。

LPC2xxx 的现成 Newlib 移植层可用here ,但这些文件的链接似乎已损坏。 Martin Thomas 的 WinARM 中使用了相同的移植层。项目。这是 GNU ARM GCC 的 Windows 端口,但其中包含的示例是特定于目标而非特定于主机的。

您应该只需要修改 Newlib 上的移植层,因为它是目标应用程序特定的,您不需要(事实上可能不应该)将您的代码提交到项目。

关于embedded - 将 newlib 移植到自定义 ARM 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665034/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com