完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我可以 malloc for 然后将一个微小的二进制文件加载到 RAM 中并定义一个函数指针并执行该函数。
C 代码不使用标准库或 esp-idf 调用,不使用堆,不依赖 .bss 进行初始化,它甚至没有任何包含,它只是计算获取一个无符号整数并返回一个无符号整数,但是因为我有 CI 中的代码,如果我可以这样做,我不想将它转换为 Lua 或 Javascript,我不想 OTA 更新整个二进制文件只是为了添加一个 300 字节的函数。我习惯于像这样使用 C 在其他微控制器上的现有二进制文件中嵌入新代码,但没有 IDA 或 Xtensa 模拟器,我有点受限。 代码:全选 xtensa-esp32-elf-gcc -std=c99 -Os -nostdlib -c test.c 这会产生 test.o 代码:全选 xtensa-esp32-elf-objcopy -O binary test.o test.bin 进一步的考虑: 1. 相对于 bin 开始的单个编译函数的入口点。我一开始就喜欢它,但 .rodata 目前是 2。如果在 IRAM 中,.rodata 将需要 32 位对齐,除非有一种方法可以访问与偏移量为 3 的 DRAM 相同的内存。无法将 bin 加载到 IDA 中进行反汇编它仔细检查它在做什么。我的代码中没有对 memcpy 的引用,想确保它不会在最终的 bin 中结束。 |
|
相关推荐
1个回答
|
|
当我删除将使用 .bss 或 .rodata 的东西时,memcpy 被删除,构建实际上可以与一个空的链接器脚本链接并发出一个映射文件。不过,如果能够使用 .rodata 就好了。
|
|
|
|
只有小组成员才能发言,加入小组>>
318浏览 6评论
279浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
265浏览 5评论
272浏览 4评论
252浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-3 15:56 , Processed in 2.043578 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191