1、更改android下的linux版本号,在init文件夹下的version.c文件中!
2、spi接收不理想的情况下更改spi时钟!
3、单CPU内核与锁
在单CPU机器上,对于编译时既没打开CONFIG_SMP、也没打开CONFIG_PREEMPT的内核来说,自旋锁根本不存在。这是一个出色的设计策略
:既然没有别人能在同时 刻执行,就没理由加锁。
如果编译时同时打开了CONFIG_SMP和CONFIG_PREEMPT,自旋锁的作用就仅仅是禁止抢占,这就足以防止任何竞态了。多数情况下,
我们可以把抢占等同于SMP来考虑其可能带来的竞态问题,不必单独对付它。
当测试加锁代码时,即使你没有SMP测试环境,总应该打开CONFIG_SMP和CONFIG_PREEMPT选项,因为这会重现关于锁的某些类型的BUG。
信号量依然存在,因为它们之所以被引入,乃是为了同步用户上下文。我们将马上看到这一点。
4、BUG: scheduling while atomic
自旋锁里面有睡眠的函数,会出现上面的错误。
有三个解决办法:1、关闭内核的可抢占的特性
2、将睡眠函数 移动到spin_unlock_irq(&spi->lock) 之后
3、用信号量替代