IP核的底层封装
1.为什么要对IP核进行底层封装?
1.第一个还是和C语言那边一样,把一个功能进行封装,成为一个函数,我以后要实现这个功能就只需要调用这个API接口即可。起到一个解耦合、提高代码的可读性的作用。
2.第二个原因就是,直接对硬件底层的寄存器进行操作的话,可能会有一些问题,比如上一次操作的数据可能对下一次操作产生影响,而这些往往很难发现。进行封装就像给寄存器加了一层保护,安全性可以得到保护。
3.当然了,如果把整个封装过程类比于函数的封装,可移植性大大提高。
2.那么,我这个封装的“东西”,在我的整个嵌入式系统中到底扮演一个怎样的角色?
1.首先,要了解整个Linux系统的软硬件架构,最基本的就是应用层、内核层、硬件层,其中,内核层作为联系软件和硬件的平台和桥梁,是核心。在硬件和内核层进行交互,是直接交互的吗,是的。确实是这样,从内核直接调用底层的寄存器,通过位操作等一系列直接与硬件交互。
2.但是,也可以在硬件层和内核之间加一层中间层,原因的话前文有说。
3.具体操作该怎么操作呢?
1.创建硬件抽象层头文件(.h文件)
在这个文件中主要是定义一些与硬件相关的宏和函数原型,形成一个硬件抽象层。
代码的话。。。。。。嘻嘻,保密。
2.然后就是对上述声明的函数进行定义了。通常在编写的时候也是和内核源码有点相似,函数前用一些static、inline关键字进行修饰。
3.上述两步完成以后就可以在驱动中使用我封装的API接口了。这个时候比较我直接写底层寄存器就显得非常清晰和易读了。
这里代码就不展示了,,,,,,
4.封装的好处
其实就是对于原来的那些复杂的寄存器操作进行了一些封装,体现在三大方面:可读性,可维护性,可移植性。