在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

聊聊嵌入式軟件分層

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

正文

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

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

1、兩層結構

硬件層<-->軟件層--最粗糙的分層架構

/**********************************************************************************/
#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、三層結構

硬件層<--> 驅動層<-->應用層

/*******************驅動頭文件driver.h***********************************************************/
voiddelay();
voidled_on();
voidled_off();
/*******************驅動源文件driver.c************************************************************/
#include
#include"driver.h"
/*延時函數*/
voiddelay()
{
inti=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();
??}
}

3、四層結構

硬件層<-->驅動層<-->操作系統層<-->應用層

/******************************驅動****************************************************/
#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");
/******************************應用****************************************************/
#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);
}

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

驅動層和中間的操作系統層是可以復用的,產品升級或更新換代的時候,雖然總的代碼量是大的,但實際有很多代碼是不需要重新開發的,系統開發的工作量相對較小。比如說IO口調整了,甚至是整個硬件板子更換了,軟件上只要調整驅動即可。

很多大學的嵌入式系統課程中采用的是兩層結構,主要的原因是教材中的示例一般比較簡單,其主要目的是為了演示如何使用芯片,如何實現某個功能,很少考慮復用的問題。

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

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

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






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    245

    瀏覽量

    27177
  • LED閃爍
    +關注

    關注

    0

    文章

    29

    瀏覽量

    9996

原文標題:簡說嵌入式軟件分層思想

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式分層架構的相關資料分享

    最近重新進入嵌入式領域,有必要對嵌入式分層架構有一個清晰的理解。經過多方查閱以及個人的理解,本人對嵌入式分層架構概括總結如下:比較細的層次由
    發表于 10-28 08:42

    聊聊什么是嵌入式

    目錄隨便聊聊什么是嵌入式?我對嵌入式的看法單片機系統與嵌入式系統的差別PC系統與嵌入式系統的差別單片機與
    發表于 12-01 07:31

    嵌入式軟件開發過程之程序代碼分層

    嵌入式軟件開發過程中,在程序架構的搭建完成之后,為了提高項目代碼的可讀性和可維護性等,應對程序代碼分層
    發表于 12-21 06:13

    嵌入式軟件基礎的四層架構分別是哪些

    嵌入式軟件分層架構基本原則有哪些?嵌入式軟件基礎的四層架構分別是哪些?
    發表于 12-24 07:57

    探討一下嵌入式軟件分層設計

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

    什么是嵌入式軟件開發

    嵌入式軟件開發又是指什么?   隨著嵌入式軟件系統結構越來越復雜,嵌入式軟件的開發已成
    發表于 04-20 08:43 ?8902次閱讀

    ARM嵌入式軟件開發

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

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

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

    嵌入式軟件的開發流程_嵌入式軟件的調試

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

    嵌入式軟件測試參考書籍

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

    嵌入式框架-分層

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

    嵌入式分層概括總結

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

    嵌入式軟件開發的特點、設計流程、嵌入式軟件的結構

    ? ? ? ?嵌入式軟件開發的特點、設計流程、嵌入式軟件的結構?一:嵌入式軟件開發的特點1.?
    發表于 11-03 15:21 ?38次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發的特點、設計流程、<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>的結構

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

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

    嵌入式軟件架構設計之程序分層

    嵌入式MCU軟件開發過程中,程序分層設計也是重中之重,關系到整個軟件開發過程中的協同開發,降低系統軟件的復雜度(復雜問題分解)和依賴關系、
    的頭像 發表于 02-15 14:41 ?1657次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>架構設計之程序<b class='flag-5'>分層</b>
    主站蜘蛛池模板: 97影院午夜午夜伦不卡 | 欧美日韩在线成人免费 | 国模吧一区二区三区精品视频 | 亚洲 另类 在线 欧美 制服 | 色视频在线观看在线播放 | 欧美另类69xxxxx性欧 | 国产欧美乱码在线看 | 人与禽一级一级毛片 | 天天干夜夜怕 | 91操视频| 日本不卡高清免费v日本 | 91在线国内在线播放大神 | 午夜欧美福利 | 最新午夜宅男 | 国产精品三级在线 | 国产四虎 | 欧美色a电影精品aaaa | 欧美日韩一区在线观看 | 精品国产成人系列 | 亚洲va欧美va国产综合久久 | 激情五月婷婷在线 | 国产在线一区视频 | 成人夜色香网站在线观看 | 人阁色第四影院在线观看 | 4hu四虎永久免在线视 | 人人看人人做人人爱精品 | 最近2018中文字幕免费看手机 | 欧美生活性色 | 亚洲伊人成综合成人网 | 日本黄大片在线观看 | 免费看你懂的 | 最近在线观看免费完整视频 | 女人张开腿让男人捅爽 | 欧美freesex10一|3 | 80s国产成年女人毛片 | 欧美性猛交xxx嘿人猛交 | 美女被玩 | 一级毛片视频在线 | 天天综合天天 | 欧美tube44videos | 日本国产中文字幕 |