我是一名软件工程师,可能/可能被聘为固件测试工程师.我只是想了解市场上用于测试固件的一些软件工具.您能说明一下并解释一下它们为固件提供哪种类型的测试?提前致谢.
我在ISR中有一些代码.代码是为了完整性而给出的,问题只是关于注释掉的__asm_块.
如果没有__asm_块,则会将其编译为82条指令.使用__asm_块,结果是107条指令.为什么差别很大?
这是C代码:
if (PIR1bits.SSPIF)
{
spi_rec_buffer.read_cursor = 0;
spi_rec_buffer.write_cursor = 0;
LATAbits.LATA4 ^= 1;
// _asm nop nop _endasm
LATAbits.LATA4 ^= 1;
while (!PORTAbits.NOT_SS && spi_rec_buffer.write_cursor < spi_rec_buffer.size)
{
spi_rec_buffer.data[spi_rec_buffer.write_cursor] = SSPBUF;
SSPBUF = spi_out_msg_buffer.data[spi_out_msg_buffer.read_cursor];
PIR1bits.SSPIF = 0;
spi_rec_buffer.write_cursor++;
spi_out_msg_buffer.read_cursor++;
if (spi_out_msg_buffer.read_cursor == spi_out_msg_buffer.write_cursor)
LATAbits.LATA4 = 0;
LATBbits.LATB1 = 1;
while (!PORTAbits.NOT_SS && !PIR1bits.SSPIF);
LATBbits.LATB1 = 0;
}
spi_message_locked = true;
spi_message_received = true;
}
Run Code Online (Sandbox Code Playgroud)
没有NOP:
BTFSS 0x9e,0x3,0x0 if (PIR1bits.SSPIF)
BRA 0x2ba
{
MOVLB 0xf spi_rec_buffer.read_cursor = 0;
CLRF …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一个GCC C编译器指令允许我确定结构打包的位顺序?喜欢的东西:
#pragma bit_order left
Run Code Online (Sandbox Code Playgroud)
这种需求的基本原理是我有以下结构:
struct {
union {
unsigned char BYTE;
struct {
unsigned char B0: 1;
unsigned char B1: 1;
unsigned char B2: 1;
unsigned char B3: 1;
unsigned char B4: 4;
}BIT;
}ITEM;
} myStruct;
Run Code Online (Sandbox Code Playgroud)
有了这个结构,我希望编译器以这种方式打包它:
Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B0 B1 B2 B3 B4 B5 B6 B7 |
Run Code Online (Sandbox Code Playgroud)
而不是GCC如何做到:
Bit order: | 7 6 5 4 3 2 1 0 |
Label: |B7 B6 B5 B4 …Run Code Online (Sandbox Code Playgroud) 基本上,我正在寻找C库中提供的实现log()和exp()功能<math.h>.我正在使用8位微控制器(OKI 411和431).我需要计算平均动力学温度.要求是我们应该能够尽可能快地计算MKT并尽可能少地使用代码存储器.编译器附带log()并exp()运行<math.h>.但调用两个函数,并与库链接会导致代码大小5千字节,这将不适合于我们与(OKI 411)工作在微的一个增加,因为我们的代码已经消耗〜12K可用〜15K代码存储器.
我正在寻找的实现不应该使用任何其他C库函数(如pow(),sqrt()等).这是因为所有库函数都打包在一个库中,即使调用了一个函数,链接器也会将整个5K库带到代码存储器中.
编辑
该算法应该最多3位小数.
[更新]我正在为此提供奖金.坦率地说,我不关心使用哪种加密方法.最好像XTEA,RC4,BlowFish这样的东西...但你选择了.
我想要最小的努力,最好只是将文件放入我的项目并构建.
理想情况下,您应该已经使用代码在Delphi和C中对文件进行加密/解密(我想在Atmel UC3微处理器(C编码)和Windows PC(Delphi编码)之间交换文件. -de-crypt两个方向).
我非常喜欢单个.PAS单元和单个.C/.H文件.我不想使用DLL或支持几十种加密算法的库,只需要一个(我当然不希望安装程序有任何东西).
我希望我在这里听起来不太挑剔,但我一直在谷歌搜索和尝试代码超过一个星期仍然找不到两个匹配的实现.我怀疑只有已经做过这件事的人可以帮助我......
提前致谢.
作为我上一篇文章的后续内容,我仍然在寻找一些非常简单的代码,为什么我可以 - 用最少的努力 - 加密文件并在PC上的Delphi和Atmel UC3 u-processor上的C之间进行交换.
这在理论上听起来很简单,但在实践中这是一场噩梦.有很多可能的候选人,我花了几天谷歌搜索并试用它们 - 无济于事.
有些是humonous库,支持许多加密算法,我想要一些轻量级的东西(特别是在C/u处理器端).
有些看起来很好,但是一组源只提供块操作,其他字符串(我更喜欢整个文件en/de-crypt).
大多数文档似乎记录很差,没有无意义的参数名称,也没有调用函数的示例代码.
在过去的周末(再加上几天),我已经烧掉了大量的XTEA,XXTEA和BlowFish实现,但是虽然我可以加密,但我无法逆转这个过程.
现在我在看AES-256.有谁知道C中的实现是一个AES.C文件?(当然还有AES.H)
坦率地说,我将采取任何可以在Delphi和C之间进行整个文件加/解的方法,但除非任何人自己实际完成此操作,否则我希望只听到"符合标准的任何实现都应该这样做" - 这是一个不错的选择理论但只是没有为我工作:-(
C中有任何简单的AES-256吗?我有一些看起来很合理的Delphi代码,但在我一起尝试之前不会确定.
提前致谢 ...
我正在使用嵌入式主板,但我不知道相同的启动代码(C /汇编)的流程.
在嵌入式系统的情况下,我们是否可以讨论启动操作所采取的一般模块/步骤.
只是高级概述(算法)就足够了.欢迎所有的例子.
/ Kanu__
一个区别是微控制器通常设计用于执行一小组特定功能,而微处理器则用于巨大的通用功能.
还要别的吗??
假设我正在为Arduino(或任何其他微控制器)开发故障安全机制.换句话说,当主控制器发生故障时,辅助微控制器或单独的电路板应该负责.
两种可能的机制如下.
方法1 - 客户端服务器机制
方法2 - 心跳机制
你们有没有更好的机制来实现这个?
我想在python中使用Decimal()数据类型并将其转换为整数和指数,以便我可以将数据发送到具有全精度和十进制控制的微控制器/ plc.https://docs.python.org/2/library/decimal.html
我有它工作,但它是hackish; 有谁知道更好的方法?如果不是我自己用什么路径写一个较低级别的"as_int()"函数?
示例代码:
from decimal import *
d=Decimal('3.14159')
t=d.as_tuple()
if t[0] == 0:
sign=1
else:
sign=-1
digits= t[1]
theExponent=t[2]
theInteger=sign * int(''.join(map(str,digits)))
theExponent
theInteger
Run Code Online (Sandbox Code Playgroud)
对于没有编程PLC的人,我的替代方法是使用int并在两个系统中声明小数点或使用浮点(只有一些PLC支持)并且是有损的.所以你可以看到为什么能够这样做会很棒!
提前致谢!