草庐IT

write_external_storage

全部标签

memory - 断电时如何防止 "partial write"数据损坏?

在嵌入式环境中(使用MSP430),我看到一些数据损坏是由于部分写入非volatile内存而导致的。这似乎是由于写入期间的功率损耗(写入FRAM或信息段)造成的。我正在使用CRC验证存储在这些位置的数据。我的问题是,防止这种“部分写入”损坏的正确方法是什么?目前,我已修改我的代码以写入两个单独的FRAM位置。因此,如果一个写入中断导致无效的CRC,则另一个位置应保持有效。这是一种常见的做法吗?我是否需要为任何非volatile内存实现这种双重写入行为? 最佳答案 一个简单的解决方案是维护两个版本的数据(在闪存的不同页面中),当前版本

c++ - read_some/write_some 和接收/发送之间的区别?

我开始使用BoostAsio的TCP套接字。read_some和有什么区别和receive和write_some有什么区别?和send?谢谢! 最佳答案 据我所知,read_some和receive实际上是在做同样的事情。我认为只接收调用read_some或反之亦然。一个命名来自将套接字视为文件(读/写)的想法,而另一个命名来自连接(发送/接收)点看法。write_some和send也应该如此。 关于c++-read_some/write_some和接收/发送之间的区别?,我们在Stac

MongoDB Docker 容器 : ERROR: Cannot write pid file to/tmp/tmp. aLmNg7ilAm:设备上没有剩余空间

我像这样启动了一个MongoDB容器:dockerrun-d-p27017:27017--net=cdt-net--namecdt-mongomongo我看到我的MongoDB容器退出了:0e35cf68a29cmongo"docker-entrypoint.s…"LessthanasecondagoExited(1)3secondsagocdt-mongo我检查了我的Docker日志,我看到了:$dockerlogs0e35cf68a29cabouttoforkchildprocess,waitinguntilserverisreadyforconnections.forkedpro

MongoDB Docker 容器 : ERROR: Cannot write pid file to/tmp/tmp. aLmNg7ilAm:设备上没有剩余空间

我像这样启动了一个MongoDB容器:dockerrun-d-p27017:27017--net=cdt-net--namecdt-mongomongo我看到我的MongoDB容器退出了:0e35cf68a29cmongo"docker-entrypoint.s…"LessthanasecondagoExited(1)3secondsagocdt-mongo我检查了我的Docker日志,我看到了:$dockerlogs0e35cf68a29cabouttoforkchildprocess,waitinguntilserverisreadyforconnections.forkedpro

c++ - VS2012 : 'nmake' is not recognized as an internal or external command

我尝试了VS2012NativeTools、CrossTools和Developers命令提示符。它不识别'nmake'。它在VS2010上也不起作用。在VS2008上,找不到windows.h之类的依赖我想为VS2012构建一个静态库curl:http://quantcorner.wordpress.com/2012/04/08/using-libcurl-with-visual-c-2010/ 最佳答案 对于VisualStudio2015社区版,将以下路径添加到您的系统环境路径C:\ProgramFiles(x86)\Micr

c++ - `extern "C"`是函数类型的一部分吗?

除了链接相关的东西,我在标准中没有看到任何评论。虽然标准没有说明调用约定,但在现实世界中,C和C++之间的调用约定可能有所不同,所以我预计C函数和C++函数的类型是不同的。但似乎不是,尤其是在GCC中。#includeextern"C"{intc_func(int);}intcpp_func(int);static_assert(!std::is_same::value,"Itshouldnotbethesametype");static_assert失败,因为GCC认为这些函数具有相同的类型。extern"C"是函数类型的一部分吗?如何检查函数是使用C调用约定还是C++调用约定?

c++ - MinGW: "gcc is not recognized as an internal or external command"

我下载并安装了MinGW。我使用图形程序安装C++编译器。在Windows命令行中键入gcc会打印:gccisnotrecognizedasaninternalorexternalcommand我检查了,gcc.exe存在于C:\MinGW\bin中。怎么了? 最佳答案 虽然是一个老问题,但这里的答案都没有帮助我。我发现到达目的地的唯一路线是在命令提示符下输入以下行:复制:设置Path=C:\MinGW\bin;%PATH%之后,只需输入gcc-v。希望这对解决我遇到的问题的人有所帮助!

c++ - 写入套接字时使用 write() 而不是 send() 的性能影响

我正在使用典型的套接字API在Linux平台上用C++编写网络应用程序,并且我正在研究将字节数组写入TCP流的两种替代方法:通过调用write()或通过调用发送()。我知道,由于这是Linux,套接字句柄只是一个文件描述符,因此对套接字执行read()和write()调用是有效的,但是套接字API还提供了send()和recv()函数来执行相同的任务。因此,我想知道是否有任何特别的理由选择一类函数而不是另一类——发送/接收函数是否针对网络写入/读取进行了优化,它们的性能是否更好等?或者我使用哪些功能真的很随意?read()和write()在所有情况下都能正常运行吗?感谢您的任何见解!

c++ - 使用 extern "C"时,带大括号或不带大括号有区别吗?

所以,虽然是schooledbyJamesKanzeandLokiAstariaboutClinkage,我想知道这个:extern"C"intfoo1(void(*)());extern"C"{intfoo2(void(*)());}毕业后,我想一定是foo1只接受一个带有C++链接的函数指针,而foo2只接受一个带有C链接的函数指针。我的理解正确吗?C++标准中是否有具体的引用资料可以解释我上面示例中的差异?编辑:为了让每个人都能更轻松地跟进here'sapastebinwiththerelevantpartfromtheC++11draftstandard.

c++ - GNU STL 字符串 : is copy-on-write involved here?

(免责声明:我不知道C++标准对此会说什么……我知道,我很糟糕)在处理非常大的字符串时,我注意到std::string正在使用写时复制。我设法编写了最小的循环来重现观察到的行为,例如,下面的循环运行得非常快:#includeusingstd::string;intmain(void){stringbasestr(1024*1024*10,'A');for(inti=0;i在循环体a_copy[1]='B';中添加写入时,显然发生了实际复制,并且程序在0.3秒内运行,而不是几毫秒。100次写入使其速度减慢了大约100倍。但后来变得很奇怪。我的一些字符串没有写入,只是读取,这没有反射(re