forked from M-Labs/zynq-rs
Kasli-SoC: Get MAC address from EEPROM (#90)
Co-authored-by: mwojcik <mw@m-labs.hk> Co-committed-by: mwojcik <mw@m-labs.hk>
This commit is contained in:
parent
3e95df1f64
commit
43e0440911
|
@ -14,7 +14,7 @@ members = [
|
||||||
panic = "abort"
|
panic = "abort"
|
||||||
debug = true
|
debug = true
|
||||||
codegen-units = 1
|
codegen-units = 1
|
||||||
opt-level = 'z'
|
opt-level = 's'
|
||||||
lto = true
|
lto = true
|
||||||
debug-assertions = false
|
debug-assertions = false
|
||||||
overflow-checks = false
|
overflow-checks = false
|
||||||
|
|
|
@ -30,7 +30,19 @@ impl fmt::Display for NetAddresses {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_adresses(cfg: &Config) -> NetAddresses {
|
#[cfg(feature = "target_kasli_soc")]
|
||||||
|
fn get_address_from_eeprom() -> EthernetAddress {
|
||||||
|
use libboard_zynq::i2c::{I2c, eeprom};
|
||||||
|
|
||||||
|
let mut i2c = I2c::i2c0();
|
||||||
|
i2c.init().unwrap();
|
||||||
|
let mut eeprom = eeprom::EEPROM::new(&mut i2c, 16);
|
||||||
|
let address = eeprom.read_eui48().unwrap_or([0x02, 0x00, 0x00, 0x00, 0x00, 0x56]);
|
||||||
|
|
||||||
|
EthernetAddress(address)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_addresses(cfg: &Config) -> NetAddresses {
|
||||||
#[cfg(feature = "target_zc706")]
|
#[cfg(feature = "target_zc706")]
|
||||||
let mut hardware_addr = EthernetAddress([0x02, 0x00, 0x00, 0x00, 0x00, 0x52]);
|
let mut hardware_addr = EthernetAddress([0x02, 0x00, 0x00, 0x00, 0x00, 0x52]);
|
||||||
#[cfg(feature = "target_zc706")]
|
#[cfg(feature = "target_zc706")]
|
||||||
|
@ -44,7 +56,7 @@ pub fn get_adresses(cfg: &Config) -> NetAddresses {
|
||||||
#[cfg(feature = "target_redpitaya")]
|
#[cfg(feature = "target_redpitaya")]
|
||||||
let mut ipv4_addr = IpAddress::v4(192, 168, 1, 55);
|
let mut ipv4_addr = IpAddress::v4(192, 168, 1, 55);
|
||||||
#[cfg(feature = "target_kasli_soc")]
|
#[cfg(feature = "target_kasli_soc")]
|
||||||
let mut hardware_addr = EthernetAddress([0x02, 0x00, 0x00, 0x00, 0x00, 0x56]);
|
let mut hardware_addr = get_address_from_eeprom();
|
||||||
#[cfg(feature = "target_kasli_soc")]
|
#[cfg(feature = "target_kasli_soc")]
|
||||||
let mut ipv4_addr = IpAddress::v4(192, 168, 1, 56);
|
let mut ipv4_addr = IpAddress::v4(192, 168, 1, 56);
|
||||||
|
|
||||||
|
|
|
@ -316,7 +316,7 @@ pub fn netboot<File: Read + Seek>(
|
||||||
runtime_max_len: usize,
|
runtime_max_len: usize,
|
||||||
) {
|
) {
|
||||||
log::info!("Preparing network for netboot");
|
log::info!("Preparing network for netboot");
|
||||||
let net_addresses = net_settings::get_adresses(&cfg);
|
let net_addresses = net_settings::get_addresses(&cfg);
|
||||||
log::info!("Network addresses: {}", net_addresses);
|
log::info!("Network addresses: {}", net_addresses);
|
||||||
let eth = Eth::eth0(net_addresses.hardware_addr.0.clone());
|
let eth = Eth::eth0(net_addresses.hardware_addr.0.clone());
|
||||||
let eth = eth.start_rx(8);
|
let eth = eth.start_rx(8);
|
||||||
|
|
Loading…
Reference in New Issue