diff options
Diffstat (limited to 'hexedit')
| -rw-r--r-- | hexedit/Makefile | 11 | ||||
| -rw-r--r-- | hexedit/hexedit.s | 121 | ||||
| -rw-r--r-- | hexedit/pico_bin.ld | 13 | 
3 files changed, 85 insertions, 60 deletions
| diff --git a/hexedit/Makefile b/hexedit/Makefile index 4712bd1..ef7a4c2 100644 --- a/hexedit/Makefile +++ b/hexedit/Makefile @@ -2,6 +2,13 @@ all: build  build: hexedit.uf2 +dump: hexedit.bin +	hexdump -o hexedit.bin + +hexedit.bin: hexedit.o +	arm-none-eabi-ld -T pico_bin.ld -o hexedit.bin hexedit.o +	arm-none-eabi-objcopy -O binary hexedit.bin +  hexedit.uf2: hexedit.elf  	../elf/elf2uf2 hexedit.elf hexedit.uf2 @@ -14,8 +21,8 @@ $(objects): %.o: %.s  	arm-none-eabi-as -o $@ $<  clean: -	rm hexedit.elf hexedit.uf2 *.o +	rm hexedit.elf hexedit.uf2 hexedit.bin *.o  flash: hexedit.uf2 -	[ -h /dev/disk/by-label/RPI-RP2 ] || sleep 2s +	[ -h /dev/disk/by-label/RPI-RP2 ] || sleep 3s  	cat hexedit.uf2 > /dev/disk/by-label/RPI-RP2 diff --git a/hexedit/hexedit.s b/hexedit/hexedit.s index 28d2602..52facf2 100644 --- a/hexedit/hexedit.s +++ b/hexedit/hexedit.s @@ -12,6 +12,11 @@  .align 4 +// UARTRX 000326 0x200000D6 +// UARTTX 000310 0x200000C8 +// GETHEX 000224 0x20000094 +// SNDHEX 000350 0x200000E8 +  SETUP:      LDR     R0, [PC, #20] // 000000 044005  UARTRX              LDR     R1, [PC, #24] // 000002 044406  UARTTX              LDR     R2, [PC, #24] // 000004 045006  GETHEX @@ -22,74 +27,74 @@ SETUP:      LDR     R0, [PC, #20] // 000000 044005  UARTRX              MOV     R11, R3       // 000016 043233              LDR     R7, [PC, #20] // 000020 047405  START ADDRESS              ADDS    R6, R7, 1     // 000022 016176 -            B       MAINLOOP      // 000024 160010 +            B       MAINLOOP      // 000024 160012              .HWORD  0x0000        // 000026 000000 -            .WORD   UARTRX        // 000030 010243  0x200010A3 -                                  // 000032 040000 -            .WORD   UARTTX        // 000034 010225  0x20001095 -                                  // 000036 040000 -            .WORD   GETHEX        // 000040 -                                  // 000042 -            .WORD   SENDHEX       // 000044 010264  0x200010B5 -                                  // 000046 040000 +            .WORD   UARTRX        // 000030 000327  0x200000D6 | 0x1 +                                  // 000032 020000 +            .WORD   UARTTX        // 000034 000311  0x200000C8 | 0x1 +                                  // 000036 020000 +            .WORD   GETHEX        // 000040 000225  0x20000094 | 0x1 +                                  // 000042 020000 +            .WORD   SENDHEX       // 000044 000351  0x200000E8 | 0x1 +                                  // 000046 020000              .WORD   0x20001000    // 000050 010000  START ADDRESS                                    // 000052 020000  MAINLOOP:   MOVS    R0, R7        // 000054 000070  PROMPT -            MOVS    R1, 0x8       // 000056 +            MOVS    R1, 0x8       // 000056 020410              BLX     R11           // 000060 043730  SENDHEX              MOVS    R0, 0x20      // 000062 020040  SPACE -            BLX     R9            // 000064 043720  UARTTX +            BLX     R9            // 000064 043710  UARTTX              LDRH    R0, [R7]      // 000066 104070 -            MOVS    R1, 0x4       // 000070 +            MOVS    R1, 0x4       // 000070 020404              BLX     R11           // 000072 043730  SENDHEX              MOVS    R0, 0x0D      // 000074 020015  CARRIAGE RETURN -            BLX     R9            // 000076 043720  UARTTX +            BLX     R9            // 000076 043710  UARTTX              MOVS    R0, R7        // 000100 000070 -            MOVS    R1, 0x8       // 000102 +            MOVS    R1, 0x8       // 000102 020410              BLX     R11           // 000104 043730  SENDHEX              MOVS    R0, 0x20      // 000106 020040  SPACE -            BLX     R9            // 000110 043720  UARTTX -10:         BLX     R8            // 000112 043710  COMMAND LOOP, UARTRX +            BLX     R9            // 000110 043710  UARTTX +10:         BLX     R8            // 000112 043700  COMMAND LOOP, UARTRX              CMP     R0, 0x47      // 000114 024107  ASCII G              BNE     20f           // 000116 150400              BX      R6            // 000120 043460 -20:         CMP     R0, 0x52      // 000122         ASCII R -            BNE     30f           // 000124 -            MOVS    R0, 0x0D      // 000126 -            BLX     R9            // 000130         UARTTX -            LSRS    R7, 0x10      // 000132 -            MOVS    R0, R7        // 000134 -            LSLS    R7, 0x10      // 000136 -            MOVS    R1, 0x4       // 000140 -            BLX     R11           // 000142         SENDHEX -            BLX     R10           // 000144         GETHEX -            ADDS    R7, R4        // 000146 -            ADDS    R6, R7, 1     // 000150 -            B       MAINLOOP      // 000152 +20:         CMP     R0, 0x52      // 000122 024122  ASCII R +            BNE     30f           // 000124 150412 +            MOVS    R0, 0x0D      // 000126 020015 +            BLX     R9            // 000130 043710  UARTTX +            LSRS    R7, 0x10      // 000132 006077 +            MOVS    R0, R7        // 000134 000070 +            LSLS    R7, 0x10      // 000136 002077 +            MOVS    R1, 0x4       // 000140 020404 +            BLX     R11           // 000142 043730  SENDHEX +            BLX     R10           // 000144 043720  GETHEX +            ADDS    R7, R4        // 000146 014477 +            ADDS    R6, R7, 1     // 000150 016176 +            B       MAINLOOP      // 000152 163737  30:         CMP     R0, 0x0D      // 000154 024015  CARRIAGE RETURN -            BNE     40f           // 000156 150401 +            BNE     40f           // 000156 150404              ADDS    R7, 0x2       // 000160 033402 -            BLX     R9            // 000162         UARTTX (ECHO CR) -            MOVS    R0, 0x0A      // 000164         LINE FEED -            BLX     R9            // 000166         UARTTX -            B       MAINLOOP      // 000170 163753 +            BLX     R9            // 000162 043710  UARTTX (ECHO CR) +            MOVS    R0, 0x0A      // 000164 020012  LINE FEED +            BLX     R9            // 000166 043710  UARTTX +            B       MAINLOOP      // 000170 163730  40:         CMP     R0, 0x30      // 000172 024060  ASCII 0 -            BNE     10b           // 000174 -            BLX     R9            // 000176 043720  UARTTX -50:         BLX     R8            // 000200 043710  UARTRX +            BNE     10b           // 000174 150745 +            BLX     R9            // 000176 043710  UARTTX +50:         BLX     R8            // 000200 043700  UARTRX              CMP     R0, 0x78      // 000202 024170  ASCII x              BNE     50b           // 000204 150774 -            BLX     R9            // 000206 043720  UARTTX -            BLX     R10           // 000210         GETHEX +            BLX     R9            // 000206 043710  UARTTX +            BLX     R10           // 000210 043720  GETHEX              STRH    R4, [R7]      // 000212 100074              ADDS    R7, 0x2       // 000214 033402              MOVS    R0, 0x0A      // 000216 020012  NEW LINE -            BLX     R9            // 000220 043720  UARTTX -            B       MAINLOOP      // 000222 163707 +            BLX     R9            // 000220 043710  UARTTX +            B       MAINLOOP      // 000222 163713  GETHEX:     PUSH    {LR}          // 000224 132400              MOVS    R4, 0x0       // 000226 022000              MOVS    R5, 0x4       // 000230 022404 -10:         BLX     R8            // 000232 043710  HEX LOOP, UARTRX +10:         BLX     R8            // 000232 043700  HEX LOOP, UARTRX              CMP     R0, 0x30      // 000234 024060  ASCII 0              BLO     10b           // 000236 151774              CMP     R0, 0x39      // 000240 024071  ASCII 9 @@ -98,30 +103,30 @@ GETHEX:     PUSH    {LR}          // 000224 132400              BLO     10b           // 000246 151770              CMP     R0, 0x46      // 000250 024106  ASCII F              BHI     10b           // 000252 154366 -            BLX     R9            // 000254 043720  UARTTX +            BLX     R9            // 000254 043710  UARTTX              SUBS    R0, 0x37      // 000256 034067  ASCII A MINUS 10              B       30f           // 000260 160001 -20:         BLX     R9            // 000262 043720  UARTTX +20:         BLX     R9            // 000262 043710  UARTTX              SUBS    R0, 0x30      // 000264 034060  ASCII 0  30:         LSLS    R4, 0x4       // 000266 000444              ADDS    R4, R0        // 000270 014044              SUBS    R5, 0x1       // 000272 036401              BNE     10b           // 000274 150755 -40:         BLX     R8            // 000276 043710  UARTRX +40:         BLX     R8            // 000276 043700  UARTRX              CMP     R0, 0x0D      // 000300 024015  CARRIAGE RETURN              BNE     40b           // 000302 150774 -            BLX     R9            // 000304 043720  UARTTX +            BLX     R9            // 000304 043710  UARTTX              POP     {PC}          // 000306 136400  UARTTX:     LDR     R1, [PC, #24] // 000310 044406  UART0_BASE              MOVS    R3, 0x20      // 000312 021440  TX FIFO FULL -1:          LDR     R2, [R1, 0x18]// 000314 067012  UARTFR_OFST +1:          LDR     R2, [R1, 0x18]// 000314 064612  UARTFR_OFST              TST     R2, R3        // 000316 041032              BNE     1b            // 000320 150774              STRB    R0, [R1]      // 000322 070010  UARTDR_OFST              BX      LR            // 000324 043560  UARTRX:     LDR     R1, [PC, #12] // 000326 044403              MOVS    R3, 0x10      // 000330 021420  RX FIFO EMPTY -1:          LDR     R2, [R1, 0x18]// 000332 067012  UARTFR_OFST +1:          LDR     R2, [R1, 0x18]// 000332 064612  UARTFR_OFST              TST     R2, R3        // 000334 041032              BNE     1b            // 000336 150774              LDRB    R0, [R1]      // 000340 074010  UARTDR_OFST @@ -129,24 +134,24 @@ UARTRX:     LDR     R1, [PC, #12] // 000326 044403              .WORD   0x40034000    // 000344 040000                                    // 000346 040003  SENDHEX:    PUSH    {LR}          // 000350 132400 -            MOVS    R4, R0        // 000352 -            MOVS    R5, R1        // 000354 -            LSLS    R1, 0x2       // 000356 -            RORS    R4, R1        // 000360 +            MOVS    R4, R0        // 000352 000004 +            MOVS    R5, R1        // 000354 000015 +            LSLS    R1, 0x2       // 000356 000211 +            RORS    R4, R1        // 000360 040714              MOVS    R0, 0x30      // 000362 020060  ASCII 0 -            BLX     R9            // 000364 043720  UARTTX +            BLX     R9            // 000364 043710  UARTTX              MOVS    R0, 0x78      // 000366 020170  ASCII x -            BLX     R9            // 000370 043720  UARTTX +            BLX     R9            // 000370 043710  UARTTX  0:          MOVS    R0, 0x1C      // 000372 020034              RORS    R4, R0        // 000374 040704 -            MOVS    R0, 0x0F      // 000376 -            ANDS    R0, R4        // 000400 +            MOVS    R0, 0x0F      // 000376 020017 +            ANDS    R0, R4        // 000400 040040              CMP     R0, 0x9       // 000402 024011              BHI     1f            // 000404 154001              ADDS    R0, 0x30      // 000406 030060  ASCII 0              B       2f            // 000410 160000  1:          ADDS    R0, 0x37      // 000412 030067  ASCII A MINUS 10 -2:          BLX     R9            // 000414 043720  UARTTX +2:          BLX     R9            // 000414 043710  UARTTX              SUBS    R5, 1         // 000416 036401 -            BNE     0b            // 000420 150764 +            BNE     0b            // 000420 150763              POP     {PC}          // 000422 136400 diff --git a/hexedit/pico_bin.ld b/hexedit/pico_bin.ld new file mode 100644 index 0000000..0aa7974 --- /dev/null +++ b/hexedit/pico_bin.ld @@ -0,0 +1,13 @@ +ENTRY(SETUP) + +MEMORY { +  FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 2M +  SRAM(rwx) : ORIGIN = 0x20000000, LENGTH = 264K +} + +SECTIONS { +  .text : { +    *(.text); +    . = ALIGN(4); +  } > SRAM +} | 
