自動生成的代碼支持哪些硬件平臺?前面我們提到了Target Support Package,今天我們再來看看另外兩處引發(fā)這個(gè)問題的地方。
M配置參數(shù)中的硬件實(shí)施
硬件實(shí)施(Hardware Implementation)設(shè)置里給出了代碼生成支持的各種處理器,如下圖所示,我們可以選擇Freescale的MPC 55xx系列的單片機(jī),也可以選擇Infineon的TriCore等等,從這個(gè)列表來看,基本上涵蓋了我們平時(shí)可以接觸到的大多數(shù)單片機(jī)。

不過,產(chǎn)品開發(fā)過程中,不少公司會跟半導(dǎo)體公司同步,使用半導(dǎo)體公司開發(fā)過程中的最新單片機(jī),也有的時(shí)候,我們在使用一些比較小眾的單片機(jī),這樣一來,這個(gè)列表就可能難以做到面面俱到。所以就有用戶做翻遍了這個(gè)列表依然沒有找到自己使用的芯片之后,會跟我們抱怨代碼生成不支持他們使用的單片機(jī)。
我們來仔細(xì)看一下這個(gè)列表,在我們選中一款處理器之后Device details下面都有哪些內(nèi)容,首先是Number of bits,這里給出了各種數(shù)據(jù)類型對應(yīng)的字長,比如char,short,float,double,pointer等,不同的單片機(jī)這些數(shù)據(jù)可能是不同的,比如,對于C語言中的數(shù)據(jù)類型char,多數(shù)情況下都會定義為8個(gè)位,而TI的C2000系列的MCU卻把char定義為16個(gè)位。long就更是多種多樣了,有的處理器里被定義為32bits,也有的被定義為64bits,TI的C6000 DSP里long是40bits。代碼生成之后,在rtwtypes.h文件里會有這些基本數(shù)據(jù)類型的定義。如下所示:
typedef signed char int8_T;
typedef unsigned charuint8_T;
typedef shortint16_T;
typedef unsigned shortuint16_T;
typedef intint32_T;
typedef unsigned intuint32_T;
typedef floatreal32_T;
typedef doublereal64_T;
Largest atomic size,最大原子尺寸,定義了整型的最大原子尺寸,同時(shí)也給出是否支持浮點(diǎn)類型以及單精度、雙精度浮點(diǎn)的選項(xiàng)。
還有一些,類似于字節(jié)順序之類的選項(xiàng),用以選擇Little Endian還是Big Endian。
如果能從上述列表中找到我們正在使用的處理器,在代碼生成之前有必要將這個(gè)選項(xiàng)設(shè)置成跟我們一致的處理器。如果這個(gè)列表中找不到呢?是否就意味著代碼生成不支持你們的處理器呢?
答案是否定的,我們可以注意一下,在Device vendor下拉菜單的最下面可以找到Custom Processor選項(xiàng),我們已經(jīng)知道,針對不同的處理器,在生成的代碼里,有必要做出區(qū)分的也就是各種類型的字長、是否支持浮點(diǎn)等設(shè)置,既然如此,對于列表中不存在的處理器,只需要在選中Custom Processor之后做一些相關(guān)設(shè)置即可。
如下圖,在選擇了Custom Processor之后,前面我們提到的各種信息都變成可編輯狀態(tài)。
通過人為設(shè)置這些選項(xiàng),可以滿足那些列表中不存在的處理器的要求,所以從這個(gè)意義上來講,代碼生成工具支持所有處理器,即便是在現(xiàn)有列表里找不到的處理器,也可以通過自己定制的方式定制字長等信息,實(shí)現(xiàn)對這款處理器的支持。

M配置參數(shù)中的代碼替換選項(xiàng)
在配置參數(shù)里,還有一個(gè)可能引起用戶困惑的地方,那就是代碼替換選項(xiàng)(Code Replacement)。在有些版本的MATLAB里面,配置參數(shù):
Configuration Parameters > Code Generation > Interface > Code replacement library
選項(xiàng)里,也列出了不少處理器,下圖是來自于MATLAB R2016b的選項(xiàng)。
這里我們看到了一些ARM處理器,TI的某些處理器等等:

這個(gè)選項(xiàng)的目的是為了實(shí)現(xiàn)代碼優(yōu)化,比如,通常我們做除法運(yùn)算都是通過除法運(yùn)算符“/”實(shí)現(xiàn),x/y實(shí)現(xiàn)x除以y的運(yùn)算,而有的半導(dǎo)體廠商可能通過專門的除法運(yùn)算接口,比如divide(x, y),通過這個(gè)接口運(yùn)算,編譯之后的代碼在速度上可能會比x/y更快。
半導(dǎo)體公司如果提供類似一些指令級的優(yōu)化,通常可以通過代碼替換的方式實(shí)現(xiàn),以剛才提到的除法運(yùn)算為例,如果半導(dǎo)體公司對某些運(yùn)算做了優(yōu)化,并封裝成庫文件的形式,在代碼生成之后,生成的代碼里就沒有“/”實(shí)現(xiàn)的除法運(yùn)算,而是通過divide()實(shí)現(xiàn)。
除了半導(dǎo)體公司可能提供這類優(yōu)化之外,用戶也可以自己做類似的優(yōu)化,對于一些運(yùn)算量很大的運(yùn)算,我們經(jīng)常使用查表的方式實(shí)現(xiàn),比如,算法中有sine運(yùn)算,但速度可能難以滿足我們的要求,在工程上,我們通常使用查表的方式實(shí)現(xiàn)sine運(yùn)算,我們也可以通過制作代碼替換庫,并讓算法代碼中不出現(xiàn)標(biāo)準(zhǔn)數(shù)學(xué)庫里的sin()運(yùn)算,而是my_sine()等自己定義的由查表實(shí)現(xiàn)的運(yùn)算。
當(dāng)然,如果我們對速度沒有要求,我們可以無視這個(gè)代碼替換選項(xiàng)。
不管替換與否,我們不難看出:
從這個(gè)層面上,代碼生成工具也是支持所有處理器的。
很多人關(guān)心生成的代碼是否支持某某處理器的疑問,基本上是來自于上述三個(gè)原因吧。
-
處理器
+關(guān)注
關(guān)注
68文章
20255瀏覽量
252340 -
代碼
+關(guān)注
關(guān)注
30文章
4968瀏覽量
73989
發(fā)布評論請先 登錄
不只有AI協(xié)作編程(Vibe Coding):生成式系統(tǒng)級芯片(GenSoC)將如何把生成式設(shè)計(jì)推向硬件層面
2025支持AI 驅(qū)動數(shù)字化轉(zhuǎn)型的低代碼開發(fā)平臺有哪些
低代碼開發(fā)平臺推薦:2025國內(nèi)低代碼開發(fā)平臺排名TOP10
語法糾錯(cuò)和testbench的自動生成
2025主流低代碼平臺有哪些:低代碼開發(fā)平臺選型指南指南
使用Simulink自動生成浮點(diǎn)運(yùn)算HDL代碼(Part 1)
工業(yè)物聯(lián)網(wǎng)平臺有哪些低代碼應(yīng)用
測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案
HarmonyOSAI編程編輯區(qū)代碼生成
360環(huán)視技術(shù)推薦的硬件平臺:支持多攝像頭與三屏異顯的理想選擇
STM32+esp8266連接機(jī)智云,上傳溫濕度數(shù)據(jù)并控制繼電器開關(guān)(平臺配置、代碼生成、代碼移植)
AI 智能重構(gòu)測試測量平臺,Moku:Delta集成業(yè)內(nèi)首創(chuàng)“生成式儀器”
主流機(jī)器視覺軟件開發(fā)平臺介紹及對比?
關(guān)于自動生成的代碼支持的硬件平臺介紹
評論