embedded相关内容
链接器是报告多次定义错误的内联函数。 我有一个头文件如下code: 结构Port_Pin { 挥发性uint32_t的* port_addr_set_value; //&LT!;这里写的引脚值引脚设置为高。 挥发性uint32_t的* port_addr_clr_value; //&LT!;写引脚值到这个端口清除引脚为低电平。 挥发性uint32_t的* port_ad
..
我想调用下面的宏在我的.cpp文件: 的#define IAP_ROM_LOCATION 0x1FFF1FF1UL 的#define IAP_EXECUTE_CMD(A,B)((无效(*)())(IAP_ROM_LOCATION))(A,B) 然而,当我打电话说,像这样的功能: IAP_EXECUTE_CMD(0,0); 我得到一个错误说太多参数指定?这怎么样?我想AP preciate
..
说我有类似下面的结构... typedef结构{ INT WheelCount; 双MAXSPEED; }车辆; ...我有这种类型的全局变量(我很清楚全局的缺陷,这是一个嵌入式系统,这是我没有设计,以及他们是不幸的,但必要之恶。)是否有更快的直接或通过指针访问结构的成员?即双LocalSpeed = MyGlobal.MaxSpeed; 或双LocalSpeed
..
虽然,据我记得,IEEE 754只字未提刷新到零的方式来处理正规化数的速度更快,某些架构提供这种模式(如的http:// docs.sun.com/source/806-3568/ncg_lib.html )。 在此技术文档的特定情况下,非正规数的标准处理是默认的,并刷新到零,必须明确激活。在默认模式下,非正规数也在软件,这是较慢的处理。 我的静态分析仪嵌入式C它试图predict正确的工作(
..
是否有确定的角度的斜边一个聪明/高效的算法(即的sqrt(A²+称b²)),使用无硬件的嵌入式处理器上定点数学乘? 解决方案 除非你这样做是在> 1kHz时,在MCU甚至成倍没有硬件 MUL ISN“ Ť可怕。更糟糕的是多少开方。我会尝试修改我的应用程序,因此并不需要在所有的计算。 标准库很可能是最好的,如果你真的需要它,但你可以看看使用牛顿方法作为可能的选择。这将需要数乘法/除法周期不
..
背景: 我正在开发使用爱特梅尔AVR atmega2560一个相当大的项目。这个项目包含了大量的基于硬件功能(7 SPI器件,2 I2C,2个RS485 MODBUS口,大量的模拟和数字I / O的)。我所研制的“驱动程序”为所有这些设备提供了哪些主要应用循环与访问所需数据的接口。 问: 我开发该项目最终将必须符合SIL标准。 我想是能够测试code和提供code覆盖一个良好的水平。但是我
..
在另一个线程,有人告诉我,一个开关可能比在速度和紧凑性方面具有的查找表的更好。 所以我想明白这之间的区别: 查找表 静态无效func1的(){} 静态无效FUNC2(){}的typedef枚举 { FUNC1, FUNC2, FUNC_COUNT } state_e;无效的typedef(* func_t)(无效);常量func_t LookupTable中[FUNC
..
我工作的一个嵌入式DSP在速度是至关重要的,而内存是非常短的。 目前,sprintf的是我的code最大(迄今为止)的功能,我用它来格式化一些简单的文字:%D,%E,%F,%S ,只能自认倒霉precision或异国情调的操作。 有一个现有的重新实施(S)的printf的有限子集,这将是更适合我的使用情况? 无precision符或一些不起眼的功能(零填充比如)一个版本将是完美的。 我没有
..
我刚刚碰到的声明在嵌入式C(dsPIC33系列) SAMPLE1 = SAMPLE2 = 0; 请问这意味着 SAMPLE1 = 0;SAMPLE2 = 0; 为什么他们键入这样说?这究竟是好还是坏的编码? 解决方案 请记住,分配做从右到左,他们是正常的前pressions。因此,从编译器的角度行 SAMPLE1 = SAMPLE2 = 0; 是相同的 SAMPLE1 =(SA
..
对于嵌入式项目一个很小的XML解析器后我。它需要编译下至10-15k,并不需要验证,并且需要以简单,便于携带。 解决方案 我能够调整对C以下XML解析器库的编译标志,并减少它们的大小超过50%的我的Ubuntu的机器上。迷你XML是唯一一个接近你的要求是什么: 的Mini-XML (36K) 外籍(124K) RXP (184K) 有一个很好的讨论,在这里:
..
我想创建一个图形用户界面微控制器驱动的应用程序(爱特梅尔XMEGA )被连接到一个128×64点图形的LCD( EA DOGL128-6 的)和4个按钮用于导航 控制显示器本身(如绘制像素和字符)的否的问题,但以prevent我从重新发明轮子,我使用Google的一个GUI库/ -Toolkit即用C语言编写,包括它的源$ C $ C,将一个32 MHz的8位微控制器上运行,并至少提供以下控
..
我目前正在管理的多个平台上从单一的源代码树的(Win32,Linux和Verifone的CC端子,MBED甚至任天堂GBA / DS)中运行一些C ++ code。不过,我需要(仅C)建立在一个嵌入式平台,其中有没有C ++编译器为对象的应用程序。我remmber,很多早期的C ++编译器只是前端stitting现有的C编译器(铁琴如使用MSC)。是否有任何使用这种“前端”C ++编译器今天将生成
..
任何人都有成功直接在嵌入式硬件自动化测试? 具体来说,我想到的自动化单元测试硬件层模块的电池。我们需要在我们的硬件层code更大的信心。我们的很多项目都使用中断驱动定时器,模数转换器,串行IO,串行SPI设备(闪存)等。 这甚至值得努力? 我们通常的目标: 处理器:8或16位微控制器(DSP的一些东西) 语言:C(有时是C ++)。 解决方案 当然。在汽车行业,我们用$ 10
..
我正在为该公司使用XML将数据传输到了系统的嵌入式系统的项目。我不想让XML处理下放成一堆生成使用的snprintf() / 的strcat()XML字符串位和朋友或通过计算分析XML“< ”和“> 。”字符 我已经发现了几个XML库,一对夫妇,其中甚至可能是足够小,但他们来为C最接近的是C ++,这是不是在卡这个系统。我希望我能找到符合以下限制的XML库: C源$ C $
..
很多时候的malloc()编程的嵌入式系统时是绝对不允许的。大部分时间我pretty能够解决这个问题,但有一件事让我恼火:它让我使用所谓的“不透明类型”,以使数据隐藏。通常,我会做这样的事情: //在module.h中的文件 typedef结构为handle_t为handle_t;为handle_t * create_handle(); 无效operation_on_handle(为handl
..
假设我要使用C(没有C ++或面向对象的编译器),我没有动态内存分配,都有些什么技术,我可以用它来实现一个类或一类的一个很好的近似?是否总是一个好主意,“阶级”隔离到一个单独的文件?假设我们可以preallocate存储器通过假设实例的固定数量,或者甚至限定为恒定之前编译时间的参考的每个对象。随意作出假设哪些OOP概念,我需要实现(它将不同),并建议最好的方法为每个 限制: 我要使用C和不
..
我的软件也越来越UTF8中一些字符串比我需要转换为ISO 8859 1.我知道UTF8域比ISO 8859.大,但在UTF8数据已$ P $从ISO pviously上变频,所以我应该不会错过任何东西。 我想知道是否有从UTF8转换为ISO-8859-1一个简单/直接的方式。 感谢 解决方案 下面是你可能会发现有用的函数: utf8_to_latin9()。它转换成 ISO-8859-
..
我发现通过pic1250.h的名称PIC单片机这个头文件,我无法得到它使用的一些语法的窍门。 该文件的来源是: / * *为Microchip的头文件 * PIC芯片12c508 * PIC芯片12c509 *基线微控制器 * /静态挥发unsigned char型RTCC @ 0×01; 静态挥发unsigned char型TMR0 @ 0×01; 静态挥发unsigned ch
..
在多线程嵌入式软件(用C或C ++),线程必须以允许它完成它的操作不会溢出给予足够的堆栈空间。堆栈的正确尺寸,在一些实时嵌入式环境至关重要,因为(至少在一些系统中我使用过),操作系统将不会检测这个给你。 通常,对于一个新的线程的堆栈大小(比主线程其他)在该线程被创建时指定(即,在一个参数给pthread_create()等)。通常,这些堆栈大小是硬coded到已知要善于在code最初是书面或测试
..
有人能解释一个跳转表的机制和为什么会在嵌入式系统需要? 解决方案 一个跳转表可以是一个指针数组功能或机器code跳转指令的数组。如果你有一个相对静态的功能集(比如系统呼叫或一类的虚函数),那么你可以创建这个表一次,并使用一个简单的索引数组调用的函数。这将意味着检索指针和调用功能或根据所用表的类型跳跃到机器code 在嵌入式编程这样做的好处是: 指数比机器code或指针存取效率更高,
..