本文主要介紹基于瑞薩64位MPU RZ/G2L進(jìn)行32位應(yīng)用軟件開(kāi)發(fā)的介紹,用于解決客戶32位軟件移植相關(guān)問(wèn)題,供客戶參考。
很多客戶在32bit開(kāi)發(fā)平臺(tái)遷移過(guò)程中,會(huì)遇到Linux應(yīng)用程序移植問(wèn)題,老平臺(tái)應(yīng)用程序是基于32bit ARMv7a處理器開(kāi)發(fā)的,新平臺(tái)通常是基于64bit的ARMv8a的MPU平臺(tái),比如RZ/G2L系列。有些客戶誤認(rèn)為,切換到64bit Linux平臺(tái),必須重新開(kāi)發(fā)64bit應(yīng)用程序,其實(shí)并不是必須的。
首先,在硬件層面:
64bit ARMv8a MPU是能兼容32bit ARMv7a應(yīng)用程序的,也就是ARMv8a體系支持32bit(AArch32)和64bit(AArch64)兩套指令集,這兩套指令集或者說(shuō)是工作模式,會(huì)根據(jù)具體的32/64bit應(yīng)用程序自動(dòng)切換,這是指令集層面的兼容,不是模擬或者翻譯,不會(huì)導(dǎo)致性能損失。這種設(shè)計(jì),很大一部分原因,是為了保護(hù)客戶在32bit老平臺(tái)上面的投資。
其次,在軟件層面:
64bit MPU的Linux kernel運(yùn)行在特權(quán)模式,應(yīng)用程序運(yùn)行在非特權(quán)的用戶空間。通常廠商僅僅移植64bit Linux kernel,如果移植32bit Linux kernel,很多底層64bit相關(guān)特性會(huì)不支持,特別是大尋址空間,而且只能支持32bit應(yīng)用程序。64bit Linux kernel則能發(fā)揮MPU的全部性能,并能運(yùn)行32bit和64bit應(yīng)用程序(基于上述硬件層面的設(shè)計(jì))。
ARM官方提供的ARMv8a相關(guān)設(shè)計(jì)框圖如下:
ELx
ARMv8a引入的Exception Level,數(shù)字越大,特權(quán)越高,類似ARMv7a的異常模式,EL0最低,運(yùn)行應(yīng)用程序。
圖中的AArch64 OS/AArch32 OS,指具體64/32bit操作系統(tǒng)kernel,通常是Linux kernel。OS運(yùn)行于更高EL等級(jí)的Hypervisor的管理之下,AArch64 OS可以支持32或者64bit應(yīng)用程序App,AArch32 OS則只能支持32bit應(yīng)用程序。上面的設(shè)計(jì),跟x86 Linux的設(shè)計(jì)非常相似,比如,64bit x86處理器也原生支持32bit和64bit兩種應(yīng)用程序,64bit Linux系統(tǒng),也能直接運(yùn)行32bit App,微軟64bit Windows系統(tǒng)也是一樣的,用戶從來(lái)不用關(guān)心EXE是之前32位Windows下的老應(yīng)用,還是新開(kāi)發(fā)出來(lái)的64位應(yīng)用軟件,直接雙擊運(yùn)行即可。個(gè)人認(rèn)為,ARMv8a很大程度上參考借鑒了64bit x86處理器的設(shè)計(jì)思路,因?yàn)锳RMv8a是在2012年左右發(fā)布的,而64bit x86處理器在2003年左右就上市了。
下面介紹一下64bit RZ/G2L相關(guān)內(nèi)容。RZ/G2L官方發(fā)布的Yocto系統(tǒng),里面已經(jīng)提供了64bit Linux kernel,并且集成了64bit和32bit的各種庫(kù),還有適配好的64bit和32bit的工具鏈,在Yocto系統(tǒng)編譯完成之后,以core-image-qt為例進(jìn)行說(shuō)明:
1提取工具鏈安裝包
MACHINE=smarc-rzg2l bitbake core-image-qt -c populate_sdk
2安裝工具鏈到本機(jī)
sudo sh poky-glibc-x86_64-core-image-qt-aarch64-smarc-rzg2l-toolchain-3.1.26.sh
通常安裝到默認(rèn)的/opt目錄下,安裝之后,如果需要使用工具鏈編譯32bit源碼,需要首先運(yùn)行一個(gè)工具鏈所在目錄的腳本:
即圖中的environment-開(kāi)頭的腳本文件,對(duì)于32bit App開(kāi)發(fā),運(yùn)行:
source /opt/poky/3.1.26/environment-setup-armv7vet2hf-neon-vfpv4-pokymllib32-linux-gnueabi
即可準(zhǔn)備好32bit App開(kāi)發(fā)環(huán)境,可以使用:echo $CC等命令查看,相關(guān)環(huán)境變量已經(jīng)設(shè)置好:
另一個(gè)environment-開(kāi)頭的腳本,是用來(lái)設(shè)置64位App開(kāi)發(fā)環(huán)境的。
另一方面,如果客戶愿意往64bit應(yīng)用移植,也是可以的,因?yàn)?4bit模式下,可以使用更加強(qiáng)大的指令集,還有海量的尋址空間。但是面臨的問(wèn)題,主要是需要重新編譯源代碼,F(xiàn)PU相關(guān)配置選項(xiàng)可能失效,ARMv7a處理器的FPU相關(guān)配置是可選的,ARMv8a處理器則標(biāo)配FPU,還有一點(diǎn),就是代碼里面指針的處理,32bit應(yīng)用程序中,可能使用了不可移植的數(shù)據(jù)類型如unsigned int保存指針,這是可以的,但是不加修改,編譯成64位應(yīng)用程序的話,會(huì)出現(xiàn)警告或錯(cuò)誤,地址數(shù)值截?cái)嗔?2位,肯定是不安全的。
-
處理器
+關(guān)注
關(guān)注
68文章
19885瀏覽量
235035 -
Linux
+關(guān)注
關(guān)注
87文章
11509瀏覽量
213694 -
MPU
+關(guān)注
關(guān)注
0文章
415瀏覽量
49900 -
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3333瀏覽量
59010 -
應(yīng)用軟件
+關(guān)注
關(guān)注
0文章
53瀏覽量
9282
原文標(biāo)題:64位MPU Linux環(huán)境下32位應(yīng)用開(kāi)發(fā)
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
【米爾瑞薩RZ/G2L開(kāi)發(fā)板-試用體驗(yàn)】開(kāi)箱
【米爾瑞薩RZ/G2L開(kāi)發(fā)板-試用體驗(yàn)】開(kāi)箱 + 開(kāi)機(jī)
【米爾瑞薩RZ/G2L開(kāi)發(fā)板-試用體驗(yàn)】米爾-瑞薩RZG2L - 64位雙核MPU開(kāi)發(fā)板開(kāi)箱測(cè)評(píng)
【米爾瑞薩RZ/G2L開(kāi)發(fā)板-試用體驗(yàn)】米爾瑞薩RZ/G2L開(kāi)發(fā)板開(kāi)箱視頻
150套開(kāi)發(fā)板免費(fèi)送!還有5G手機(jī)拿?米爾RZ/G2L開(kāi)發(fā)板創(chuàng)意秀
【米爾瑞薩RZ/G2L開(kāi)發(fā)板-試用體驗(yàn)】米爾瑞薩RZ/G2L開(kāi)發(fā)板使用SSH登錄
【米爾瑞薩RZ/G2L開(kāi)發(fā)板-試用體驗(yàn)】認(rèn)識(shí)一下米爾瑞薩RZ/G2L開(kāi)發(fā)板的核心板
瑞薩電子推全新RZ/G2L MPU,可實(shí)現(xiàn)降低整體系統(tǒng)成本
米爾RZ/G2L開(kāi)發(fā)板瑞米派雙核A55Remi Pi學(xué)習(xí)板兼容樹(shù)莓派擴(kuò)展模塊
瑞薩電子RZ MPU家族精品RZ/N2L產(chǎn)品介紹

評(píng)論