# CHANGELOG

## Project

- Project: my_nucleo_f429zi_blinky
- Board: my_nucleo_f429zi
- Framework: Zephyr RTOS
- MCU: STM32F429ZI

## Version History

### my_nucleo_f429zi_blinky, 2026.08.30

- Created custom board based on the official Zephyr `nucleo_f429zi` board
- Renamed custom board to `my_nucleo_f429zi`
- Maintained the original Nucleo-F429ZI hardware configuration
- Maintained STM32F429ZI clock configuration
- Maintained USART3 console configuration
- Maintained Ethernet MAC and RMII PHY configuration
- Created basic GPIO Blinky project
- Configured Green LED (`led0`, PB0)
- LED blinks every 1000 ms
- Added project-local IntelliSense configuration using `.vscode/c_cpp_properties.json`
- Configured IntelliSense to use `build/compile_commands.json`
- Configured kernel binary name as `my_nucleo_f429zi_blinky`

### my_nucleo_f429zi_ethernet, 2026.08.31
- Start Ethernet Project
- Configure Ethernet network interface
- Enable IPv4 and DHCP
- Use network management callback for IPv4 address assignment
- Obtain IPv4 address from DHCP server
- Detect Ethernet PHY successfully
- Confirm 100 Mbps Full Duplex Ethernet link
- Confirm IPv4 address `192.168.0.10` assigned by DHCP
- Confirm Ping communication from PC to Nucleo-F429ZI
- Confirm Ping communication from Orange Pi to Nucleo-F429ZI
- Change LED blink interval to 500 ms
- Make `led.c` thread separately
- Start LED thread using `k_thread_create()`
- Use LED as system heartbeat
- Make `main.c` with callback function
- Configure kernel binary name as `my_nucleo_f429zi_ethernet`

### my_nucleo_f429zi_ethdirect, 2026.08.31
- Start Direct Ethernet Project
- Based on `my_nucleo_f429zi_ethernet` project
- Connect Orange Pi and Nucleo-F429ZI directly using Ethernet cable
- Remove DHCP configuration
- Configure static IPv4 address on Nucleo-F429ZI
- Set Nucleo-F429ZI IPv4 address to `192.168.10.2/24`
- Set Orange Pi IPv4 address to `192.168.10.1/24`
- Configure subnet mask as `255.255.255.0`
- Use direct Ethernet connection without router
- Confirm Ethernet PHY detection
- Confirm 100 Mbps Full Duplex Ethernet link
- Confirm direct Ping communication from Orange Pi to Nucleo-F429ZI
- Configure kernel binary name as `my_nucleo_f429zi_ethdirect`

### my_nucleo_f429zi_ethtcp, 2026.08.31
- Start TCP Ethernet Project
- Based on `my_nucleo_f429zi_ethdirect` project
- Use direct Ethernet connection between Orange Pi and Nucleo-F429ZI
- Configure Nucleo-F429ZI static IPv4 address as `192.168.10.2/24`
- Use Orange Pi IPv4 address `192.168.10.1/24`
- Enable TCP socket communication
- Configure Nucleo-F429ZI as TCP Server
- Configure TCP Server port as `5000`
- Create separate `tcp_server.c` and `tcp_server.h` modules
- Start TCP Server thread using `k_thread_create()`
- Use Zephyr socket APIs (`zsock_socket`, `zsock_bind`, `zsock_listen`, `zsock_accept`, `zsock_recv`)
- Configure TCP Server to accept repeated client connections
- Create Python TCP Client on Orange Pi
- Confirm TCP connection from Orange Pi to Nucleo-F429ZI
- Test 1024-byte data transmission from Orange Pi
- Receive TCP data in 256-byte blocks
- Confirm total 1024-byte data reception successfully
- Confirm 100 Mbps Full Duplex Ethernet link
- Configure kernel binary name as `my_nucleo_f429zi_ethtcp`

### my_nucleo_f429zi_tcpdata, 2026.09.01
- Create `my_nucleo_f429zi_tcpdata` project based on previous Ethernet TCP project
- Implement Length + Payload TCP data format
- Use 4-byte Length field in Network Byte Order
- Add `recv_exact()` to receive the complete 4-byte Length field
- Convert received Length using `ntohl()`
- Configure maximum payload buffer size as 10 KB
- Receive Payload repeatedly in 256-byte blocks
- Store received Payload sequentially in STM32 RAM
- Create `tcpdata_client.py` on Orange Pi
- Generate 1024-byte test Payload on Orange Pi
- Send 4-byte Length followed by 1024-byte Payload
- Confirm Payload Length = 1024 bytes on STM32
- Confirm total 1024-byte Payload reception successfully
- Verify received Payload data pattern successfully

### my_nucleo_f429zi_tcpdata-v, 2026.09.01
- Create verification project based on `my_nucleo_f429zi_tcpdata`
- Keep 1 KB Length + Payload TCP transmission structure
- Generate 1024-byte test pattern on Orange Pi
- Receive 4-byte Length field and confirm Payload Length = 1024 bytes
- Receive Payload repeatedly in 256-byte blocks
- Store complete 1024-byte Payload in STM32 RAM
- Add `verify_payload()` function
- Compare received Payload with expected `i % 256` data pattern
- Detect and report the first mismatched byte if verification fails
- Confirm complete 1024-byte Payload reception
- Confirm `Payload data verification OK`
- Complete 1 KB TCP Length + Payload data integrity test

### my_nucleo_f429zi_tcpdata-10k, 2026.09.01
- Orange Pi → STM32 TCP 데이터 전송 테스트
- Payload 크기를 10 KB(10,240 bytes)로 확장
- TCP 연결 후 4-byte Payload Length 수신
- 256-byte 수신 버퍼를 이용하여 전체 Payload 반복 수신
- 수신 데이터를 10 KB Payload Buffer에 저장
- 전체 10,240 bytes 수신 완료 확인
- 0x00 ~ 0xFF 반복 패턴을 이용한 수신 데이터 검증
- Payload data verification OK 확인
- 중간 수신 로그를 제거하고 최종 수신 결과만 출력하도록 변경
- Orange Pi → STM32 10 KB TCP 데이터 전송 및 무결성 검증 완료

### my_nucleo_f429zi_tcpdata-50k, 2026.09.01
- Orange Pi → STM32 TCP 데이터 전송 테스트
- Payload 크기를 50 KB(51,200 bytes)로 확장
- TCP 연결 후 4-byte Payload Length 수신
- 256-byte 수신 버퍼를 이용하여 전체 Payload 반복 수신
- 수신 데이터를 50 KB Payload Buffer에 저장
- 전체 51,200 bytes 수신 완료 확인
- 0x00 ~ 0xFF 반복 패턴을 이용한 수신 데이터 검증
- Payload data verification OK 확인
- 빌드 결과 RAM 사용량 104,428 bytes / 192 KB (53.11%)
- Orange Pi → STM32 50 KB TCP 데이터 전송, RAM 저장 및 무결성 검증 완료

### my_nucleo_f429zi_tcpdata-50kc, 2026.09.01
- Orange Pi → STM32 50 KB TCP 데이터 전송 시간 측정
- Payload 크기 50 KB(51,200 bytes) 사용
- STM32에서 수신한 전체 데이터를 50 KB Payload Buffer에 저장
- k_cycle_get_64()를 이용하여 Payload 수신 시작 및 완료 시점 측정
- k_cyc_to_us_floor64()를 이용하여 수신 시간을 µs 단위로 변환
- 1차 측정: 37,273 us (37.273 ms)
- 2차 측정: 37,262 us (37.262 ms)
- 반복 측정에서 약 37.27 ms의 안정적인 수신 시간 확인
- 전체 51,200 bytes 수신 완료 확인
- 0x00 ~ 0xFF 반복 패턴 데이터 검증 완료
- Payload data verification OK 확인
- Orange Pi → STM32 50 KB TCP 수신, RAM 저장, 무결성 및 수신 시간 검증 완료

### my_nucleo_f429zi_tcpdata-50kcack, 2026.09.01
- Start

## Build

    west build -b my_nucleo_f429zi -p always -- -DBOARD_ROOT="D:/Zephyr/workspace/my_boards"

## Flash

    west flash

## Note
### Orange Pi Temporary Static IP Setup

The Orange Pi Ethernet interface `end0` uses a temporary static IPv4 address
for direct Ethernet communication with the Nucleo-F429ZI.

```bash
sudo ip addr flush dev end0
sudo ip addr add 192.168.10.1/24 dev end0
sudo ip link set end0 up 

> This IP configuration is temporary and will be removed after reboot.
> Run the commands above again after rebooting the Orange Pi.
> For actual equipment, configure `192.168.10.1/24` as a permanent static IP.