Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 编程esp32和esp8266_Assembly_Iot_Esp8266_Esp32_Esp8266wifi - Fatal编程技术网

Assembly 编程esp32和esp8266

Assembly 编程esp32和esp8266,assembly,iot,esp8266,esp32,esp8266wifi,Assembly,Iot,Esp8266,Esp32,Esp8266wifi,如何使用汇编对ESP32或ESP8266模块进行编程?我不想使用arduino ide。我想出了一种用汇编语言编程atmel芯片的方法。我想学习如何在汇编中编程esp32和esp8266。这些工具很容易找到。我安装了一个预制柏油球 这是C和asm的混合,但您可以在所有asm中执行此操作 这是为esp8266准备的 向量 .section .init .globl _start _start: call0 notmain ill .balign 0x100 .globl dummy

如何使用汇编对ESP32或ESP8266模块进行编程?我不想使用arduino ide。我想出了一种用汇编语言编程atmel芯片的方法。我想学习如何在汇编中编程esp32和esp8266。

这些工具很容易找到。我安装了一个预制柏油球

这是C和asm的混合,但您可以在所有asm中执行此操作

这是为esp8266准备的

向量

.section .init
.globl _start
_start:
    call0 notmain
    ill
.balign 0x100
.globl dummy
dummy:
    ret.n
    
.balign 0x10
.globl PUT32
PUT32:
    memw
    s32i.n a3,a2,0
    ret.n
    
.balign 0x10
.globl GET32
GET32:
    memw
    l32i.n a2,a2,0
    ret.n
所以,c

建造

拆卸

Disassembly of section .init:

40100000 <_start>:
40100000:   001385          call0   4010013c <notmain>
    ...

40100100 <dummy>:
40100100:   f00d        ret.n
    ...

40100110 <PUT32>:
40100110:   0020c0          memw
40100113:   0239        s32i.n  a3, a2, 0
40100115:   f00d        ret.n
    ...

40100120 <GET32>:
40100120:   0020c0          memw
40100123:   0228        l32i.n  a2, a2, 0
40100125:   f00d        ret.n

Disassembly of section .literal:

40100128 <.literal>:
40100128:   0838        l32i.n  a3, a8, 0
4010012a:   106000          and a6, a0, a0
4010012d:   03              .byte 0x3
4010012e:   046000          extui   a6, a0, 0, 1
40100131:   03              .byte 0x3
40100132:   006000          rsil    a0, 0
40100135:   35              .byte 0x35
40100136:   000c        movi.n  a0, 0
40100138:   0308        l32i.n  a0, a3, 0
4010013a:   00              .byte 00
4010013b:   60              .byte 0x60

Disassembly of section .text:

4010013c <notmain>:
4010013c:   e0c112          addi    a1, a1, -32
4010013f:   61c9        s32i.n  a12, a1, 24
40100141:   fff9c1          l32r    a12, 40100128 <GET32+0x8>
40100144:   7109        s32i.n  a0, a1, 28
40100146:   0c2d        mov.n   a2, a12
40100148:   51d9        s32i.n  a13, a1, 20
4010014a:   41e9        s32i.n  a14, a1, 16
4010014c:   31f9        s32i.n  a15, a1, 12
4010014e:   fffd05          call0   40100120 <GET32>
40100151:   cfae32          movi    a3, 0xfffffecf
40100154:   103230          and a3, a2, a3
40100157:   0c2d        mov.n   a2, a12
40100159:   fffb45          call0   40100110 <PUT32>
4010015c:   fff421          l32r    a2, 4010012c <GET32+0xc>
4010015f:   430c        movi.n  a3, 4
40100161:   fffac5          call0   40100110 <PUT32>
40100164:   fff3f1          l32r    a15, 40100130 <GET32+0x10>
40100167:   fff3d1          l32r    a13, 40100134 <GET32+0x14>
4010016a:   fff3e1          l32r    a14, 40100138 <GET32+0x18>
4010016d:   430c        movi.n  a3, 4
4010016f:   0f2d        mov.n   a2, a15
40100171:   fff9c5          call0   40100110 <PUT32>
40100174:   0c0c        movi.n  a12, 0
40100176:   0c2d        mov.n   a2, a12
40100178:   cc1b        addi.n  a12, a12, 1
4010017a:   fff845          call0   40100100 <dummy>
4010017d:   f59cd7          bne a12, a13, 40100176 <notmain+0x3a>
40100180:   430c        movi.n  a3, 4
40100182:   202ee0          or  a2, a14, a14
40100185:   fff885          call0   40100110 <PUT32>
40100188:   0c0c        movi.n  a12, 0
4010018a:   0c2d        mov.n   a2, a12
4010018c:   cc1b        addi.n  a12, a12, 1
4010018e:   fff705          call0   40100100 <dummy>
40100191:   f59cd7          bne a12, a13, 4010018a <notmain+0x4e>
40100194:   fff546          j   4010016d <notmain+0x31>
把它变成这个

hexdump -C so.esp.bin 
00000000  e9 01 00 00 00 00 10 40  00 00 10 40 98 01 00 00  |.......@...@....|
00000010  85 13 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000110  0d f0 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000120  c0 20 00 39 02 0d f0 00  00 00 00 00 00 00 00 00  |. .9............|
00000130  c0 20 00 28 02 0d f0 00  38 08 00 60 10 03 00 60  |. .(....8..`...`|
00000140  04 03 00 60 00 35 0c 00  08 03 00 60 12 c1 e0 c9  |...`.5.....`....|
00000150  61 c1 f9 ff 09 71 2d 0c  d9 51 e9 41 f9 31 05 fd  |a....q-..Q.A.1..|
00000160  ff 32 ae cf 30 32 10 2d  0c 45 fb ff 21 f4 ff 0c  |.2..02.-.E..!...|
00000170  43 c5 fa ff f1 f3 ff d1  f3 ff e1 f3 ff 0c 43 2d  |C.............C-|
00000180  0f c5 f9 ff 0c 0c 2d 0c  1b cc 45 f8 ff d7 9c f5  |......-...E.....|
00000190  0c 43 e0 2e 20 85 f8 ff  0c 0c 2d 0c 1b cc 05 f7  |.C.. .....-.....|
000001a0  ff d7 9c f5 46 f5 ff 00  00 00 00 00 00 00 00 ae  |....F...........|
000001b0
我会让你弄明白,工具源是可用的

如果这个链接停止工作,那么谷歌esptool.py很有希望找到一个

然后闪一下

esptool.py --port /dev/ttyUSB5 write_flash -fm qio 0x00000 so.esp.bin
我正在使用一个便宜的nodemcu克隆。我在亚马逊上花15美元买了5个。不需要额外的电线/usb uart等

改变这些

for(rx=0;rx<800000;rx++)

用于(rx=0;rx没有关于如何在低水平上使用wifi的文档。制造商提供了一个封闭源代码的C SDK来连接MCU外围设备,wifi的很大一部分是软件。esp MCU的CPU是Tensilica XtensaI强烈建议不要在汇编程序中对这些芯片进行编程。wifi和蓝牙需要大量si的软件堆栈ze是用C/C++编写的,在汇编程序中不容易使用。如果您想避免使用Arduino IDE或Arduino框架,有很多选择:ESP32的ESP-IDF框架,带有IDE集成的平台构建系统等。如果您想要wifi,请参阅上面关于这些库的内容。否则gnu工具是ea该芯片提供了一个相对简单的下载解决方案(从我关于这个平台的baremetal的笔记中可以看出,在你的代码之前有一个引导加载程序)。C或汇编你仍然可以链接和调用(wifi)库…@old\u timer这些工具是什么?比如我用avr gcc或avra编译代码,用avrdude上传到atmel芯片。是同样的方法吗?我应该用哪个c编译器来编程esp32和esp8266?是的,我明白了你的意思。谢谢大家。链接在这里是不受欢迎的-这完全是对仅链接答案规则的误解。T他的政策是,如果链接全部消失,答案仍然必须充分回答这个问题,但这并不总是发生的,因此链接仍然可以增加价值。包含链接不是一件坏事。这意味着只能通过链接到工具或其他东西来回答的问题不是好问题。但这里不是这样;a最低限度的教程适合于SO的答案,主要是关于编写什么代码,而不是在哪里找到工具。欢迎您,向前支付,回答一个或几个问题……嗨,老定时器。我可以请您使用拼写检查工具吗。@halfer感谢所有编辑,我正在努力做得更好。我想您已经修复了拼写。。。
hexdump -C so.bin 
00000000  85 13 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100  0d f0 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000110  c0 20 00 39 02 0d f0 00  00 00 00 00 00 00 00 00  |. .9............|
00000120  c0 20 00 28 02 0d f0 00  38 08 00 60 10 03 00 60  |. .(....8..`...`|
00000130  04 03 00 60 00 35 0c 00  08 03 00 60 12 c1 e0 c9  |...`.5.....`....|
00000140  61 c1 f9 ff 09 71 2d 0c  d9 51 e9 41 f9 31 05 fd  |a....q-..Q.A.1..|
00000150  ff 32 ae cf 30 32 10 2d  0c 45 fb ff 21 f4 ff 0c  |.2..02.-.E..!...|
00000160  43 c5 fa ff f1 f3 ff d1  f3 ff e1 f3 ff 0c 43 2d  |C.............C-|
00000170  0f c5 f9 ff 0c 0c 2d 0c  1b cc 45 f8 ff d7 9c f5  |......-...E.....|
00000180  0c 43 e0 2e 20 85 f8 ff  0c 0c 2d 0c 1b cc 05 f7  |.C.. .....-.....|
00000190  ff d7 9c f5 46 f5 ff                              |....F..|
00000197
hexdump -C so.esp.bin 
00000000  e9 01 00 00 00 00 10 40  00 00 10 40 98 01 00 00  |.......@...@....|
00000010  85 13 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000110  0d f0 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000120  c0 20 00 39 02 0d f0 00  00 00 00 00 00 00 00 00  |. .9............|
00000130  c0 20 00 28 02 0d f0 00  38 08 00 60 10 03 00 60  |. .(....8..`...`|
00000140  04 03 00 60 00 35 0c 00  08 03 00 60 12 c1 e0 c9  |...`.5.....`....|
00000150  61 c1 f9 ff 09 71 2d 0c  d9 51 e9 41 f9 31 05 fd  |a....q-..Q.A.1..|
00000160  ff 32 ae cf 30 32 10 2d  0c 45 fb ff 21 f4 ff 0c  |.2..02.-.E..!...|
00000170  43 c5 fa ff f1 f3 ff d1  f3 ff e1 f3 ff 0c 43 2d  |C.............C-|
00000180  0f c5 f9 ff 0c 0c 2d 0c  1b cc 45 f8 ff d7 9c f5  |......-...E.....|
00000190  0c 43 e0 2e 20 85 f8 ff  0c 0c 2d 0c 1b cc 05 f7  |.C.. .....-.....|
000001a0  ff d7 9c f5 46 f5 ff 00  00 00 00 00 00 00 00 ae  |....F...........|
000001b0
esptool.py --port /dev/ttyUSB5 write_flash -fm qio 0x00000 so.esp.bin
for(rx=0;rx<800000;rx++)
for(rx=0;rx<400000;rx++)