赞
踩
一方面去了解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芯片从外观上一模一样,所以硬件上可以同平台走高端和低端定制,一款开发板电路既可以有高端产品,也可以有中端的产品。
和以前学习的STM32开发做一个对比
STM32的开发环境:Windows(7 8 10 11) + Keil(5.20及以上版本)+仿真器驱动 + STM32CUBEMX
我们在写STM32程序的时候,写的是裸板驱动,写的程序是直接操作芯片上的外设或者开发板外接的模块
SP6818的开发环境:Linux(Ubuntu 20.04LTS)
Linux操作系统的其他分支也行
我们在做嵌入式开发时,首选更趋向于开发者使用
LTS(长期支持的版本),选择Ubuntu时,前面的数字都是偶数,后面的是04版本(因为Ubuntu每半年发行一次,分别是4月和10月)
可以使用uname -a命令查看自己的乌班图系统版本
或者lsb_release -a查看
我们在高端开发板上可以移植操作系统,如:
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。三缓层级
首先是最上层的图形化程序就是APP,比如说开发板上配了一个LCD液晶显示屏或者OLED显示屏也可以通过开发板上的HDMI...显示接口外接显示屏,显示应用程序。
我们想要开发图形化程序需要使用GUI的支持,说白了就是要用图形库
其实不用图形库也可以开发,一个个像素点点,但是相当麻烦, 我使用的比较多的GUI是QT,GTK对于嵌入式来说,支持的并不完备,不是很推荐。红帽6的界面就是GTK写的,就显得少许卡顿,在Linux平台下用的比较多,QT由于跨平台性较好,较为推荐。MIniGUI也是C语言开发的,但是做的是一些简单的界面。LVGL(免费开源,体积小,跨平台)使用的是C、C++,嵌入式当中比较流行。
在本地执行的程序,都需要本地库的支持。
如何制作动态库和静态库?(自行学习吧)
将硬盘中的二进制文件识别成各种各样的文件。
在文件系统之下就是内核了:Linux内核\Android内核\Windows内核
是一个启动程序,其功能就是:检测硬件 + 引导内核
PS:大家比较熟悉PC机,PC机中有一个BIOS(basic input output system)BIOS的功能主要是检测硬件的,检测硬件之后,再启动GRUB(引导内核)
我们嵌入式中的bootloader就相当于BIOS + GRUB的功能。
在当前嵌入式中,常用的bootloader是uboot(Universal bootloader<通用的bootloader>)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。