全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 处理器/DSP >

基于瑞萨64位MPU RZ/G2L进行32位应用软件开发

时间:2025-06-26 15:48

人气:

作者:admin

标签: 应用软件  应用程序  MPU  Linux 

导读:本文主要介绍基于瑞萨64位MPU RZ/G2L进行32位应用软件开发的介绍,用于解决客户32位软件移植相关问题,供客户参考。...

本文主要介绍基于瑞萨64位MPU RZ/G2L进行32位应用软件开发的介绍,用于解决客户32位软件移植相关问题,供客户参考。

很多客户在32bit开发平台迁移过程中,会遇到Linux应用程序移植问题,老平台应用程序是基于32bit ARMv7a处理器开发的,新平台通常是基于64bit的ARMv8a的MPU平台,比如RZ/G2L系列。有些客户误认为,切换到64bit Linux平台,必须重新开发64bit应用程序,其实并不是必须的。

首先,在硬件层面:

64bit ARMv8a MPU是能兼容32bit ARMv7a应用程序的,也就是ARMv8a体系支持32bit(AArch32)和64bit(AArch64)两套指令集,这两套指令集或者说是工作模式,会根据具体的32/64bit应用程序自动切换,这是指令集层面的兼容,不是模拟或者翻译,不会导致性能损失。这种设计,很大一部分原因,是为了保护客户在32bit老平台上面的投资。

其次,在软件层面:

64bit MPU的Linux kernel运行在特权模式,应用程序运行在非特权的用户空间。通常厂商仅仅移植64bit Linux kernel,如果移植32bit Linux kernel,很多底层64bit相关特性会不支持,特别是大寻址空间,而且只能支持32bit应用程序。64bit Linux kernel则能发挥MPU的全部性能,并能运行32bit和64bit应用程序(基于上述硬件层面的设计)。

ARM官方提供的ARMv8a相关设计框图如下:

cdead4c6-4fe7-11f0-b715-92fbcf53809c.png

ELx

ARMv8a引入的Exception Level,数字越大,特权越高,类似ARMv7a的异常模式,EL0最低,运行应用程序。

图中的AArch64 OS/AArch32 OS,指具体64/32bit操作系统kernel,通常是Linux kernel。OS运行于更高EL等级的Hypervisor的管理之下,AArch64 OS可以支持32或者64bit应用程序App,AArch32 OS则只能支持32bit应用程序。上面的设计,跟x86 Linux的设计非常相似,比如,64bit x86处理器也原生支持32bit和64bit两种应用程序,64bit Linux系统,也能直接运行32bit App,微软64bit Windows系统也是一样的,用户从来不用关心EXE是之前32位Windows下的老应用,还是新开发出来的64位应用软件,直接双击运行即可。个人认为,ARMv8a很大程度上参考借鉴了64bit x86处理器的设计思路,因为ARMv8a是在2012年左右发布的,而64bit x86处理器在2003年左右就上市了。

下面介绍一下64bit RZ/G2L相关内容。RZ/G2L官方发布的Yocto系统,里面已经提供了64bit Linux kernel,并且集成了64bit和32bit的各种库,还有适配好的64bit和32bit的工具链,在Yocto系统编译完成之后,以core-image-qt为例进行说明:

1提取工具链安装包

MACHINE=smarc-rzg2l bitbake core-image-qt -c populate_sdk

2安装工具链到本机

sudo sh poky-glibc-x86_64-core-image-qt-aarch64-smarc-rzg2l-toolchain-3.1.26.sh

通常安装到默认的/opt目录下,安装之后,如果需要使用工具链编译32bit源码,需要首先运行一个工具链所在目录的脚本:

ce072ad6-4fe7-11f0-b715-92fbcf53809c.png

即图中的environment-开头的脚本文件,对于32bit App开发,运行:

source /opt/poky/3.1.26/environment-setup-armv7vet2hf-neon-vfpv4-pokymllib32-linux-gnueabi

即可准备好32bit App开发环境,可以使用:echo $CC等命令查看,相关环境变量已经设置好:

ce17cd14-4fe7-11f0-b715-92fbcf53809c.png

另一个environment-开头的脚本,是用来设置64位App开发环境的。

另一方面,如果客户愿意往64bit应用移植,也是可以的,因为64bit模式下,可以使用更加强大的指令集,还有海量的寻址空间。但是面临的问题,主要是需要重新编译源代码,FPU相关配置选项可能失效,ARMv7a处理器的FPU相关配置是可选的,ARMv8a处理器则标配FPU,还有一点,就是代码里面指针的处理,32bit应用程序中,可能使用了不可移植的数据类型如unsigned int保存指针,这是可以的,但是不加修改,编译成64位应用程序的话,会出现警告或错误,地址数值截断了32位,肯定是不安全的。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信