乐鑫技术交流
直播中

熊本熊

8年用户 1360经验值
擅长:处理器/DSP
私信 关注
[问答]

如何使用Arduino IDE构建的ELF映像?

我有一个要求,我需要使用使用 Arduino IDE 构建的ELF映像,但 NonOS SDK 中提供了boot_v1.6.bin。我执行了以下步骤

背景:
1. Arduino 构建 2 个 elf 文件(sketch elf 文件和 eboot elf 文件),然后使用 elf2bin.py (https://github.com/esp8266/Arduino/blob......elf2bin.py) 拼接可在地址 0x0 上刷新的单个二进制文件。由于我们想使用 SDK 引导加载程序,因此我们跳过了 eboot.elf 文件。并且仅使用草图精灵文件按照 NONOS SDK 流程创建 bin 文件。

我的素描精灵 文件名: hello.ino.elf

步骤1:运行objcopy命令,按照制作文件规则生成以下文件

xtensa-lx106-elf-objcopy.exe --only-section .text -O 二进制 hello.ino.elf eagle.app.v6.text.bin
xtensa-lx106-elf-objcopy.exe --only-section .data -O 二进制 hello.ino.elf eagle.app.v6.data.bin
xtensa-lx106-elf-objcopy.exe --only-section .rodata -O 二进制 hello.ino.elf eagle.app.v6.rodata.bin
xtensa-lx106-elf-objcopy.exe --only-section .irom0.text -O 二进制 hello.ino.elf eagle.app.v6.irom0text.bin



Step2:运行gen_appbin.py创建二进制文件eagle.app.flash.bin

工具gen_appbin.py hello.ino.elf 1 2 0 4 1



Step3: 使用 ESP 下载工具在 ESP12 F 上刷新以下二进制文件

boot_v1.6.bin:             0x00000;
eagle.app.flash.bin:       0x01000;
esp_init_data_default.bin:0x3FC000;
blank.bin:                 0x3FE000;



运行看板。但它不起作用(除了一些垃圾外,控制台上没有输出)。由于草图只不过是一个 C 代码,我相信它应该起作用。你能指导我吗?


                                                                                               

回帖(1)

李鸿

2024-7-9 16:05:15
要使用Arduino IDE构建的ELF映像,您需要按照以下步骤操作:

1. 首先,确保您已经安装了Arduino IDE,并为您的项目选择了正确的板和端口。

2. 将您的代码(例如hello.ino)上传到Arduino IDE中。

3. 点击“上传”按钮,Arduino IDE将编译并上传您的代码到设备。

4. 编译完成后,您将在Arduino IDE的“文件”菜单中找到生成的ELF文件。在这种情况下,文件名为“hello.ino.elf”。

5. 接下来,您需要使用elf2bin.py脚本来将ELF文件转换为二进制文件。从GitHub上下载elf2bin.py脚本:https://github.com/esp8266/Arduino/blob/master/tools/elf2bin.py

6. 打开命令行工具(例如CMD、Terminal或Shell),并导航到包含elf2bin.py脚本的文件夹。

7. 使用以下命令将ELF文件转换为二进制文件:
```
python elf2bin.py -o output.bin /path/to/your/hello.ino.elf
```
将“/path/to/your/hello.ino.elf”替换为您的ELF文件的实际路径。这将生成一个名为“output.bin”的二进制文件。

8. 现在,您需要使用NonOS SDK中的boot_v1.6.bin引导加载程序。首先,从ESP8266 NonOS SDK中下载boot_v1.6.bin文件:https://github.com/espressif/ESP8266_NONOS_SDK/blob/master/bin/esp_init_data_default.bin

9. 使用以下命令将boot_v1.6.bin和output.bin文件合并为一个可刷新的二进制文件:
```
cat boot_v1.6.bin output.bin > final.bin
```
这将创建一个名为“final.bin”的文件,其中包含引导加载程序和您的草图精灵代码。

10. 最后,您可以使用适当的工具(例如NodeMCU Flasher、esptool.py等)将生成的“final.bin”文件刷新到您的ESP8266设备上。

通过以上步骤,您应该能够使用Arduino IDE构建的ELF映像,并将其与NonOS SDK引导加载程序结合使用。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分