点击上方大鱼机器人,选择“置顶/星标公众号”

福利干货,第一时间送达!

针对ARM-Linux程序的开发,主要分为三类:应用程序开发、驱动程序开发、系统内核开发,针对不同种类的软件开发,有其不同的特点。

今天我们来看看ARM-Linux开发和MCU开发的不同点,以及ARM-Linux的基本开发环境。

1.  ARM-Linux应用开发和单片机开发的不同

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

还有一种是在ARM芯片上运行操作系统,对于硬件的操作需要编写相应的驱动程序,应用开发则是基于操作系统的,这种方式的嵌入式应用开发与单片机开发差异较大。ARM-Linux应用开发和单片机的开发主要有以下几点不同:

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

单片机:开发板,仿真器(调试器),USB线;


ARM-Linux:
开发板,网线,串口线,SD卡;

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

(2)程序下载方式不同

单片机:仿真器(调试器)下载,或者是串口下载;

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

这个与开发环境的硬件设备是有直接关系的,由于没有硬件仿真器,故ARM-Linux开发时通常不采用仿真器下载;这样看似不方便,其实给ARM-Linux的应用开发提供了更多的下载方式。

(3)芯片的硬件资源不同

单片机:通常是一个完整的计算机系统,包含片内RAM,片内FLASH,以及UART、I2C、AD、DA等各种外设;

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

(4)固件的存储位置不同

单片机:通常具备片内flash存储器,固件程序通常存储在该区域,若固件较大则需要通过外部电路设计外部flash用于存储固件。

ARM-Linux: 由于其没有片内的flash, 并且需要运行操作系统,整个系统映像通常较大,故ARM-Linux开发的操作系统映像和应用通常存储在外部的MMC、SD卡上,或者采用SATA设备等。

(5)启动方式不同


单片机:
其结构简单,内部集成flash, 通常是芯片厂商在程序上电时加入固定的跳转指令,直接跳转到程序入口(通常在flash上);开发的应用程序通过编译器编译,采用专用下载工具直接下载到相应的地址空间;所以系统上电后直接运行到相应的程序入口,实现系统的启动。

ARM-Linux:由于采用ARM芯片,执行效率高,功能强大,外设相对丰富,是功能强大的计算机系统,并且需要运行操作系统,所以其启动方式和单片机有较大的差别,但是和家用计算机的启动方式基本相同。其启动一般包括BIOS,bootloader,内核启动,应用启动等阶段;


 (a)启动BIOS:
BIOS是设备厂家(芯片或者是电路板厂家)设置的相应启动信息,在设备上电后,其将读取相应硬件设备信息,进行硬件设备的初始化工作,然后跳转到bootloader所在位置(该位置是一个固定的位置,由BIOS设置)。(根据个人理解,BIOS的启动和单片机启动类似,需要采用相应的硬件调试器进行固件的写入,存储在一定的flash 空间,设备上电启动后读取flash空间的指令,从而启动BIOS程序。)

(b)启动bootloader: 该部分已经属于嵌入式Linux软件开发的部分,可以通过代码修改定制相应的bootloader程序,bootloader的下载通常是采用直接读写SD卡等方式。即编写定制相应的bootloader,编译生成bootloader映象文件后,利用工具(专用或通用)下载到SD卡的MBR区域(通常是存储区的第一个扇区)。此时需要在BIOS中设置,或者通过电路板的硬件电路设置,选择bootloader的加载位置;若BIOS中设置从SD卡启动,则BIOS初始化结束后,将跳转到SD卡的位置去执行bootloader,从而实现bootloader的启动。

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

(c)启动内核 :bootloader启动完成初始化等相关工作之后,将调用内核启动程序。这就进入了实际的操作系统相关内容的启动了,包括相应的硬件配置,任务管理,资源管理等内核程序的启动。

(d)启动应用:在操作系统内核启动之后,就可以开始启动需要的应用,去完成真正的业务操作了。

2.  Arm-Linux 基本开发环境

前面介绍了ARM-Linux应用开发和单片机开发的不同之处,相信你已经对ARM-Linux应用开发有了一个基本的认识了,下面将介绍一下ARM-Linux的基本开发环境。其主要包括硬件环境和软件环境两个部分,这里以iMX53和Ubuntu为例进行说明。

(1)硬件环境


开发板:
ARM运行的硬件环境,或者是相应项目的ARM电路板;

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

串口线:用于开发过程中采用终端进行串口调试或下载程序;

网线:用于连接arm-board和开发主机,实现tftp下载内核(程序等),通过网络nfs运行程序等。


 SD卡(及读卡器)或者其他存储设备:
用于存储bootloader、内核映像等,以及最终的软件系统的存储;开发过程中,通常用于保存bootloader,引导系统启动。

(2)软件环境

Ubuntu: 作为操作系统,是整个软件开发环境的载体,相应的开发工具都布置在此系统中。

LTIB: 这是freescale的提供的一个编译工具链,能够很方便的将源代码文件编译为适合的程序代码,并对程序进行调试;用户也可以通过下载源码构建自己的编译工具链。

tftp: 用于从开发主机Ubuntu上向arm-board 下载内核文件、应用文件等。

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

minicom:串口调试工具,用于在开发主机上与arm-board通信,实现对arm-board上应用程序的操作与调试;

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

-END-

﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!

往期好文合集

这些电子元器件 “艺术品”,无敌!<<戳这里

如何保护电路不被烧毁?<<戳这里

windows 11 预览版来了<<戳这里

最 后

若觉得文章不错,转发分享,也是我们继续更新的动力。

5T资源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,PCB、FPGA、DSP、labview、单片机、等等

在公众号内回复「更多资源」,即可免费获取,期待你的关注~

长按识别图中二维码关注

单片机开发与Linux开发有何不同?相关推荐

  1. <Linux开发>linux开发工具- 之-TFTP

    <Linux开发>linux开发工具- 之-TFTP tftp命令的作用和nfs命令一样,都是用于通过网络下载东西到DRAM中,只是tftp命令使用的TFTP协议,Ubuntu主机作为TF ...

  2. <Linux开发>linux开发工具- 之-geany编辑器

    <Linux开发>linux开发工具- 之-geany编辑器 安装命令: sudo apt-get install geany 使用方法: 命令: geany 文件路径名 &

  3. <Linux开发>linux开发工具- 之-samba共享文件夹

    <Linux开发>linux开发工具- 之-samba共享文件夹 本文章主要讲解ubuntu下的文件 能够 在windows下访问的实现.目的是方便文件在Windows下操作,便于开发. ...

  4. <Linux开发>linux开发工具- 之-开发使用linux命令记录

    <Linux开发>linux开发工具- 之-开发使用linux命令记录 本文章主要记录开发过程中涉及使用的linux命令. 1.查看磁盘大小分区情况 命令: df -hl` 可查看分区的路 ...

  5. 单片机开发与Linux开发区别

    针对ARM-Linux程序的开发,主要分为三类:应用程序开发.驱动程序开发.系统内核开发,针对不同种类的软件开发,有其不同的特点.今天我们来看看ARM-Linux开发和MCU开发的不同点,以及ARM- ...

  6. 单片机、嵌入式Linux开发大学自学路径

    笔者所修读的专业为物联网工程,物联网工程是一门新兴的.热门的专业,其所涉及的学科更是又多又杂,既有计算机方向的编程语言(如C.C++.Java.Python等).数据结构与算法.操作系统.移动端应用开 ...

  7. ZYNQ中裸机开发和Linux开发有什么区别?

    ZYNQ架构特征 从高层次的角度去看,Zynq架构包含PS和PL两部分以及之间的互连线.如图2.3所示.互联遵循AXI标准,AXI标准是Arm开发的片上通信技术标准. 将PS和PL集成到一起一方面能够 ...

  8. 从单片机开发转向Linux开发系列博客五:Nand Flash根文件系统制作

    版本 作者 参与者 日期 备注 V1.0 wuya(微信号:wangwenxue1989) 2019/05/17 创建 1.引言 之前系列的文章介绍了如何编译Uboot.Kernel以及使用默认的ra ...

  9. ROM定制开发入门-linux开发环境安装和准备

    环境安装-Linux环境 主要是Ubuntu安装复杂些,Ubuntu下操作的相对较少,一般为打包解包,打包环境配置相对简单: 安装ubuntu 配置selinux 以下是安装Ubuntu的教程: (为 ...

最新文章

  1. ps 2c语言程序,C语言基础(二)
  2. 平述factory reset ——从main system到重引导流程
  3. 12.5K 颗星星的 C++ 教程,带你高速上手现代 C++ !
  4. swift5.给系统类添加便利构造函数
  5. sql读取excel数据_Python 读取 Excel 数据,并插入到MySQL
  6. 计算机网络-自顶向下方法(7th) 第四章 Review Questions 英文题目
  7. texstudio 使用方法_TeXstudio怎么使用,TeXstudio使用教程解析
  8. gmail api 发送邮件_Node定时自动发邮件功能
  9. android 电视盒子 软件安装,电视盒子无法安装第三方软件怎么办?当贝市场这样一招搞定...
  10. 在线 LaTeX 公式编辑器
  11. 魔兽世界拍卖行稳定服务器,魔兽世界TBC:大量玩家拍卖行卡到抓狂,分析其中可能的原因...
  12. android 蓝牙转串口_android蓝牙串口通讯
  13. mac tortoisesvn客户端_tortoisesvn mac版下载
  14. matlab动图启动,MATLAB制作动图或视频
  15. 倒计时 1 天丨微信大数据挑战赛,即将启动报名
  16. Unity ios打包卡在Converting managed assemblies to C++
  17. Android 实现人脸识别
  18. 缺省值和null值的区别和作用
  19. VESD联网防静电门禁管理系统有哪些功能?
  20. 区块链熊市交易量不减,市场为何需要OKEx合约交易?

热门文章

  1. 2015-03-17 how is task transaction type retrieved
  2. sap.ca.ui.model.format.NumberFormat format logic for Globalization
  3. UI5 Navigation execution entry point
  4. SAP UI5 footerbar按钮高亮实现逻辑
  5. SAP odata模型缓存校验机制
  6. WordPress的插件激活实现
  7. ABAP gateway里OData url里的select操作是如何在后端实现的
  8. 服务器检测到客户端退出或崩溃后,如何优雅地做出反应
  9. 如何用SAP ABAP编程语言实现一个简单的区块链模型
  10. matlab人工势场法三维演示图,运动规划入门 | 5. 白话人工势场法,从原理到Matlab实现...