参考网址:
(94条消息) 例解嵌入式系统分层结构_和风化雨-CSDN博客_嵌入式系统分层
目的
分层的目的主要:1,是降低系统开发难度;2,是为了复用。
两层结构[硬件层, 软件层]
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <reg51.h> int main() { int i=0; while(1) { P1_1=0; for(i=0;i<5000;i++); P1_1=1; for(i=0;i<5000;i++); } }
|
三层结构[ 硬件层, 驱动层,应用层 ]
虽然简单但很有逻辑,可以参考
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| void delay(); void led_on(); void led_off();
#include <reg51.h> #include"driver.h"
void delay() { int i=0; for(i=0;i<5000;i++); } void led_on() { P1_1=0; } void led_off() { P1_1=1; }
#include“../driver/driver.h” int main() { while(1) { led_on(); delay(); led_off(); delay(); } }
|
四层结构[ 硬件层,驱动层,操作系统层,应用层 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| #include<linux/kerel.h> #include<linux/module.h> #include<asm/uaccess.h> #include<linux/mm/h> #include<linux/ioport.h> #include<asm/io.h> #include<linux/ioport.h> #include<linux/fs.h> int led_init(void); void led_cleanup(); static int device_open(struct inode *,struct file*); static int device_release(struct inode *,struct file*); static ssize_t device _write(struct file*,const char *,size_t,loff_t *); int init_model(void); void cleanup_module(void); struct file_operations led_ops={ .owner=THIS_MODULE, .............................. } int led_init(void) { .............................. } void led_cleanup() { .............................. } static int device_open(struct inode * inode ,struct file* file) { .............................. } static int device_release(struct inode *inode,struct file* file) { .............................. } static ssize_t device _write(struct file *file,const char * buffer,size_t length,loff_t *offset) { .............................. int init_model(void) { .............................. } modele_init(led_init); module_exit(led_cleanup); MODULE_LICENCE("GPL");
#include <stdlib.h> #include <stdio.h> #include <sys/ioctl.h> #include<sys/time.h> #define LED "/dev/led" int main() { File *fp=fopen(LED,RDWR); if(!fp){ while(1){ ioctl(fp,1); sleep(1); ioctl(fp,0); sleep(0); } } fclose(fp); }
|