草庐IT

EMBEDDED

全部标签

c++ - ARM C++ - 如何将 const 成员放入闪存中?

我有这个代码classIO{public:IO(LPC_GPIO_TypeDef*port,intpin):_pin(pin),_port(port){};constint_pin;LPC_GPIO_TypeDef*const_port;voidtest(){LPC_GPIO0->FIOSET=0;}};IOled1(LPC_GPIO0,5);intmain(){led1.test();return0;}当我编译它时,我得到了textdatabssdechexfilename65608664298lpc17xx我希望const_port和_pin变量存储在闪存中,因为它们被标记为con

c++ - g++ : Using singleton in an embedded application

我正在使用C++中的GNUARM工具链使用GCC4.8为CortexM3开发嵌入式应用程序。该应用程序使用了一些通过函数局部静态变量实例化的单例,就像这样(真实代码):GlobalDataTypeRegistry&GlobalDataTypeRegistry::instance(){staticGlobalDataTypeRegistryinst;returninst;}这是在C++中实现单例的经典方法。问题是一旦我使用这种实例化,输出代码大小就会激增,这显然意味着编译器/链接器添加了一些服务代码以正确初始化/销毁单例对象。这是允许重现问题的最小示例:这将编译成66k代码(-Os):s

c++ - 如何在嵌入式系统闪存上存储文本文件并从中读取

我正在尝试执行以下操作:将文本文件(7kB)存储在STEVAL-MKI109V2(使用freeRTOS运行)板的闪存中并读取此文本文件并在设备本身上使用它进行一些计算。我有两个问题:1)存储文本文件将文本文件添加到我的keil项目中就足够了吗?编译后可以访问吗?2)访问数据直到现在,这就是我失败的地方。起初我尝试使用stdio.h中的fopen()但我在编译时遇到了一些错误。我发现我的项目是使用microLib编译的,它似乎不包含文件I/O。在使用标准C库编译后,它是成功的,但是一旦我到达代码中的fopen部分,系统就会崩溃。现在我不知道原因是没有找到文本文件还是我不能在我的嵌入式系统

c++ - 添加 long 值显示不同的 o/p

我在添加长值时遇到问题例子typedefunsignedshortUINT16;UINT16*flash_dest_ptr;//thisisequaltoinhexa0XFF910000UINT16data_length;//hex=0x000002AA&dec=682//nowwhenIaddUINT16*memory_loc_ver=flash_dest_ptr+data_length;dbug_printf(DBUG_ERROR|DBUG_NAVD,"ADDhex=0x%08X\n\r",memory_loc_ver);实际O/p=0xFF910554//shouldn'to/p

c++ - 德州仪器数字信号处理器 : interfacing C++ and assembly

我发布了thisQtoTI's28xxDSPforum但还没有听到回应,我想也许这里有人知道。我知道如何在汇编中编写函数以便它们可以被C调用;如果C语言可调用名称为foo(),则汇编函数名为_foo()。如果我想使用C++并优化汇编中的类方法怎么办?我怎么做?我认为唯一的主要问题是:命名访问“this”指针通过知道偏移量来访问类成员如果我不想担心最后两个,那么也许我会编写一个静态成员函数并执行此操作:classMyClass{intx;staticint_doSomething(intu);//implementthisinassemblypublic:inlinevoiddoSome

c++ - 想写电气工程相关的开源软件

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion如果这个问题有点宽泛,我深表歉意。希望您的回答能帮助我将范围缩小到更有意义的问题。我在软件工程方面经验丰富,最近与一位friend交谈,他认为如今电气工程非常受软件驱动。我正在努力提高我对电气工程方面事物和想法的理解,因为我已经了解软件,一个好方法可能是编写与电气工程师相关的软件或库。当然,我更愿意写一些与尽可能多的人相关的东西,这样它不仅对我有用,而且对其他人也有用。因此,我的计划是编写一个库并将其开源

c++ - ROMable(但复杂)的(ROMable)对象数组 - 如何解决?

我正在为MCU(ARMCortex-M3)开发固件。这些设备没有很多RAM,因此无论如何您都应该尝试将数据放在常量内存(闪存)中。问题是这样的:设备必须提供可由接口(interface)(MODBUS)读取的“寄存器”,因此运算符(operator)读取“地址”10并获得一些数字,他/她“写入”到“地址”“101它会引起一些Action等。将有数百个这些“地址”并且访问它们会引起一些Action-例如从1-10读取导致传感器1到10上的温度测量,从11-读取20导致读取一些校准值,写入这些地址导致这些校准值存储在非volatile存储器等中-会有很多不同的功能(;目前我是这样实现的:有

c++ - 允许堆分配短期范围内的对象以确保内存碎片的自由

我们在嵌入式系统环境中使用C++,基本上不需要任何类型的动态内存分配(例如Resourcesformemorymanagementinembeddedapplication,我们不这样做的原因)。我们仍然不想没有一些很好的基于C++的特性,例如STL容器和std::string。对于第一个,我们会在初始化时保留一个特定的大小,并且不会让容器超出其容量。对于后者(std::string),我对如何“安全地”使用它们有点怀疑,因为它们有时会在堆上分配内存。不过,我发现在某些情况下,使用std::string(通常还有其他堆分配对象)似乎没问题:我会在堆栈上分配对象本身(在由{}分隔的特定范

C++ 运算符重载错误检查无异常

我有一个类似于vector的类,它主要是一个动态大小的数组。我正在为资源有限的平台编写它,因此我必须不使用异常。很明显,要使用运算符重载来简化此类动态分配的接口(interface),必须在某些运算符重载函数中执行。赋值运算符(=)就是一个例子。尽管无一异常(exception),以一种明智的方式将错误的分配错误通知调用者,同时仍然保持强大的错误安全性变得相当具有挑战性。我可以有一个类的错误属性,调用者必须在每次涉及动态分配的调用后检查它,但这似乎不是一个最佳解决方案。编辑:这是我目前得到的最好的想法(在上一段中被突出显示为一个不太理想的解决方案),任何改进将不胜感激:dyn_arr&

c++ - 如何停止优化器丢弃未使用的变量?

我想调试我的代码,但无法访问进程中的内部层,因为这会干扰与硬件的通信。(在监视列表会干扰基本读取访问的情况下执行volatile操作。)所以我正在测试接口(interface)的返回值,但IAR编译器甚至优化了未使用的volatile变量。和这样的声明:i=object.foo();if(i)i=i;也没有帮助。我在SO上找到的只是回答了该情况下使用i/o操作的建议。但这也不是一个选择,因为我没有包含C标准库的选项。并且项目本身不需要i/o,没有自己的输入/输出函数变体。那么除了禁用优化器,我还有什么选择呢? 最佳答案 最可靠的方法