是否可以将草图(.HEX文件)放入SD卡并从那里运行?我的目标是使用SD存储器而不是闪存作为程序。
如果是的话,是否有任何图书馆能做到这一点?
我所发现的只是“从sd卡中闪现arduino”,这是而不是我所需要的。
更新:
草图的loop调用是在引导加载程序中实现的。因此,我假设在引导加载程序中有这样的东西:
while(true)
{
call_sketch_loop();
}能换成这个吗?:
//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();
}
}int loop()1.HEX , 2.HEX , 3.HEX022.HEX从SD卡复制到程序闪存中使用这种方法,我们可以运行闪存容量超过程序,如果我们把它们分成更小的子程序。
发布于 2016-03-19 10:59:53
您正在寻找的技术术语是"SD卡引导程序“。
你查过这个"https://github.com/thseiler/embedded/tree/master/avr/2boots“吗?
据我所知,2 2boot将首先将十六进制加载到闪存中,然后从那里执行它。这并不是您想要的(您想直接将它加载到RAM中,对吗?)
您要寻找的问题是,arduino的内存实际上是小的。而且直接加载到RAM中也有一些优势。因此,这样的图书馆可能根本不存在。
我可以用穷人的方法来做这件事。首先编写一个草图,其中包含一个函数,该函数的内部和这个循环中都有一个无限循环,将您想要的“循环”的代码放入其中。在草图的设置中,使用指向此函数的指针,并将足够多的字节写入SD卡上的二进制文件中。
然后上传另一个草图有一个空缓冲区。这个草图将把二进制文件加载到它中,并以指向函数的指针的形式引用它。维奥拉,你现在可以执行你的“循环”了。
这很难看,除非您对直接加载到RAM有非常特殊和等深线的需求,否则我建议您尝试2引导库。
https://stackoverflow.com/questions/36100030
复制相似问题