关于ARM架构的一些知识

关于ARM架构的一些知识,第1张

[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指令集架构的处理器核心设计。

我不保证我的方法是最好的,我也不会把每一步做什么写得很清楚。我所想要分享的是我的经验,而不是方法。一些环境busybox 1.14.1qt-embedded-linux-opensource-src-4.5.1tslib 1.4gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)构建一个新的根文件系统目录,路径为/root/rootfs1.busybox的编译安装相信这一步大家都非常熟悉啦,在官网下载最新版。以下是我修改的几处地方Busybox Settings --->Build Options --->(arm-linux-)Cross Compiler prefixBusybox Settings --->Installation Options --->[]Dont't use /usrBusybox Settings --->Installation Options --->(/root/rootfs) BusyBox installation prefixBusybox Settings --->Busybox Library Tuning --->[*] Fancy Shell prompts这项一定要选上,不然设置/etc/profile 中PS1变量不生效# makemake install2.tslib的编译安装# ./autogen.sh# ./configure -prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes# makemake install朋友们不要奇怪,安装目录的确是这个 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/好处就是在编译QTE时,不用指定tslib的头文件和库文件。将来编译其他需要链接tslib的程序时,也不需要指定。在做这一步前,需要做一个目录链接在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/目录下# ln -s ../../usr/include ./当然,如果这一步你不是很清楚,也可以配置tslib安装在你指定的目录($tslib),到时候配置QTE时 -I/($tslib)/include -L/($tslib)/lib安装tslib到rootfs# ./configure -prefix=/root/rootfs/usr/ -host=arm-linux ac_cv_func_malloc_0_nonnull=yes# make install3.QTE的编译与安装最基本的配置# ./configure -prefix /usr -embedded arm -xplatform qws/linux-arm-g++ -depths 16 -qt-mouse-tslib-prefix /usr 使用这个配置,编译后的QTE库文件即可放在目标文件系统的/usr/lib下,而不是默认/usr/local/Trolltech/QtEmbedded-4.5.1 这个很深的目录# make# cp lib/* /root/rootfs/usr/lib -rd 将QTE库文件拷贝到根文件系统的目录# cp plugins /root/rootfs/usr -rd 将QTE插件目录拷贝到根文件系统的目录4.根文件系统的设置这时/root/rootfs/usr下应该有 bin etc include lib sbin目录tslib生成的etc目录,包含一个tslib的配置文件 ts.conf,编辑此文件,去掉module_raw input前的注释# mv etc ../ 移动到rootfs的根目录创建rootfs的其他目录,添加etc目录下的其他文件,拷贝toolchain下的库文件,这不是本文讨论的地方关键的几处 *** 作进行一次清理 *** 作#arm-linux-strip lib/*.so#arm-linux-strip usr/lib/*.so编辑etc/profile,添加以下内容export QWS_MOUSE_PROTO=Tslib:/dev/event0export TSLIB_CONSOLEDEVICE=noneexport TSLIB_FBDEVICE=/dev/fb0export TSLIB_TSDEVICE=/dev/event0export TSLIB_CALIBFILE=/etc/pointercalexport TSLIB_CONFFILE=/etc/ts.confexport TSLIB_PLUGINDIR=/usr/lib/ts好了,mkyaffs2image 制作镜像,烧写镜像,启动ts_calibrate校验触屏,运行一个qte程序试试看。 说明:以上笔记来自一位叫长风的网友。在这里我特别的针对你的情况说明一下:你应该是有一个能用的文件系统了。这时候把你交叉编译(这时候已经安装在你的pc上了)的库搬到你的板子上就行了。比如默认的是这个路径:/usr/local/Trolltech/QtEmbedded-4.5.0同时在你的板子上建立这么个路径,把这个目录下的lib全部复制到你的板子的这个路径。顺便在上述的这个路径复制一些例程(在同目录的demos和examples)就在可个进行测试了。另外如果要用触摸屏的话,认真看上述网友的笔记。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7361522.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存