深入浅出数据结构
1. 链表1.1 链表基本介绍
嵌入式题库总结
一、C语言1. inline 和 static inlineinline的优缺点inline是c99的特性。在c99中,inline是向编译器建议,将被inline修饰的函数以内联的方式嵌入到调用这个函数的地方。 而编译器会判断这样做是否合适,以此最终决定是否这么做。
好处:减少调用函数时的开销,如:减少传参时可能引起的压栈出栈的开销。减少PC跳转时对流水线的破坏。
坏处: 以空间换时间,代码所占体积会更大。
static inline和inline的区别显然我们希望它们被其他文件访问。那么我们的inline函数原型就应该定义在头文件中,注意是函数原型而不是函数声明。因为开发者决定不了一个函数是否被内联,开发者只有建议权,只有编译器具有决定权。这就造成了一个很困扰的事情:除非你看到一个函数的反汇编代码,否则你很难确定他是不是内联函数。试想,如果头文件中的Inline函数在没有被编译成内联函数的情况下,被include到了多个源文件中,势必会产生函数重复定义的问题。 因此,我们要再加一个关键字static,才能避免这个问题。
static inline使用时机static inlin ...
rockchip之adc按键驱动
一、设备树12345678910111213// vi rk3399pro-firefly-core.dtsi +55adc-keys { compatible = "adc-keys"; io-channels = <&saradc 2>; //adc选用的是saradc通道2 io-channel-names = "buttons"; poll-interval = <100>; keyup-threshold-microvolt = <1800000>; //表示按键抬起,saradc通道2的电压(单位微伏)。 adc-power-key { linux,code = <KEY_POWER>; //按键上报的键值 label = "power key"; ...
rockchip之pwm驱动
设备树的pwm节点:
1234567891011// vi rk3399.dtsi:pwm0: pwm@ff420000 { compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm"; reg = <0x0 0xff420000 0x0 0x10>; #pwm-cells = <3>; pinctrl-names = "active"; pinctrl-0 = <&pwm0_pin>; clocks = <&pmucru PCLK_RKPWM_PMU>; clock-names = "pwm"; status = "okay";};
这个设备树节点会和pwm-rockchip.c匹配,调用probe函数:
根据设备树的信息,配置pwm的 ...