linux内核函数 rational_best_approximation
函数在内核\lib\rational.c文件中定义,原型是
void rational_best_approximation( unsigned long given_numerator, unsigned long given_denominator, unsigned long max_numerator, unsigned long max_denominator, unsigned long *best_numerator, unsigned long *best_denominator)
其作用是计算波特率的分频值, imx6ull的波特率计算公司如下
为了使用rational_best_approximation函数, UBMR类比于denominator,UBIR类比于numerator,简化波特率计算模型:
相当于
第3和第4个参数是numerator和denominator最大值,通常指的是分频UBMR和UBIR在寄存器的位数,占用8位,则参数是 (1 << 8) -1
下面截图传入的参数和执行结果:
根据打印结果,从而确定了 rational_best_approximation 函数内参数的关系如下: