如何用Android NDK编译FFmpeg,如何用Android NDK编译FFmpeg,关于ARM架构的一些知识,arm架构和内核区别[转]...
如何用Android NDK编译FFmpeg
Android NDK编译FFmpeg可以采用cygwin方法来实现。 具体步骤: 1、首先是config脚本,编译ffmpeg之前必须得先configure一下,configure是一个shell脚本,1根据命令行参数不同来裁剪模块,生成特定的config.h文件。 2、confiure脚本文件在ffmpeg目录里可以找到。 3、重新建立以个shell脚本文件config.sh,这个文件只是为了编译方便。 4、例子: 注意: 编写config脚本时候,其中的路径需要使用windows形式的路径,不能使用/cygwindriver/d/android 这种格式的路径。
如何用Android NDK编译FFmpeg
Android NDK编译FFmpeg可以采用cygwin方法来实现。 具体步骤: 1、首先是config脚本,编译ffmpeg之前必须得先configure一下,configure是一个shell脚本,根据命令行参数不同来裁剪模块,生成特定的config.h文件。 2、confiure脚本文件在ffmpeg目录里可以找到。 3、重新建立以个shell脚本文件config.sh,这个文件只是为了编译方便。 4、例子: 注意: 编写config脚本时候,其中的路径需要使用windows形式的路径,不能使用/cygwindriver/d/android 这种格式的路径。
关于ARM架构的一些知识
[TOC]
ARMv7 含16位和32位两个指令集;
ARMv8 含32位和64位两个指令集,ARM没有64位技术,它是在 MIPS64 架构上增加了ARMv7架构的技术;
ARM64 其实只是 ARMv8的一半,只含64位指令集;
A53 开始之后,都是ARM64。
ARMv8指令集分为Aarch64和Aarch32。后者与ARMv7基本相同,但是多了一些vfp的指令,或者以前的软件模拟实现改为硬件支持,可以说是靠着后者实现对Aarch32的向前兼容。
arm7版本可以安装在armv7架构的设备上【支持32位和16位指令集的设备】;
arm8版本可以安装在armv8架构的设备上【支持64位和32位指令集的设备】;
arm64版本只能安装在纯64位的arm架构的设备上。
出于低功耗、封装限制等种种原因,以前的一些ARM处理器没有独立的硬件浮点运算单元,需要手写软件来实现浮点运算。有与没有之间产生了两个不同的嵌入式应用程序二进制接口(EABI):软浮点与矢量浮点(VFP)。但是软浮点(soft float)和硬浮点(hard float)之间有向前兼容却没有向后兼容的能力,也就是软浮点的二进制接口(EABI)仍然可以用于有硬浮点计算单元的ARM处理器。
在ARM体系架构内核中,有些有浮点运算单元(fpu),有些没有,在有fpu的情况下,就可以通过gcc编译的选项-mfloat-abi来指定使用哪种,有如下三种值:
brook_linux_arm5
brook_linux_arm6
brook_linux_arm7
brook_linux_arm64
brook_linux_mips
brook_linux_mips_softfloat
brook_linux_mipsle
brook_linux_mipsle_softfloat
brook_linux_mips64
brook_linux_mips64_softfloat
brook_linux_mips64le
brook_linux_mips64le_softfloat
ARM体系结构 : https://blog.csdn.net/MyArrow/article/details/8559573?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
ARM的Cortex-A8,是由ARM控股的采用ARMv7指令集架构的处理器核心设计。
arm架构和内核区别[转]
ARM产品越来越丰富,命名也越来越多。很多朋友提问: ARM内核和架构都是什么意思?内核和架构的关系是什么?比如ARMv7架构,这个架构指的是什么?
ARM内核:从ARM7、ARM9到Cortex-A7、A8、A9、A12、A15再到Cortex-A53、A57等,总之不同版本 ARM 有不同的想法。比如为高速度设计的Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是内核,后者是指令集的架构。
ARM的架构都是基于RISC指令集而架构的,而其内核只是实现这一指令集的硬件架构的基础,Thumb-2指令集架构(ISA)的子集,包含所有基本的16位 和32位Thumb-2指令、 、哈佛处理器架构,在加载/存储数据的同时能够执行指令取指,带分支预测的三级流水线等。
好比你盖房子 刚开始因为水平低 流行盖平房 这就是一种架构(V5T)。
然后这种平房架构你可以设计出一款独立卫生间的款式 这叫ARM7内核。
然后其他人(芯片设计公司)想盖房子的就买你这个图纸去盖,然后过一段时间,有人觉得光独立卫生间还不够啊!我还想有个小院子。 好吧。。那ARM就满足你们 ,就出个带小院子的款式(ARM9)。
又过了很久, 这种平房的架构就随着大伙的需求一直改啊改啊。。 后来经过ARM研究发现 ,现在大伙盖房子的能力duang duang直升啊(包括工艺、设计能力、时钟主频) 。只盖这种平房施展不开啊!
好吧。。ARM为了不让这帮设计的人闲着, 就推出一种二三层楼房的样式, 这因为跟平房设计结构完全不一样嘛 ,那就叫一种新的架构(V6)!
同样这种楼房样式ARM也为大家准备了带游泳池的和带车库的款式(ARM11各种)。
好吧继续改啊改啊。。 改到后来大家已经开始有能力盖十层以上的大楼了, ARM一如既往地出了新的款式(V7架构) 。这时ARM觉得以前尼玛名字都太土鳖了。。 什么ARM5 ,ARM6 ,ARM7,又难听又难记, 劳资要取个看起来牛逼的名字! 咱至少也算个能设计摩天大楼的主了, 于是后面的内核都叫cortex 。
改名只是一部分,随着这个架构出来后 ,ARM发现, 以前用咱们图纸盖出的楼也就做个民宅 。民宅图个啥 ?实惠嘛(功耗低)!
现在不一样了, 现在咱的图纸盖得楼不仅可以做民宅, 还可以做军事基地, 还可以做高档写字楼 。以前这些高级功能的楼房可是只有小英(英特尔)才设计得来的啊!
为了满足这些不同的需求, ARM把这个架构设计出来的款式分成3个系列(M系列、R系列、A系列)。
M系列是为民宅设计的 ,因为老百姓图实惠嘛 这种设计就设计个十层左右(功耗低)。
R系列是为军事基地设计的, 这种楼设计的也不高, 十层左右吧, 但是关键是要对特殊情况要有快速反应的能力(中断快) 。
最后A系列是给商业大佬用的, 那当然是要高端大气上档次 ,就是要高(性能高)各种LED灯灯光秀啊都给我上。
下一篇:没有了