started working on adb write

This commit is contained in:
dekunukem
2021-11-16 22:22:44 +00:00
parent d98fb179a4
commit 44b59a0409
15 changed files with 164 additions and 82 deletions

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -7,6 +7,18 @@
#include "stm32f0xx_hal.h"
#define ADB_LINE_STATUS_ATTEN 1
#define ADB_LINE_STATUS_IDLE 2
#define ADB_LINE_STATUS_RESET 3
#define ADB_LINE_STATUS_BUSY 4
#define ADB_LINE_STATUS_ERROR 5
#define ADB_LINE_STATUS_COLLISION 6
#define ADB_OK 0
#define ADB_TIMEOUT -1
#define ADB_ERROR ADB_LINE_STATUS_ERROR
void adb_init(GPIO_TypeDef* data_port, uint16_t data_pin, GPIO_TypeDef* psw_port, uint16_t psw_pin);
uint8_t adb_recv_cmd(uint8_t* data, uint8_t srq);
void parse_adb_cmd(uint8_t data);

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -27,15 +27,11 @@ Project File Date: 11/16/2021
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'spitestf042'
compiling adb.c...
..\Src\adb.c(129): warning: #1-D: last line of file ends without a newline
}
..\Src\adb.c: 1 warning, 0 errors
compiling main.c...
linking...
Program Size: Code=7096 RO-data=248 RW-data=28 ZI-data=1332
Program Size: Code=7116 RO-data=248 RW-data=28 ZI-data=1332
FromELF: creating hex file...
"spitestf042\spitestf042.axf" - 0 Error(s), 1 Warning(s).
"spitestf042\spitestf042.axf" - 0 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2>

View File

@@ -32,8 +32,8 @@
:1001E00000F020F838184D4100902046641E002889
:1001F000DFDC019B00982946324607B0F0BD0000C5
:10020000064C0125064E05E0E36807CC2B430C3C69
:1002100098471034B442F7D3FFF756FF901C0008FC
:10022000B01C000810B5202A04DB0146203A91409A
:1002100098471034B442F7D3FFF756FFA41C0008E8
:10022000C41C000810B5202A04DB0146203A914086
:10023000002010BD914020239C1A0346E34019433F
:10024000904010BD70B50024014620314A78022A42
:1002500003D004218163012416E0026813680E258F
@@ -110,10 +110,10 @@
:1006C0006068072109028843E9680843606000F018
:1006D0002DF86168084A0906090F515CC8400749AE
:1006E00008600020FFF79AFE0020F8BD00200240BD
:1006F0000010024088130000781C0008140000203D
:1006F00000100240881300008C1C00081400002029
:1007000001480068704700001400002004480549B3
:1007100000684968044A4905490F515CC840704760
:100720001400002000100240881C000830B516A3F9
:1007200014000020001002409C1C000830B516A3E5
:100730000FCB89B06C460FC417A30FCB0FC41A4957
:100740004A680C20144604401848042C05D0184B65
:10075000082C04D00C2C00D1184609B030BD9402EE
@@ -425,40 +425,41 @@
:101A70000000000010B5044C62602380A06061800B
:101A800000F04CF810BD00000400002070B50D48B7
:101A900041888068FEF798FC00280FD10A4D28463F
:101AA00000F0C8F80446284600F0C4F8611C05D0D0
:101AA00000F0D2F80446284600F0CEF8611C05D0BC
:101AB000411C03D0A04203DD012070BD052070BD94
:101AC000002070BD0400002010270000F3B581B095
:101AD0000E4600F047F8012806D10F4800F0AAF89A
:101AD0000E4600F047F8012806D10F4800F0B4F890
:101AE0003238292801D30520FEBD00252C460727C2
:101AF000FFF7CCFF0528F7D0391B88402843641C2A
:101B0000C5B2082CF4DB002E02D1034800F092F895
:101B0000C5B2082CF4DB002E02D1034800F09CF88B
:101B1000019805700020FEBD1027000010B5064C8E
:101B2000012221886068FEF754FC01226188A068C8
:101B3000FEF74FFC10BD00000400002010B5024964
:101B40000860FFF78FF910BD0000002013B5642373
:101B5000012269460248FFF765FA00981CBD0000A3
:101B6000C000002010B50E4841888068FEF72CFCAC
:101B7000012802D1002000F05DF80A4800F05AF870
:101B7000012802D1002000F067F80A4800F064F85C
:101B80007D210901884207DC411C05D04B21C90099
:101B9000884203DA042010BD032010BD012010BDCF
:101BA000040000201027000008B5FEF727FCFFF70F
:101BB00093FBFFF79DFAFFF735FBFFF7EBFAFFF713
:101BC00007FB0F48FFF7BAFF0D482021B030FEF7A2
:101BD000DBFA0C48012302460221FFF74BFF0AA063
:101BE000FFF7BAFD002469460C7000216846FFF734
:101BF0006DFF69460A78014607A0FFF7ADFDF2E7E1
:101C0000800000200014004868656C6C6F20776FBE
:101C1000726C640A00000000256420307825780A80
:101C200000000000024800680068406A7047000039
:101C300000000020F8B50746FFF7F4FF0D4C0090B8
:101C40006188A068FEF7C0FB05460AE0FFF7EAFFDF
:101C50000099461A002F04D0BE4202D90020C0438A
:101C6000F8BD6188A068FEF7AFFBA842EED0304611
:101C7000F8BD00000400002000000000000000008B
:101C80000102030406070809000000000102030422
:101C9000B01C0008000000201C000000781700089D
:101CA000CC1C00081C000020340500008817000828
:101CB0000000000000000000000000000000000024
:0C1CC0000000000000127A00000000008C
:101BC00007FB1448FFF7BAFF12482021B030FEF798
:101BD000DBFA1148012302460221FFF74BFF0FA059
:101BE000FFF7BAFD00250926F606684605700021B4
:101BF000FFF76CFF040001D0012200E00022012168
:101C00003046FEF7E6FB68460278214607A0FFF75C
:101C1000A3FDEAE7800000200014004868656C6CB2
:101C20006F20776F726C640A00000000256420301A
:101C30007825780A00000000024800680068406AC1
:101C40007047000000000020F8B50746FFF7F4FFDA
:101C50000D4C00906188A068FEF7B6FB05460AE0CF
:101C6000FFF7EAFF0099461A002F04D0BE4202D9BE
:101C70000020C043F8BD6188A068FEF7A5FBA8421C
:101C8000EED03046F8BD0000040000200000000047
:101C9000000000000102030406070809000000001C
:101CA00001020304C41C0008000000201C00000006
:101CB00078170008E01C00081C0000203405000014
:101CC000881700080000000000000000000000006D
:101CD000000000000000000000127A000000000078
:04000005080000C12E
:00000001FF

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [spitestf042\spitestf042.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image spitestf042\spitestf042.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Tue Nov 16 12:18:56 2021
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Tue Nov 16 18:48:37 2021
<BR><P>
<H3>Maximum Stack Usage = 196 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -252,6 +252,7 @@ Global Symbols
<P><STRONG><a name="[55]"></a>HAL_GPIO_WritePin</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin))
<BR><BR>[Called By]<UL><LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;adb_release_lines
<LI><a href="#[21]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[54]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
</UL>
@@ -649,12 +650,13 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;adb_recv_cmd
</UL>
<P><STRONG><a name="[21]"></a>main</STRONG> (Thumb, 88 bytes, Stack size 8 bytes, main.o(i.main))
<P><STRONG><a name="[21]"></a>main</STRONG> (Thumb, 108 bytes, Stack size 8 bytes, main.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 196<LI>Call Chain = main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[65]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;adb_recv_cmd
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;adb_init
<LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[55]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART1_UART_Init
<LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_TIM2_Init

View File

@@ -65,6 +65,7 @@ Section Cross References
main.o(i.main) refers to adb.o(i.adb_init) for adb_init
main.o(i.main) refers to printf5.o(i.__0printf$5) for __2printf
main.o(i.main) refers to adb.o(i.adb_recv_cmd) for adb_recv_cmd
main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.main) refers to main.o(.bss) for .bss
stm32f0xx_it.o(i.SPI1_IRQHandler) refers to stm32f0xx_hal_spi.o(i.HAL_SPI_IRQHandler) for HAL_SPI_IRQHandler
stm32f0xx_it.o(i.SPI1_IRQHandler) refers to main.o(.bss) for hspi1
@@ -1735,10 +1736,10 @@ Image Symbol Table
i.fputc 0x08001b4c Section 0 main.o(i.fputc)
i.look_for_atten 0x08001b64 Section 0 adb.o(i.look_for_atten)
i.main 0x08001ba8 Section 0 main.o(i.main)
i.micros 0x08001c24 Section 0 delay_us.o(i.micros)
i.wait_until_change 0x08001c34 Section 0 adb.o(i.wait_until_change)
.constdata 0x08001c78 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08001c88 Section 8 system_stm32f0xx.o(.constdata)
i.micros 0x08001c38 Section 0 delay_us.o(i.micros)
i.wait_until_change 0x08001c48 Section 0 adb.o(i.wait_until_change)
.constdata 0x08001c8c Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08001c9c Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 12 adb.o(.data)
.data 0x20000010 Section 4 stm32f0xx_hal.o(.data)
@@ -1914,13 +1915,13 @@ Image Symbol Table
delay_us_init 0x08001b3d Thumb Code 12 delay_us.o(i.delay_us_init)
fputc 0x08001b4d Thumb Code 18 main.o(i.fputc)
look_for_atten 0x08001b65 Thumb Code 60 adb.o(i.look_for_atten)
main 0x08001ba9 Thumb Code 88 main.o(i.main)
micros 0x08001c25 Thumb Code 10 delay_us.o(i.micros)
wait_until_change 0x08001c35 Thumb Code 62 adb.o(i.wait_until_change)
AHBPrescTable 0x08001c78 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08001c88 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08001c90 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08001cb0 Number 0 anon$$obj.o(Region$$Table)
main 0x08001ba9 Thumb Code 108 main.o(i.main)
micros 0x08001c39 Thumb Code 10 delay_us.o(i.micros)
wait_until_change 0x08001c49 Thumb Code 62 adb.o(i.wait_until_change)
AHBPrescTable 0x08001c8c Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08001c9c Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08001ca4 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08001cc4 Number 0 anon$$obj.o(Region$$Table)
us_timer 0x20000000 Data 4 delay_us.o(.data)
adb_psw_pin 0x20000004 Data 2 adb.o(.data)
adb_data_pin 0x20000006 Data 2 adb.o(.data)
@@ -1943,9 +1944,9 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001ccc, Max: 0x00008000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00001ce0, Max: 0x00008000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001cb0, Max: 0x00008000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001cc4, Max: 0x00008000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
@@ -2046,23 +2047,23 @@ Memory Map of the image
0x08001b3c 0x08001b3c 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x08001b4c 0x08001b4c 0x00000018 Code RO 253 i.fputc main.o
0x08001b64 0x08001b64 0x00000044 Code RO 441 i.look_for_atten adb.o
0x08001ba8 0x08001ba8 0x0000007c Code RO 254 i.main main.o
0x08001c24 0x08001c24 0x00000010 Code RO 14 i.micros delay_us.o
0x08001c34 0x08001c34 0x00000044 Code RO 443 i.wait_until_change adb.o
0x08001c78 0x08001c78 0x00000010 Data RO 3486 .constdata system_stm32f0xx.o
0x08001c88 0x08001c88 0x00000008 Data RO 3487 .constdata system_stm32f0xx.o
0x08001c90 0x08001c90 0x00000020 Data RO 3858 Region$$Table anon$$obj.o
0x08001ba8 0x08001ba8 0x00000090 Code RO 254 i.main main.o
0x08001c38 0x08001c38 0x00000010 Code RO 14 i.micros delay_us.o
0x08001c48 0x08001c48 0x00000044 Code RO 443 i.wait_until_change adb.o
0x08001c8c 0x08001c8c 0x00000010 Data RO 3486 .constdata system_stm32f0xx.o
0x08001c9c 0x08001c9c 0x00000008 Data RO 3487 .constdata system_stm32f0xx.o
0x08001ca4 0x08001ca4 0x00000020 Data RO 3858 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001cb0, Size: 0x00000550, Max: 0x00001800, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001cc4, Size: 0x00000550, Max: 0x00001800, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08001cb0 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08001cb4 0x0000000c Data RW 444 .data adb.o
0x20000010 0x08001cc0 0x00000004 Data RW 2317 .data stm32f0xx_hal.o
0x20000014 0x08001cc4 0x00000004 Data RW 3488 .data system_stm32f0xx.o
0x20000018 0x08001cc8 0x00000004 Data RW 3832 .data mc_p.l(stdout.o)
0x20000000 0x08001cc4 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08001cc8 0x0000000c Data RW 444 .data adb.o
0x20000010 0x08001cd4 0x00000004 Data RW 2317 .data stm32f0xx_hal.o
0x20000014 0x08001cd8 0x00000004 Data RW 3488 .data system_stm32f0xx.o
0x20000018 0x08001cdc 0x00000004 Data RW 3832 .data mc_p.l(stdout.o)
0x2000001c - 0x00000134 Zero RW 255 .bss main.o
0x20000150 - 0x00000400 Zero RW 1 STACK startup_stm32f042x6.o
@@ -2076,7 +2077,7 @@ Image component sizes
336 38 0 12 0 5250 adb.o
32 10 0 4 0 463068 delay_us.o
618 76 0 0 308 4973 main.o
638 76 0 0 308 4973 main.o
88 38 192 0 1024 648 startup_stm32f042x6.o
94 18 0 4 0 3059 stm32f0xx_hal.o
178 28 0 0 0 10527 stm32f0xx_hal_cortex.o
@@ -2093,7 +2094,7 @@ Image component sizes
92 14 24 4 0 1143 system_stm32f0xx.o
----------------------------------------------------------------------
6000 450 248 24 1332 521497 Object Totals
6020 450 248 24 1332 521497 Object Totals
0 0 32 0 0 0 (incl. Generated)
20 0 0 0 0 0 (incl. Padding)
@@ -2139,15 +2140,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
7096 518 248 28 1332 519329 Grand Totals
7096 518 248 28 1332 519329 ELF Image Totals
7096 518 248 28 0 0 ROM Totals
7116 518 248 28 1332 519329 Grand Totals
7116 518 248 28 1332 519329 ELF Image Totals
7116 518 248 28 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 7344 ( 7.17kB)
Total RO Size (Code + RO Data) 7364 ( 7.19kB)
Total RW Size (RW Data + ZI Data) 1360 ( 1.33kB)
Total ROM Size (Code + RO Data + RW Data) 7372 ( 7.20kB)
Total ROM Size (Code + RO Data + RW Data) 7392 ( 7.22kB)
==============================================================================

View File

@@ -75,7 +75,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Inc/helpers.h)(0x617D5578)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x61936D26)
I (../Inc/main.h)(0x61936D27)
I (../Inc/main.h)(0x61936D27)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h)(0x5DFA0893)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h)(0x5DFA0880)

View File

@@ -45,16 +45,6 @@ void adb_init(GPIO_TypeDef* data_port, uint16_t data_pin, GPIO_TypeDef* psw_port
adb_release_lines();
}
#define ADB_LINE_STATUS_ATTEN 1
#define ADB_LINE_STATUS_IDLE 2
#define ADB_LINE_STATUS_RESET 3
#define ADB_LINE_STATUS_BUSY 4
#define ADB_LINE_STATUS_ERROR 5
#define ADB_OK 0
#define ADB_TIMEOUT -1
#define ADB_ERROR ADB_LINE_STATUS_ERROR
int32_t wait_until_change(int32_t timeout_us)
{
uint32_t start_time = micros();
@@ -97,6 +87,7 @@ uint8_t adb_read_bit(void)
uint8_t adb_recv_cmd(uint8_t* data, uint8_t srq)
{
*data = 0;
uint8_t atten_result = look_for_atten();
if(atten_result != ADB_LINE_STATUS_ATTEN)
return atten_result;

View File

@@ -178,10 +178,18 @@ int main(void)
/* USER CODE BEGIN 3 */
adb_data = 0;
adb_status = adb_recv_cmd(&adb_data, 0);
if(adb_status != ADB_OK)
continue
if(adb_status != 0)
HAL_GPIO_WritePin(DEBUG0_GPIO_Port, DEBUG0_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(DEBUG0_GPIO_Port, DEBUG0_Pin, GPIO_PIN_RESET);
printf("%d 0x%x\n", adb_status, adb_data);
}
/* USER CODE END 3 */

View File

@@ -26,4 +26,75 @@ void adb_recv_cmd(void)
// parse_adb_cmd(adb_data);
printf("%d 0x%x\n", adb_status, adb_data);
HAL_GPIO_WritePin(DEBUG0_GPIO_Port, DEBUG0_Pin, GPIO_PIN_RESET);
// HAL_Delay(4);
// HAL_Delay(4);
if(adb_status != 0)
HAL_GPIO_WritePin(DEBUG0_GPIO_Port, DEBUG0_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(DEBUG0_GPIO_Port, DEBUG0_Pin, GPIO_PIN_RESET);
if((adb_data & 0xf) == 0x4)
HAL_GPIO_WritePin(DEBUG1_GPIO_Port, DEBUG1_Pin, GPIO_PIN_SET);
else
HAL_GPIO_WritePin(DEBUG1_GPIO_Port, DEBUG1_Pin, GPIO_PIN_RESET);
// printf("%d 0x%x %x\n", adb_status, adb_data, adb_data & 0xf);
default addr:
2 = keyboard
3 = mouse
host: 0000 1111 = 0x0f addr 0 talk reg 3
no response
host: 0001 1111 = 0x1f addr 1 talk reg 3
no response
host: 0010 1111 = 0x2f addr 2 talk reg 3
device: 0110 0000 0000 0101
keyboard
host: 0011 1111 = 0x3f addr 3 talk reg 3
device: 0110 1010 0000 0001
mouse
host: 0100 1111 = 0x4f addr 4 talk reg 3
no response
...
host: 1111 1111 = 0xff addr 15 talk reg 3
no response
----------
host: 0010 1011 addr 2 listen reg 3
0000 1111 1111 1110 change addr to 0xf
host: 00101111 addr 2 talk reg 3
no response
host: 1111 1011 addr 0xf listen reg 3
0000 0010 1111 1110 change addr to 0x2
host: 1111 1111 addr 0xf talk reg 3
no response
-----------
host: 0011 1011 addr 3 listen reg 3
0000 1111 1111 1110 change addr to 0xf
host: 0011 1111 addr 3 talk reg 3
no response
host: 1111 1011 addr 0xf listen reg 3
0000 0011 1111 1110 change addr to 0x3
host: 1111 1111 addr 0xf talk reg 3
no response
-----
host: 0010 1011