feat(ch390): optimize SPI transfer, MAC fallback, and build settings for V1.0.0
- increase UART DMA/ring buffer sizes for mux traffic - switch SPI1 to Mode0 with prescaler /2 and align CubeMX settings - refactor CH390 memory read/write path with chunked SPI read and HAL bulk write - fallback to hardware MAC when configured MAC is invalid (all-zero) - add mux frame RTT logs and remove redundant UART1 polling - update Keil post-build viewer integration and include build viewer artifacts - update AT manual with all-zero MAC behavior
This commit is contained in:
@@ -157,6 +157,19 @@ struct pbuf *ch390_runtime_input_frame(struct netif *netif)
|
||||
return p;
|
||||
}
|
||||
|
||||
bool ch390_mac_address_valid(const uint8_t *mac)
|
||||
{
|
||||
if (mac == NULL) {
|
||||
return false;
|
||||
}
|
||||
for (uint8_t i = 0; i < ETHARP_HWADDR_LEN; ++i) {
|
||||
if (mac[i] == 0u) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ch390_runtime_init(struct netif *netif, const uint8_t *mac)
|
||||
{
|
||||
struct ethernetif *ethernetif = (struct ethernetif *)netif->state;
|
||||
@@ -186,7 +199,19 @@ void ch390_runtime_init(struct netif *netif, const uint8_t *mac)
|
||||
SEGGER_RTT_WriteString(0, "ETH init: default\r\n");
|
||||
ch390_default_config();
|
||||
SEGGER_RTT_WriteString(0, "ETH init: mac\r\n");
|
||||
ch390_set_mac_address((uint8_t *)mac);
|
||||
if (ch390_mac_address_valid(mac)) {
|
||||
ch390_set_mac_address((uint8_t *)mac);
|
||||
}
|
||||
else {
|
||||
if (mac != NULL) {
|
||||
ch390_get_mac((uint8_t *)mac);
|
||||
SEGGER_RTT_printf(0, "ETH init: invalid MAC in config, using hardware MAC: %02X:%02X:%02X:%02X:%02X:%02X\r\n",
|
||||
mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
}
|
||||
else {
|
||||
SEGGER_RTT_WriteString(0, "ETH init: no MAC in config\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
netif->hwaddr_len = ETHARP_HWADDR_LEN;
|
||||
SEGGER_RTT_WriteString(0, "ETH init: getmac\r\n");
|
||||
|
||||
Reference in New Issue
Block a user