一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

聊聊嵌入式軟件分層

lilihe92 ? 來源:CSDN ? 2023-12-28 09:22 ? 次閱讀

正文

大家好,今天以控制LED閃爍為例,聊聊嵌入式軟件分層:

———————————
||
|P1.1|-----I<|--------------<|
|??????????|????????????????
|?????p2.1?|-------------/?---------|--.
|??????????|
|??????????|
———————————??????

1、兩層結(jié)構(gòu)

硬件層<-->軟件層--最粗糙的分層架構(gòu)

/**********************************************************************************/
#include
intmain()
{
inti=0;
while(1)
{
P1_1=0;
for(i=0;i<5000;i++);
??????P1_1=1;
??????for(i=0;i<5000;i++);
??}
}

2、三層結(jié)構(gòu)

硬件層<--> 驅(qū)動層<-->應(yīng)用層

/*******************驅(qū)動頭文件driver.h***********************************************************/
voiddelay();
voidled_on();
voidled_off();
/*******************驅(qū)動源文件driver.c************************************************************/
#include
#include"driver.h"
/*延時函數(shù)*/
voiddelay()
{
inti=0;
for(i=0;i<5000;i++);
}
void?led_on()
{
???P1_1=0;
}
void?led_off()
{
???P1_1=1;
}
/******************應(yīng)用系統(tǒng)****************************************************************/
#include“../driver/driver.h”
int?main()
{
??while(1)
???{?
???????led_on();
???????delay();
???????led_off();
???????delay();
??}
}

3、四層結(jié)構(gòu)

硬件層<-->驅(qū)動層<-->操作系統(tǒng)層<-->應(yīng)用層

/******************************驅(qū)動****************************************************/
#include
#include
#include
#include
#include
#include
#include
#include
intled_init(void);
voidled_cleanup();
staticintdevice_open(structinode*,structfile*);
staticintdevice_release(structinode*,structfile*);
staticssize_tdevice_write(structfile*,constchar*,size_t,loff_t*);
intinit_model(void);
voidcleanup_module(void);
structfile_operationsled_ops={
.owner=THIS_MODULE,
..............................
}
intled_init(void)
{
..............................
}
voidled_cleanup()
{
..............................
}
staticintdevice_open(structinode*inode,structfile*file)
{
..............................
}
staticintdevice_release(structinode*inode,structfile*file)
{
..............................
}
staticssize_tdevice_write(structfile*file,constchar*buffer,size_tlength,loff_t*offset)
{
..............................
intinit_model(void)
{
..............................
}
modele_init(led_init);
module_exit(led_cleanup);
MODULE_LICENCE("GPL");
/******************************應(yīng)用****************************************************/
#include
#include
#include
#include
#defineLED"/dev/led"
intmain()
{
File*fp=fopen(LED,RDWR);
if(!fp){
while(1){
ioctl(fp,1);
sleep(1);
ioctl(fp,0);
sleep(0);
}
}
fclose(fp);
}

從上面的例子可以看出,層次越多,好像系統(tǒng)的代碼越多,開發(fā)者的工作量越大。實(shí)際情況是真的如此嗎?其實(shí)分層的目的主要1是降低系統(tǒng)開發(fā)難度;2是為了復(fù)用。

驅(qū)動層和中間的操作系統(tǒng)層是可以復(fù)用的,產(chǎn)品升級或更新?lián)Q代的時候,雖然總的代碼量是大的,但實(shí)際有很多代碼是不需要重新開發(fā)的,系統(tǒng)開發(fā)的工作量相對較小。比如說IO口調(diào)整了,甚至是整個硬件板子更換了,軟件上只要調(diào)整驅(qū)動即可。

很多大學(xué)的嵌入式系統(tǒng)課程中采用的是兩層結(jié)構(gòu),主要的原因是教材中的示例一般比較簡單,其主要目的是為了演示如何使用芯片,如何實(shí)現(xiàn)某個功能,很少考慮復(fù)用的問題。

為了講清楚其中的操作方法,其代碼會盡量簡單,即使是實(shí)現(xiàn)相對比較復(fù)雜的功能可能也只是采用抽象為函數(shù)的方法,很少考慮工程的問題,在潛移默化中很多人就以為兩層架構(gòu)就是理所當(dāng)然的。

具體采用何種分層結(jié)構(gòu)是與產(chǎn)品相關(guān)的。比如大家都知道坐飛機(jī)是比步行快得,在校園里從上課的教室到休息的宿舍哪一種方式好呢?當(dāng)然是步行。反之,從南京到北京,采用坐飛機(jī)肯定要比步行好(當(dāng)然,更好的是坐高鐵)。

第3種方式似乎代碼量是最大的,但是要記住底層是很少改的,所以開發(fā)的時候就是寫應(yīng)用,這個代碼量有多少?!優(yōu)勢可見一斑!






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    244

    瀏覽量

    27078
  • LED閃爍
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9968

原文標(biāo)題:簡說嵌入式軟件分層思想

文章出處:【微信號:最后一個bug,微信公眾號:最后一個bug】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式分層架構(gòu)的相關(guān)資料分享

    最近重新進(jìn)入嵌入式領(lǐng)域,有必要對嵌入式分層架構(gòu)有一個清晰的理解。經(jīng)過多方查閱以及個人的理解,本人對嵌入式分層架構(gòu)概括總結(jié)如下:比較細(xì)的層次由
    發(fā)表于 10-28 08:42

    聊聊什么是嵌入式

    目錄隨便聊聊什么是嵌入式?我對嵌入式的看法單片機(jī)系統(tǒng)與嵌入式系統(tǒng)的差別PC系統(tǒng)與嵌入式系統(tǒng)的差別單片機(jī)與
    發(fā)表于 12-01 07:31

    嵌入式軟件開發(fā)過程之程序代碼分層

    嵌入式軟件開發(fā)過程中,在程序架構(gòu)的搭建完成之后,為了提高項(xiàng)目代碼的可讀性和可維護(hù)性等,應(yīng)對程序代碼分層
    發(fā)表于 12-21 06:13

    嵌入式軟件基礎(chǔ)的四層架構(gòu)分別是哪些

    嵌入式軟件分層架構(gòu)基本原則有哪些?嵌入式軟件基礎(chǔ)的四層架構(gòu)分別是哪些?
    發(fā)表于 12-24 07:57

    探討一下嵌入式軟件分層設(shè)計(jì)

    嵌入式軟件分層設(shè)計(jì)嵌入式軟件就是某一項(xiàng)目的源碼文件集合,源碼文件的數(shù)量,根據(jù)項(xiàng)目復(fù)雜程度的不同而有規(guī)模和層次的差別。就拿簡單的一個芯片廠..
    發(fā)表于 02-14 07:19

    什么是嵌入式軟件開發(fā)

    嵌入式軟件開發(fā)又是指什么?   隨著嵌入式軟件系統(tǒng)結(jié)構(gòu)越來越復(fù)雜,嵌入式軟件的開發(fā)已成
    發(fā)表于 04-20 08:43 ?8866次閱讀

    ARM嵌入式軟件開發(fā)

    ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)
    發(fā)表于 01-15 17:29 ?65次下載

    嵌入式軟件是什么意思_嵌入式軟件的分類有哪些

    本文首先闡述了嵌入式軟件的概念,其次介紹了嵌入式軟件的特征,最后介紹了嵌入式軟件的分類。
    發(fā)表于 08-31 15:54 ?1.6w次閱讀

    嵌入式軟件的開發(fā)流程_嵌入式軟件的調(diào)試

    本文首先介紹了嵌入式軟件的發(fā)展,其次闡述了嵌入式軟件的開發(fā)流程,最后介紹了嵌入式軟件的調(diào)試。
    發(fā)表于 08-31 16:02 ?6452次閱讀

    嵌入式軟件測試參考書籍

    嵌入式軟件測試的幾本參考書籍:1、《嵌入式軟件測試》;2、《嵌入式軟件測試 方法、案例與模板詳解
    發(fā)表于 10-20 12:06 ?51次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>測試參考書籍

    嵌入式框架-分層

    原有的代碼。接下來嵌入式ARM便和大家分享一下,嵌入式架構(gòu)那些事兒……01嵌入式系統(tǒng)的基本架構(gòu)嵌入式系統(tǒng)一般由軟件和硬件兩個部分組成,基中
    發(fā)表于 10-20 16:06 ?24次下載
    <b class='flag-5'>嵌入式</b>框架-<b class='flag-5'>分層</b>

    嵌入式分層概括總結(jié)

    最近重新進(jìn)入嵌入式領(lǐng)域,有必要對嵌入式分層架構(gòu)有一個清晰的理解。經(jīng)過多方查閱以及個人的理解,本人對嵌入式分層架構(gòu)概括總結(jié)如下:比較細(xì)的層次由
    發(fā)表于 10-21 10:51 ?11次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>分層</b>概括總結(jié)

    嵌入式軟件開發(fā)的特點(diǎn)、設(shè)計(jì)流程、嵌入式軟件的結(jié)構(gòu)

    ? ? ? ?嵌入式軟件開發(fā)的特點(diǎn)、設(shè)計(jì)流程、嵌入式軟件的結(jié)構(gòu)?一:嵌入式軟件開發(fā)的特點(diǎn)1.?
    發(fā)表于 11-03 15:21 ?38次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發(fā)的特點(diǎn)、設(shè)計(jì)流程、<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>的結(jié)構(gòu)

    嵌入式軟件分層隔離的典范是什么?

    嵌入式軟件開發(fā)分層、模塊化是理想狀態(tài),實(shí)際開發(fā)中因各種限制而有所取舍,但這不妨礙學(xué)習(xí)參考優(yōu)秀軟件架構(gòu),即使有部分思想在項(xiàng)目中落實(shí),也是大有裨益的。
    的頭像 發(fā)表于 01-20 11:08 ?1337次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b><b class='flag-5'>分層</b>隔離的典范是什么?

    嵌入式軟件架構(gòu)設(shè)計(jì)之程序分層

    嵌入式MCU軟件開發(fā)過程中,程序分層設(shè)計(jì)也是重中之重,關(guān)系到整個軟件開發(fā)過程中的協(xié)同開發(fā),降低系統(tǒng)軟件的復(fù)雜度(復(fù)雜問題分解)和依賴關(guān)系、
    的頭像 發(fā)表于 02-15 14:41 ?1567次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>架構(gòu)設(shè)計(jì)之程序<b class='flag-5'>分層</b>