操作要点:
1、每一层直接对下一层操作,尽量避免交叉调用或越级调用
2、某些器件会把硬件驱动层合并成一个文件时,则归于较高的层
3、相同功能的外部函数尽量一致,尽量保证通用性
4、对于初次编程的模块,要严格保证中间各层的正确性
好处:
1、对于后期维护扩展,只需修改应用层和物理层,根据需要扩展功能层
2、一个新项目只需把要用到的文件加入工程,简单修改调试就出来了
3、随着模块的不断积累,新的项目将越来越容易完成,后期的维护扩展也变得非常简单了
4、对于C语言编程,只需简单修改物理层就可完成不同单片机间的移植
呵呵,一些经验,大家有好的想法可以继续补充指正
一般分为以下几层:
---应用层--面向用户
软| ↓
件|---协议层--现成的协议栈、软件包、标准库,大多是移植,不自己写,如FAT、TCPIP、OS、GAME等
相| ↓
关| ↓
---功能层--实现器件无关性,实现器件的各种功能扩展和器件通用性处理,如LCD的线、圆、矩形等功能,如EEPROM的块写,自己的print
硬| ↓
件|---器件层--实现硬件无关性,保证IO无关性,只提供器件的基本功能,如字节读写、点
驱| ↓
动 ---物理层--IO相关,直接操作硬件,实现硬件连接的多种方案
对应文件举例1:
---应用层--面向用户的主程序
软| ↓
件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等
相| ↓
关| ↓
---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;引出LCD的线、圆、矩形、填充等功能
硬| ↓ ↓
件|---器件层--文件lcd61202.c;lcd1520.c;lcd6963.c;lcd133x.c;lcd44780.c;lcd162x.c;lcd856x.c或者lcd1602.c;lcd12864.c;lcd320240.c等,引出基本的初始化、定位、写点、写字节函数
驱| ↓ ↓
动 ---物理层--文件lcd61202_io.c;lcd61202_bus.c;引出器件的基本读写函数
对应文件应用举例2:
---应用层--面向用户的主程序
软| ↓
件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等
相| ↓
关| ↓
---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;如EEPROM的块写统一化
硬| ↓ ↓
件|---器件层--文件ee24xx.c;ee93xx.c;ee_sdcard.c;ee29xx.c;ee28f.c;ee39xx.c;等
驱| ↓ ↓
动 ---物理层--文件bus_i2c.c;bus_spi.c等
1、每一层直接对下一层操作,尽量避免交叉调用或越级调用
2、某些器件会把硬件驱动层合并成一个文件时,则归于较高的层
3、相同功能的外部函数尽量一致,尽量保证通用性
4、对于初次编程的模块,要严格保证中间各层的正确性
好处:
1、对于后期维护扩展,只需修改应用层和物理层,根据需要扩展功能层
2、一个新项目只需把要用到的文件加入工程,简单修改调试就出来了
3、随着模块的不断积累,新的项目将越来越容易完成,后期的维护扩展也变得非常简单了
4、对于C语言编程,只需简单修改物理层就可完成不同单片机间的移植
呵呵,一些经验,大家有好的想法可以继续补充指正
一般分为以下几层:
---应用层--面向用户
软| ↓
件|---协议层--现成的协议栈、软件包、标准库,大多是移植,不自己写,如FAT、TCPIP、OS、GAME等
相| ↓
关| ↓
---功能层--实现器件无关性,实现器件的各种功能扩展和器件通用性处理,如LCD的线、圆、矩形等功能,如EEPROM的块写,自己的print
硬| ↓
件|---器件层--实现硬件无关性,保证IO无关性,只提供器件的基本功能,如字节读写、点
驱| ↓
动 ---物理层--IO相关,直接操作硬件,实现硬件连接的多种方案
对应文件举例1:
---应用层--面向用户的主程序
软| ↓
件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等
相| ↓
关| ↓
---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;引出LCD的线、圆、矩形、填充等功能
硬| ↓ ↓
件|---器件层--文件lcd61202.c;lcd1520.c;lcd6963.c;lcd133x.c;lcd44780.c;lcd162x.c;lcd856x.c或者lcd1602.c;lcd12864.c;lcd320240.c等,引出基本的初始化、定位、写点、写字节函数
驱| ↓ ↓
动 ---物理层--文件lcd61202_io.c;lcd61202_bus.c;引出器件的基本读写函数
对应文件应用举例2:
---应用层--面向用户的主程序
软| ↓
件|---协议层--如FAT、TCPIP、OS等现成的协议栈、算法、游戏等
相| ↓
关| ↓
---功能层--如文件lcd.c;led.c;eeprom.c;time.c;ir.c;keybord.c;harddisk.c;如EEPROM的块写统一化
硬| ↓ ↓
件|---器件层--文件ee24xx.c;ee93xx.c;ee_sdcard.c;ee29xx.c;ee28f.c;ee39xx.c;等
驱| ↓ ↓
动 ---物理层--文件bus_i2c.c;bus_spi.c等