【发布时间】:2011-01-12 03:15:04
【问题描述】:
这是我的第一篇文章,它涵盖了我大约一年来一直在努力工作的东西。
基本上它归结为以下几点:我有一个 newlib 的副本,我正在尝试在 LPC2388(NXP 的 ARM7TDMI)上工作。这是在使用 arm-elf-gcc 的 linux 机器上
我的问题是,我一直在看很多关于移植 newlib 的教程,他们都在谈论存根(如退出、打开、读/写、sbrk),我有一个漂亮的如何实现所有这些功能的好主意。但是我应该把它们放在哪里?
我有来自 sources.redhat.com/pub/newlib/newlib-1.18.0.tar.gz 的 newlib 发行版,在四处寻找后我发现“syscalls.c”(在 newlib-1.18.0/newlib/libc /sys/arm),其中包含我必须更新的所有存根,但它们都填充了看起来相当完整的代码(NOT 似乎在没有 crt0.S 的情况下工作,本身不适用于我的芯片)。
我是否应该自己清除这些函数并重新编写它们?或者我应该把它们写在别的地方。我是否应该在 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 的 * 问题了解了所有这些,并查看了一些不同的教程(如 wiki.osdev.org/Porting_Newlib ),但他们也因告诉我实现存根而没有提及在哪里、谁来实现,什么,何时,或如何!
【问题讨论】:
-
酷项目!这个关于软件分发和链接到现有库的问题非常适合 Stack Overflow,但您应该查看 electronics.stackexchange.com 以获得更多涉及项目电子/固件方面的问题的答案。
-
感谢您的提醒,因为我一直在使用 PIC、msp430 和 ATMel 微处理器,所以我实际上了解很多固件/电子产品,但我从来不需要做裸机arm before,这涉及到更多的软件开发。就这些事情而言,我已经设法弄清楚了很多,但我感到震惊的是,有多少材料只是说“去下载 Keil 软件套件,然后……”如果你这样做,这似乎是一个糟糕的解决方案重新规划开源。