| |
|
|
|
| PA3288开发指南 - 函数概览 |
| | |
Include文件
所有外部include文件都在include子目录下.
除了version.h和type.h外, 全部其它.h文件都对应某一个子目录下.c文件中的函数. 例如, csl.h包括所有csl子目录下.c文件中的函数声明.
芯片支持库csl
所有芯片支持库中的函数命名都类似于ABCD_Eabc. 例如, 从函数名GPIO_Write几乎可以肯定它声明在csl.h中, 实现在csl\gpio.c中.
所有csl中的.c文件都独立于version.h, 也就是说它们只和PA3288芯片相关, 独立于具体的硬件型号. 通常它们只需要include type.h, csl.h和内部的csl\reg.h.
如果你需要使用"复杂的"函数如strcmp, 考虑把这部分代码移出csl. 绝大部分这里的代码都只跟芯片寄存器操作相关.
在main函数开始的时候ABCD_Init函数的调用次序很重要. 不要改变它, 除非你真的有100%的把握知道你在做什么.
硬件板支持库bsl
所有硬件板支持库中的函数命名都类似于AbcdEfgh, 其中的Abcd通常是一个硬件板上跟PA3288芯片互联工作的可编程器件的名字. 例如, 在include\bsl.h中的OV7670Init函数说明它的函数体在bsl\ov7670.c中. 从名字看这个函数的功能是有关OmniVision VGA图像传感器的初始化.
对几乎每个bsl子目录下的abcd.c文件来说, 都对应有一个version.h中的BSL_ABCD编译定义. 例如, 只有用了OV7670的硬件板才会定义BSL_OV7670, 这样我们能够方便控制在哪里调用OV7670的相关函数.
由于不同的硬件板可能用不同的方式连接外部器件, 例如使用了不同的GPIO, bsl中.c文件通常都需要include version.h.
这里大多数代码都跟利用csl.h中的函数操作可编程器件中的寄存器相关. 跟在csl中的情况一样, 留心把"复杂的"代码移出bsl.
系统级别
系统级别的函数也类似于AbcdEfgh, 但是这里Abcd不再是器件名字. 跟上面一样, 所有系统级别的函数都声明在include\sys.h中, 实现在sys子目录下.
对每个abcd.c而言, 在version.h中可能会有对应的一个或者多个SYS_ABCD_XXXX编译定义. 例如当SYS_DEBUG没有被定义的时候, 编译出来的代码至少要比打开调试功能时候要小7k字节. 而当SYS_SERIAL_UI定义了的时候, 说明系统支持我们的演示高层界面协议.
跟csl中情况不同, 系统级别的.c文件通常都需要include version.h, 便于利用其中的SYS_ABCD_XXXX定义控制程序流程.
简单文件系统
fat子目录下简单实现了一个FAT16兼容的文件系统, 函数定义在include\fat.h中.
不支持子目录, 只同时支持1个文件读和1个文件写的操作, 不支持文件seek功能.
MD5算法
md5子目录下是来自GRUB(GRand Unified Bootloader)的GNU GPL2的MD5算法实现, 函数声明在include\md5.h中.
模块测试
所有最终产品不会用到的模块测试代码放在test子目录下, 函数声明在include\test.h中.
例如, test\test_md5.c文件中的函数Test_Md5实现了所有RFC 1321中推荐的字符串测试. version.h中有编译定义TEST_MD5, 控制何时做这个测试.
相关信息
PA6488的函数概览.
|
|