- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想读取 MCU 的整个程序闪存的存储位置的值,特别是 OpenMote-CC2538 上的 CC2538。然后将读取的值计算为当前所有值的大总和。
此时,我有以下代码来遍历内存并获取值
uint64_t readMemory() {
unsigned char * bytes = (char *) 0x200000;
size_t size = 0x0007FFD4;
size_t i;
uint64_t amount = 0;
for (i = 0; i < size; i++) {
amount += bytes[i];
}
return amount;
}
uint64_t readFlashMemory() {
unsigned int * bytes = (int *) 0x200000;
size_t size = 0x0007FFD4;
size_t i;
uint64_t amount = 0;
for (i = 0; i < size; i+=4) {
amount += FlashGet(bytes);
bytes++;
}
return amount;
}
地址0x200000,大小为0x0007FFD4。第一个函数使用 char 并逐一访问每个地址,而第二个函数使用 flash.c 文件中的现有函数 FlashGet(uint32_t),它是对寄存器 (HWREG) 的直接访问。
FlashGet 需要一个 uint32_t 地址并返回一个 uint32_t 值,因此它的长度为 4,并且该地址应在循环中以 4 移动。第一个函数使用 char 进行寻址,其长度为 1,所以循环中地址也应该移动1。我的这些说法正确吗?如果是这样,我是否正确执行它们?对于第二个函数,由于指针的类型为 uint32_t(类似于 int),因此将指针增加 1 应该将其移动 4。
但是,这些函数返回不同的值。第一个返回:674426297757第二个返回:8213668631160
由于两个函数应该执行相同的操作,因此其中一个或两个函数一定不正确,并且没有读取整个程序闪存。
如何修复这两个功能?当您知道起始地址和大小时,是否有更好或更简单的方法来读取整个内存?
最佳答案
假设您有一个包含内容的 4 字节闪存
00 01 02 03
按字节值相加将得到 0x000000000000006
假设小端字节序,添加 32 位 int
值将为您提供 0x0000000003020100
。
关于C:读取MCU整个Flash存储器的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066040/
假设我有一个 View ,它可以生成 model.fetch() 然后向服务器发出请求。 我想实现: 1) 能够记住结果的检查器 2) 仅当对服务器的最后一次请求早于十分钟时才刷新结果(向服务器发出请
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 6
我想将数据从闪存复制到 RAM。 那么如何在 DMA Controller 中设置 RAM 的目标内存地址,以便它可以使用其 channel 将数据从源地址(在闪存中)复制到 RAM 内存。 我是在
我有以下代码行,它将字符串 TesT 存储在 8051 微 Controller 的代码存储器中。 char code *text_to_compare = "TesT"; 如何在 IDATA 内存
我在 Raspberry Pi Pico 上使用 Circuit Python 为我提供键盘快捷键的硬件按钮。我使用的是 Circuit Python 而不是 MicroPython,因为它具有 US
我是一名优秀的程序员,十分优秀!