else if (vm.count("writereg"))
{
std::string arg = vm["writereg"].as<std::string>();
std::vector<std::string> parce_arg;
boost::algorithm::split(parce_arg, arg, boost::is_any_of(" "));
if (parce_arg.size() != 2)
{
throw std::runtime_error("Bad argument, expected address and value");
}
uint32_t reg = std::stol(parce_arg[0], 0, 16);
uint32_t value = std::stol(parce_arg[1], 0, 16);
printf("Write 0x%08x value in 0x%08x register\n", value, reg);
if( std::error_code{} != bcm_api->BCMFpgaWriteReg( reg, value ) )
{
throw std::runtime_error("Error write reg");
}
}
Проверка проблем с линком:
Нужен скрипт под bash, который поднимает и сбрасывает линки с переменным таймаутом.
Нужно бросить в ресет трансиверы через bcm_tool.
Дергать 0x50000 в 7, а 0x60000 в 0.