I can use bootloader in uart, but i can't use bootloader in rs485
Seems to be because the relationship RS485 half-duplex
How do I fix this problem?
Bootloading should also work with half-duplex communication. Its just that there is no example for that (AFAIK). So you would need to write your own bootloader component.
The physical layer of RS485 vs 422 impacts the transceiver
signaling, hence firmware. See en.wikipedia.org/wiki/RS-485
So you would have to modify UART APIs put a firmware wrapper