gpt4 book ai didi

c - 在删除和写入闪存之前添加闪存

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:08 25 4
gpt4 key购买 nike

在删除和写入flash的程序中,我看不懂这些行

struct kinetis_flash *kf = calloc(1, sizeof(*kf));
struct target_flash *f = &kf->f;

来自代码的以下部分。整个程序可以在 https://github.com/blacksphere/blackmagic/blob/master/src/target/kinetis.c 找到。

struct kinetis_flash {
struct target_flash f;
uint8_t write_len;
};

static void kl_gen_add_flash(target *t, uint32_t addr, size_t length,
size_t erasesize, size_t write_len)
{
struct kinetis_flash *kf = calloc(1, sizeof(*kf));
struct target_flash *f = &kf->f;
f->start = addr;
f->length = length;
f->blocksize = erasesize;
f->erase = kl_gen_flash_erase;
f->write = kl_gen_flash_write;
f->done = kl_gen_flash_done;
f->erased = 0xff;
kf->write_len = write_len;
target_add_flash(t, f);
}

如果有人能帮助我理解以上两行,那就太好了,在此先感谢。许多目标,例如 KL25、K22、K64 可以相应地使用我从项目中理解的内容。这两行是否存储闪存的目标特定规范?

一般来说,我们不需要像为 RAM 那样使用 calloc 或 malloc 为 flash 分配任何空间。

最佳答案

有问题的代码扩展了 GDB,允许它使用各种 JTAG 或串行线接口(interface)来编程和调试某些 ARM 设备。识别附加设备闪存设备是一项耗时且具有破坏性(因为无法运行设备代码)的任务,因此您只想执行一次,因此本地 RAM 分配用于存储附加闪存的类型和当前状态.

关于c - 在删除和写入闪存之前添加闪存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50682948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com