问题标签 [embedded-coder]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
20 浏览

c - Embedded Coder:将 C 代码连接到定点模型输入

我有一个使用定点类型接口开发的 Simulink 模型。我必须将生成的代码集成到部分输入变量采用浮点编码的环境中。

没有人喜欢手动编写接口代码,因此我问(也许有人已经遇到过这个问题)是否有办法让 Simulink 为它的每个基本类型生成从 FixedPoint 到 FloatingPoint 的 Encode-Decode 函数。

我认为将实用函数用作使用 FloatingPoint 和 FixedPoint 算术的模块之间的接口会非常有用。我知道我可以手动生成它们,为“数据类型转换”块生成代码,但这会扼杀目的,并且不如手动编写它们实用。

0 投票
1 回答
488 浏览

c - Atoi() 针对错误注入的漏洞

我在嵌入式 c 应用程序中使用 atoi 将字符串转换为整数。但是,我可以使用时钟故障注入攻击来利用 atoi() 中的漏洞。我的意思是当我有一个或多个故障时,处理器会丢失一些字符并返回错误的整数。atoi 函数是否有任何替代方法可以更强大地防止故障注入?我可以使用它的互补(itoa 函数)来重新生成字符串并比较两个字符串吗?

  • 我将 strtol 函数视为验证的替代方法,而不是 atoi()。这可能是我的问题还是它只是返回软件错误?
0 投票
0 回答
42 浏览

python - 如何自动化嵌入式 c 代码的单元测试?

我想自动化 ASCET 生成的嵌入式 C 代码的单元测试。我打算使用python进行测试自动化。但是,如果有更好的免费工具来执行自动化,请告诉我

我知道有一套测试自动化工具可用,但没有一个能满足我的要求。我的单元测试的目标是检查

  1. 语句覆盖率:应测试代码行以检查边界条件和死代码

  2. 分支覆盖:对于一个决策语句,检查它的正面和负面条件是否可以被测试

  3. 修改后的条件/决策语句:对于决策语句中的多项检查,检查所有可能性

我将举一个例子来说明目标的含义

所有这些可能性都有待检验。此外,还应创建测试文档(以 excel 格式),其中应提供有关所有 TC 的所有信息以及他们已达到的测试目标。

注意:单个 TC 可以满足多个测试目标

示例:我有一个需要 2 个输入的函数:Ackermann 偏航率 (dPsiAck) 和偏航率 (dPsi),并给出一个输出:过度转向 (OS)

在此处输入图像描述

我的代码如下所示:

每个变量的大小是这样的

  • dPsi = - 2 到 2
  • dPsiAck = -2 到 2
  • 操作系统 = 0 到 1.5
  • 内存 = -2 到 2
  • P_Thresh = 0 到 1,默认值为 0.2

现在单元测试目标应该检查以下内容:

对于第一个 LOC:mem = min(dPsi,0.2):语句覆盖率应检查以下内容:

  • dPsi 大于 0.2
  • dPsi 小于 0.2

分支机构和 MCDC 覆盖范围不适用于 1st LOC,因此不应检查它们

对于第二个 LOC:如果 (abs(dPsiAck-dPsi) > P_Thresh && dPsiAck > dPsi)

语句覆盖率应检查以下内容:

  • dPsiAck-dPsi 大于 0
  • dPsiAck-dPsi 小于 0

分支覆盖率应检查以下内容:

  • dPsiAck-dPsi 大于 P_Thresh
  • dPsiAck-dPsi 小于 P_Thresh
  • dPsiAck 大于 dPsi
  • dPsiAck 小于 dPsi

令 abs(dPsiAck-dPsi) > P_Thresh 为 C1 并且 dPsiAck > dPsi 为 C2

MCDC 覆盖范围应检查以下内容:

  • C1 为真,C2 为真
  • C1 为真,C2 为假
  • C1 为假,C2 为真
  • C1 为假,C2 为假

对于 LOC3:OS = dPsiAck/mem

声明应检查以下内容:

  • 内存的 OS 值 = 0
  • dPsiAck 大于 mem
  • dPsiAck 小于 mem

没有分支覆盖和 mcdc 覆盖适用于此 LOC。因此不需要测试

对于 LOC 4:否则分支覆盖应检查

  • 其他条件满足
  • else 条件不满足

声明覆盖率和 mcdc 覆盖率适用于此 LOC。因此不需要测试

LOC 5:OS = 0 是直接赋值,因此单元测试的所有目标都不适用

请让我知道如何继续解决这个问题。任何可以用来解决这个问题或用作解决问题的起点的参考资料、书籍或算法也可以共享