ARM开发之一:嵌入式开发简介

1.ARM的历史版本

        一方面去了解ARM,另一方面为了可以在做项目的时候选择一款合适的ARM版本来支持你的项目

注意:选择ARM版本时并不是越高越好,版本越高性能越好,但是价格也会更高

所以在做项目的时候一定是选择一款适合的ARM版本。

ARM原本的含义是(Acorn RISC Machine),后来Acron公司剥离出了ARM部门,又成立了ARM公司,含义改为(Advanced RISC Machine)。

ARM在英国剑桥成立的,

ARM    ST公司        某工厂  某公司 

ARM-CORTEX-M3   STM32F103RBT6  单片机开发板  购买者

ARM-CORTEX-A53  三星(s5p6818) 深圳九鼎科技 购买者

全球90%的电子设备使用的都是ARM体系架构的芯片

但是ARM公司并不挣钱

在2016年年底被日本软银给收购了

本次学习使用的开发板是s5p6818(三星公司的芯片)(便宜,性价比高),内部的核心使用的是ARM-CORTEX-A53核心,使用的是ARMV8架构。

ARM-CORTEX-A53(8核)的CPU,多数是四核的,要根据实际硬件情况

和S5P6818类似的哈有一个芯片是S5P4818,内部使用的核心是ARMV7架构的

ARM-CORTEX-A9(4核)的CPU

S5P6818和S5P418芯片从外观上一模一样,所以硬件上可以同平台走高端和低端定制,一款开发板电路既可以有高端产品,也可以有中端的产品。

2.ARM嵌入式开发环境

和以前学习的STM32开发做一个对比

STM32的开发环境:Windows(7 8 10 11) + Keil(5.20及以上版本)+仿真器驱动 + STM32CUBEMX

我们在写STM32程序的时候,写的是裸板驱动,写的程序是直接操作芯片上的外设或者开发板外接的模块

SP6818的开发环境:Linux(Ubuntu 20.04LTS)

Linux操作系统的其他分支也行

我们在做嵌入式开发时,首选更趋向于开发者使用

  1. Ubuntu操作系统更趋向于开发者使用
  2. 将来开发出现问题,在网上Ubuntu环境的解决方法最多

LTS(长期支持的版本),选择Ubuntu时,前面的数字都是偶数,后面的是04版本(因为Ubuntu每半年发行一次,分别是4月和10月)

可以使用uname -a命令查看自己的乌班图系统版本

或者lsb_release -a查看

我们在高端开发板上可以移植操作系统,如:

  • Linux 定制一款Linux
  • Android 移植安卓
  • Ubuntu 在很多的电子设备上,现在使用Ubuntu系统也很多
    • 如北京地铁上的小电视、购票机器、广告牌

3.嵌入式开发的结构

APP :QQ 微信 腾讯会议 游戏 控制界面

GUI :     QT(C++) Android(Java) CTK(C) MiniGUI(C) LVGL(C/C++)

本地库: libc.so libjpeg.so libc++  libsqlite3.so...

文件系统: 根文件系统

Kernel: Linux Android Windows

bootloader :uboot

-----

硬件

S5P6818开发板  = 核心板 + 底板

核心板 = SOC(芯片)+ 内存(DDR3运行内存1GB) + EMMC(硬盘8G) + PMU(电源管理芯片)+PHY芯片(网络芯片:核心板左上角的那个芯片,为了ETH(以太网)工作的)

SOC(芯片) = CPU(ARM-CORTEX-A53(8核*1.4GHz)) + 内存 + 硬盘(ROM只读)+总线(CPU通过总线访问外设的)+外设(GPIO\USART\IIC\SPI\TIMER...)

CPU =  ARM-CORTEX-A53 + cashe(高速缓存) + mmu(内存管理单元<访问的地址是虚拟地址>)+ 中断控制器(GIC) + ...

底板 = reset + beep + ...

PS:冯诺依曼结构和哈弗结构,冯诺依曼结构只有Ucashe,只能加载内存或者硬盘;哈弗结构有Icashe和Dcashe。三缓层级

1)APP

        首先是最上层的图形化程序就是APP,比如说开发板上配了一个LCD液晶显示屏或者OLED显示屏也可以通过开发板上的HDMI...显示接口外接显示屏,显示应用程序。

2)GUI

        我们想要开发图形化程序需要使用GUI的支持,说白了就是要用图形库

        其实不用图形库也可以开发,一个个像素点点,但是相当麻烦, 我使用的比较多的GUI是QT,GTK对于嵌入式来说,支持的并不完备,不是很推荐。红帽6的界面就是GTK写的,就显得少许卡顿,在Linux平台下用的比较多,QT由于跨平台性较好,较为推荐。MIniGUI也是C语言开发的,但是做的是一些简单的界面。LVGL(免费开源,体积小,跨平台)使用的是C、C++,嵌入式当中比较流行。

3)LIB库

        在本地执行的程序,都需要本地库的支持。

        如何制作动态库和静态库?(自行学习吧)

4)文件系统

        将硬盘中的二进制文件识别成各种各样的文件。

5)内核

        在文件系统之下就是内核了:Linux内核\Android内核\Windows内核

6)bootloader

        是一个启动程序,其功能就是:检测硬件 + 引导内核

PS:大家比较熟悉PC机,PC机中有一个BIOS(basic input output system)BIOS的功能主要是检测硬件的,检测硬件之后,再启动GRUB(引导内核)

我们嵌入式中的bootloader就相当于BIOS + GRUB的功能。

在当前嵌入式中,常用的bootloader是uboot(Universal bootloader<通用的bootloader>)

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
嵌入式Linux系统开发技术是一个较为广泛的领域,其中以基于ARM的嵌入式系统应用较为常见。嵌入式Linux系统的开发技术可以涵盖从硬件平台的选择到Linux内核的移植,再到应用程序的开发等方面。以下是关于嵌入式Linux系统开发技术的详细解释。 硬件平台选择:首先需要进行硬件平台的选择,确定嵌入式设备所需的处理器、内存、存储等组件规格。由于ARM架构的设计优势,小型化、低功耗、价格实惠等特点,ARM处理器得到了广泛应用,并成为最受欢迎的嵌入式处理器之一。因此,选择基于ARM架构的嵌入式平台也成为了最常见的选择。 移植Linux内核:对于选择的硬件平台,需要进行Linux内和的移植,这样才能在嵌入式设备上运行Linux系统。有关ARM平台的内核移植,需要一个交叉编译工具链,以允许在主机上编译ARM平台的内核。内核移植大量依赖高级的交叉编译技术,需要深入了解编译规则、配置文件修改和编译选项等技术。 设备驱动开发:设备驱动是嵌入式Linux系统最重要的核心内容之一,负责管理外部设备。设备驱动的编写第一要件是了解设备硬件特性,需要具备一定的硬件电路知识。对于具体的外设需要进行详细的驱动开发,如磁盘驱动、键盘驱动等。 应用程序开发:完成内核移植和设备驱动的编码后,紧接着就是应用程序的开发。嵌入式Linux系统的应用程序需要根据具体需求进行开发,在编写过程中需要对硬件资源的使用和管理进行严格考虑,避免出现内存泄漏、死锁、内核过载等问题。因此,对C/C++开发技术的掌握是优秀的嵌入式Linux系统应用程序开发必不可少的能力。 综上所述,嵌入式Linux系统开发涉及硬件平台的选择、内核移植、设备驱动开发和应用程序开发等多个方面。在基于ARM的嵌入式系统应用中,Linux内核的移植是关键步骤,需要学习交叉编译技术,硬件驱动开发和应用程序开发也同样重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值