ARM-Linux开发和MCU开发的不同点,以及ARM-Linux的基本开发环境

这里先要做一个说明,对于ARM的应用开发主要有两种方式:一种是直接在ARM芯片上进行应用开发,不采用操作系统,也称为裸机编程,这种开发方式主要应用于一些低端的ARM芯片上,其开发过程非常类似单片机,这里不多叙述。

今天,我们将看看 ARM-Linux 开发和 MCU 开发之间的区别,以及 ARM-Linux 的基本开发环境。

1. ARM-Linux应用开发与单片机开发的区别

这里解释一下,ARM应用开发主要有两种方式:一种是直接在ARM芯片上开发应用,不使用操作系统,又称裸机编程,这种开发方式主要用在一些低端ARM芯片上,其开发过程与单片机非常相似,这里就不赘述了。

还有一种在ARM芯片上运行操作系统,硬件的运行需要编写相应的驱动程序,应用开发基于操作系统,这与微控制器的开发有很大不同。ARM-Linux应用开发与单片机开发主要有以下几点区别:

1、应用开发环境的硬件设备不同

MCU:开发板、仿真器(调试器)、USB电缆。

ARM-Linux:开发板、网线、串口线、SD卡。

对于ARM-Linux开发来说,通常没有硬件调试器,特别是在应用开发过程中,很少使用硬件调试器,程序的调试主要通过串口进行调试。但是,需要注意的是,也有用于ARM芯片的硬件仿真器,但它们通常用于裸机开发。

2.程序以不同的方式下载

MCU:仿真器(调试器)下载,或串口下载。

ARM-Linux:串口下载、tftp网络下载,或直接读写SD、MMC卡等存储设备实现程序下载。

这与开发环境的硬件设备直接相关,因为没有硬件仿真器,所以ARM-Linux开发通常不使用仿真器下载。这可能看起来很不方便,但它实际上提供了更多下载 ARM-Linux 应用程序的方法。

3、芯片的硬件资源不同

MCU:通常是一个完整的计算机系统,包括片上RAM、片上FLASH,以及UART、I2C、AD、DA等各种外设。

ARM:通常只有CPU,需要外接电路提供RAM才能正常运行,外接电路提供FLASH和SD卡等存储系统镜像,通过外接电路实现各种外设功能。由于ARM芯片的处理能力强,可以通过外部电路实现各种复杂的功能,其功能远强于单片机。

4.固件的存储位置不同

单片机:通常有片上闪存,固件程序通常存储在这个区域,如果固件很大,就需要通过外部电路设计一个外部闪存来存储固件。

ARM-Linux:由于它没有片上闪存,需要运行操作系统,所以整个系统镜像通常很大,所以ARM-Linux开发的操作系统镜像和应用通常都存储在外部MMC、SD卡或SATA设备上。

5.启动方式不同

单片机:其结构简单,带有集成闪存,通常芯片厂家在程序上电时添加固定跳转指令,直接跳转到程序入口(通常在闪存上);开发的应用程序由编译器编译,并使用专用下载工具直接下载到相应的地址空间。因此,系统上电后,直接运行到相应的程序入口,实现系统的启动。

ARM-Linux:由于采用了ARM芯片,执行效率高,功能强大,外设比较丰富,是一个功能强大的计算机系统,并且需要运行操作系统,所以它的开机方式与单片机有很大不同,但与家用电脑的开机方式基本相同。它的启动一般包括BIOS、bootloader、内核启动、应用启动等阶段。

(1)开机BIOS:BIOS是设备厂商(芯片或电路板厂商)设置的对应开机信息,设备上电后会读取对应的硬件设备信息,初始化硬件设备,然后跳转到引导加载程序的位置(位置为固定位置,由BIOS设置)。

根据个人理解,BIOS的开机类似于单片机的开机,需要相应的硬件调试器编写固件,固件存储在一定的闪存空间中,设备上电后读取闪存空间的指令,从而启动BIOS程序。

(2)启动bootloader:这部分已经属于嵌入式Linux软件开发部分,可以通过对相应bootloader程序的代码修改进行定制,bootloader的下载通常是直接读写SD卡。即编写自定义引导加载程序,编译并生成引导加载程序镜像文件,然后使用工具(专用或通用)将其下载到 SD 卡的 MBR 区域(通常是存储区域的第一个扇区)。在这种情况下,您需要在BIOS中进行设置,或者通过电路板的硬件电路设置选择引导加载程序的加载位置;如果在BIOS中设置了从SD卡启动,则在BIOS初始化完成后将执行引导加载程序,以便启动引导加载程序。

bootloader 的主要功能是初始化必要的硬件设备,创建内核需要的一些信息,并通过相关机制将这些信息传递给内核,从而使系统的软硬件环境达到合适的状态,最后调用操作系统内核,真正起到启动和加载内核的作用。

(3)启动内核:bootloader启动并完成初始化等相关工作后,调用内核启动程序。这将我们带到了操作系统的实际启动,包括内核程序的启动,例如硬件配置、任务管理和资源管理。

(4)启动应用:操作系统内核启动后,即可开始启动所需的应用,完成实际业务操作。

2. Arm-Linux基础开发环境

相信大家已经对ARM-Linux应用开发有了基本的了解,下面就介绍一下ARM-Linux的基本开发环境。它主要包括硬件环境和软件环境两部分,这里以 iMX53 和 Ubuntu 为例进行说明。

1.硬件环境

开发板:ARM运行的硬件环境,或对应项目的ARM板。

计算机:用作开发主机,安装 Linux(如 Ubuntu),或使用虚拟机安装 Ubuntu。

串口线:用于在开发过程中使用终端调试串口或下载程序。

网线:用于连接扶手板和开发主机,实现TFTP下载内核(程序等),通过网络NFS运行程序等。

SD卡(和读卡器)或其他存储设备:用于存储引导加载程序、内核镜像等,最后用于软件系统存储;在开发过程中,它通常用于保存引导加载程序并引导系统进行引导。

2. 软件环境

Ubuntu:作为一个操作系统,它是整个软件开发环境的载体,相应的开发工具都安排在这个系统中。

LTIB:这是飞思卡尔提供的编译工具链,可以轻松地将源代码文件编译成合适的程序代码并调试程序;用户还可以通过下载源代码来构建自己的编译工具链。

tftp:用于将内核文件和应用程序文件从开发主机 Ubuntu 下载到 arm-board。

NFS网络文件系统:用于在开发主机上建立网络NFS文件根系统,arm-board通过NFS网络文件系统读取开发主机上的虚拟根文件系统,完成系统启动。便于系统的开发调试。

minicom:串口调试工具,用于与开发主机上的Arm-Board进行通信,实现Arm-Board上应用程序的运行和调试。

Eclipse:集成开发环境,主要方便代码编辑、编译等,也可以使用DS5、RealView等;或者使用 gedit 进行编辑,使用 LTIB 进行编译和管理。

单片机

精简版RaspberryPiOS系统raspios-lite-arm64位系统6464

2024-5-11 16:06:28

单片机

树莓派4b开发板原理图AD源文件

2024-5-11 17:06:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索