首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从sd卡上运行arduino草图

从sd卡上运行arduino草图
EN

Stack Overflow用户
提问于 2016-03-19 09:25:49
回答 1查看 7.2K关注 0票数 3

是否可以将草图(.HEX文件)放入SD卡并从那里运行?我的目标是使用SD存储器而不是闪存作为程序。

如果是的话,是否有任何图书馆能做到这一点?

我所发现的只是“从sd卡中闪现arduino”,这是而不是我所需要的。

更新:

草图的loop调用是在引导加载程序中实现的。因此,我假设在引导加载程序中有这样的东西:

代码语言:javascript
复制
while(true)
{
    call_sketch_loop();
}

能换成这个吗?:

代码语言:javascript
复制
//signature changed from void loop() to int loop()
while(true)
{
    int retval = call_sketch_loop(); //get loop call's return value

    if( 0 == retval )
        continue; // if 0, iterate the loop as usual
    else
    {
        //copy 1.HEX from sd to flash and reboot
        copy_hex_from_sd_to_flash( retval + ".HEX" );
        reboot();
    }
}
  1. 变环信号到int loop()
  2. 将{int}.HEX文件放入SD卡- 1.HEX , 2.HEX , 3.HEX
  3. 循环()调用返回0
  4. 像往常一样继续下一次迭代
  5. 循环()调用返回2
  6. 将文件2.HEX从SD卡复制到程序闪存中
  7. 重新启动装置

使用这种方法,我们可以运行闪存容量超过程序,如果我们把它们分成更小的子程序。

EN

回答 1

Stack Overflow用户

发布于 2016-03-19 10:59:53

您正在寻找的技术术语是"SD卡引导程序“。

你查过这个"https://github.com/thseiler/embedded/tree/master/avr/2boots“吗?

据我所知,2 2boot将首先将十六进制加载到闪存中,然后从那里执行它。这并不是您想要的(您想直接将它加载到RAM中,对吗?)

您要寻找的问题是,arduino的内存实际上是小的。而且直接加载到RAM中也有一些优势。因此,这样的图书馆可能根本不存在。

我可以用穷人的方法来做这件事。首先编写一个草图,其中包含一个函数,该函数的内部和这个循环中都有一个无限循环,将您想要的“循环”的代码放入其中。在草图的设置中,使用指向此函数的指针,并将足够多的字节写入SD卡上的二进制文件中。

然后上传另一个草图有一个空缓冲区。这个草图将把二进制文件加载到它中,并以指向函数的指针的形式引用它。维奥拉,你现在可以执行你的“循环”了。

这很难看,除非您对直接加载到RAM有非常特殊和等深线的需求,否则我建议您尝试2引导库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36100030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档