我在我的项目中使用 PIC 微控制器。现在我想转向基于 ARM 的控制器。我想使用 Linux(使用 C)启动 ARM。但我不知道如何开始使用 Linux。哪个编译器最好,我需要学习的所有东西都像很多困惑。你们能帮我吗?我的项目通常包括UART、IIC、LCD等。我没有使用任何 RTOS。你们能帮帮我吗?
对不起,我的英语不好
我在我的项目中使用 PIC 微控制器。现在我想转向基于 ARM 的控制器。我想使用 Linux(使用 C)启动 ARM。但我不知道如何开始使用 Linux。哪个编译器最好,我需要学习的所有东西都像很多困惑。你们能帮我吗?我的项目通常包括UART、IIC、LCD等。我没有使用任何 RTOS。你们能帮帮我吗?
对不起,我的英语不好
一旦你在设备上安装了像 Linux 这样的重量级操作系统,它所提供的硬件的抽象级别使得它在很大程度上与芯片是什么无关。如果您想专门了解 ARM,使用 Linux 是一种避免这种情况的方法!
此外,从 PIC 到 ARM + Linux 的飞跃是巨大的。Linux 不会因为少于 4Mb 或 RAM 以及更多的非易失性存储而起床——这是最低限度的要求。ARM 芯片涵盖的范围很广,低端部分甚至无法支持 Linux。为了使 Linux 有价值,您需要一个支持 MMU 的 ARM 部件,其中不包括大量的 ARM7 和 Cortex-M 部件。
ARM 有很多更小的操作系统,它们可以让您执行高效(和硬实时)调度和 IPC,占用空间非常小。它们的范围从简单的调度内核(例如 FreeRTOS)到具有标准设备支持和网络的更完整的操作系统(例如 eCOS)。即使您使用简单的调度程序,也有很多库可用于支持网络、文件系统、USB 等。
关于编译器的问题的答案几乎可以肯定是 GCC - 这是构建 Linux 的编译器。您将需要一个交叉编译器来构建内核本身,但如果您确实有一个资源充足的 ARM 平台,那么一旦您在其上运行 Linux,您的目标就可以在本地托管一个编译器。
如果你真的想在 ARM 上使用 Linux 而不是我所有的建议,那么成本最低、工作量最小的方法可能就是使用 Raspberry Pi。它是一个基于 ARM11 的主板,开箱即用地运行 Linux,得到越来越广泛的支持,并且可以超频到 900MHz
您也可以尝试使用 Beagle Bone 开发板。首先,它几乎没有 UART I2C 等功能,您也可以尝试为硬件开发设备驱动程序模块。
许多供应商都提供了 ARM Linux 编译器和构建工具链。以下是我知道的您的选择:
1.ARM自己以他们的产品DS-5的形式;
2. Codesourcery 现在被 Mentor graphics 收购。在此处查看获取和安装 ARM linux 的 codesourcery 工具链的一些说明
3.首先开始使用ARM(C,汇编)编程我发现这个Windows-Cygwin版本的ARM linux工具链非常有帮助。在这里。这些是在 Windows 上的 Cygwin(Posix shell 层)下工作的预构建可执行文件。
4.另一种选择是在 Linux 上为您选择的 ARM 目标交叉编译 gcc/g++ 工具链。搜索和网络将提供有关如何完成的信息。但这可能是一个稍微复杂且冗长的过程。
享受 ARM'ing。
首先,你应该问问自己是否真的需要编写汇编语言,在生成优化代码时,大多数现代编译器都很难被击败。
然后,如果您确定确实需要它,您可以使用内联汇编器让自己的生活更轻松,并让编译器为您编写胶水代码,如本维基百科文章所示。
然后要使用的编译器:对于免费编译器,实际上只有两种选择:gcc 或clang。
还有一个来自arm的非免费工具链,当我 5 年前最后一次尝试时,它生成的代码比当时的 gcc 快了大约 30%。从那以后我就没有使用过它。这个编译器的最新版本可以在这里找到
您还可以在.s
文件中编写独立的汇编代码,gcc 和 clang 都可以像.s
编译or文件.o
一样编译。.c
.cpp
如果您使用的是基于 STM32 的微控制器,则需要安装CMSIS和 GNUarm-non-eabi-gcc
包。然后你需要编写自己的 makefile 来将你的 c 代码传递给 arm gcc 编译器。
对于编程步骤,您需要安装 openocd 并为您的特定程序员配置它。您可以在我的博客http://bijan.binaee.com/index.php/2016/04/14/how-to-program-cortex-m-under-gnulinux-arch/上找到有关如何执行此操作的完整说明 在我的GitHub 存储库中。
我将 vim 与 CTags 一起使用,但如果您需要更简单的文本编辑器,则可以将 gEdit 与 Shortcut 插件一起使用。