2014-02-18 65 views
0

我想知道在使用嵌入代碼從Simulink模型生成代碼之後是否可以避免MISRA警告10.1,13.2和12.6(或者是否可以生成代碼有辦法?)。避免MISRA警告,從嵌入式編碼器生成自動代碼

e.g(生成的代碼)

if (A) 
{;} 

在如果(A)語句是有MISRA違反。

是否有可能與嵌入式編碼器生成的代碼等

if (A !=0) 
{;} 
+0

您應該只得到一個警告13.2從該代碼。如果你的工具對其他任何東西都抱怨,它會被破壞。 – Lundin

+0

是的,這是真的,我試圖找出是否有可能避免這種警告。那配置嵌入式編碼器生成的代碼沒有警告 – user3285192

+0

我假設「A」是一個布爾類型?你不能告訴/配置你的分析器,該類型是布爾值嗎? – Andrew

回答

0

我有困難產生這種類型的構建體,如果(A)的不使用布爾類型在這種情況下,沒有違反規則13.2。

沒有布爾類型,我得到的東西沿着這些路線:

如果(A> 1){ ...}

我用的R2015b釋放。如果您可以共享生成此類代碼的示例模型,那將會很好。

此外,根據MISRA AC AGC標準(在自動代碼生成環境下應用MISRA-C:2004的指導原則),推薦列出所有列出的規則(10.1,12.6,13.2),並非強制性規定。

因此,遵守這些規則取決於您的應用程序的關鍵性。

即使在最新的MISRA 2012標準中,這些規則已被重新分類,它們仍然被歸類爲生成代碼上下文中的諮詢。

有關的生成代碼MISRA合規的一般信息,這是一個很好的參考:

http://www.mathworks.com/solutions/automotive/standards/misra-c.html

http://www.mathworks.com/solutions/aerospace-defense/standards/misra-c.html