1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 嵌入式C語言面試題(附答案)

        時間:2024-06-15 16:04:45 嵌入式培訓 我要投稿
        • 相關推薦

        嵌入式C語言面試題(附答案)

          1 讀程序段,回答問題

        嵌入式C語言面試題(附答案)

          int main(int argc,char *argv[])

          {

          int c=9,d=0;

          c=c++%5;

          d=c;

          printf("d=%d\n",d);

          return 0;

          }

          a) 寫出程序輸出

          b) 在一個可移植的系統中這種表達式是否存在風險?why?

          #include "stdio.h"

          int a=0;

          int b;

          static char c;

          int main(int argc,char *argv[])

          {

          char d=4;

          static short e;

          a++;

          b=100;

          c=(char)++a;

          e=(++d)++;

          printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);

          return 0;

          }

          a) 寫出程序輸出

          b) 編譯器如果安排各個變量(a,b,c,d)在內存中的布局(eg. stack,heap,data section,bss section),最好用圖形方式描述。

          2 中斷是嵌入式系統中重要的組成部分,這導致了許多編譯開發商提供一種擴展:讓標準C支持中斷,產生了一個新的關鍵字__interrupt。下面的代碼就使用了__interrupt關鍵字去定義了一個中斷服務子程序(ISR),請評論以下這段代碼。

          __interrupt double compute_area(double radius)

          {

          double area = PI * radius *radius;

          printf("nArea = %f", area);

          return area;

          }

          3 C/C++基礎知識問題

          a) 關鍵字volatile在編譯時有什么含義?并給出三個不同使用場景的例子(可以偽代碼或者文字描述)。

          b) C語言中static關鍵字的具體作用有哪些 ?

          c) 請問下面三種變量聲明有何區別?請給出具體含義

          int const *p;

          int* const p;

          int const* const p;

          4 嵌入式系統相關問題

          a) 對于整形變量A=0x12345678,請畫出在little endian及big endian的方式下在內存中是如何存儲的。

          b) 在ARM系統中,函數調用的時候,參數是通過哪種方式傳遞的?

          c) 中斷(interrupt,如鍵盤中斷)與異常(exception,如除零異常)有何區別?

          5 設周期性任務P1,P2,P3的周期為T1,T2,T3分別為100,150,400;執行時間分別為20,40,100。請設計一種調度算法進行任務調度,滿足任務執行周期及任務周期。

          6 優先級反轉問題在嵌入式系統中是一中嚴重的問題,必須給與足夠重視。

          a) 首先請解釋優先級反轉問題

          b) 很多RTOS提供優先級繼承策略(Priority inheritance)和優先級天花板策略(Priority ceilings)用來解決優先級反轉問題,請討論這兩種策略。

          參考答案:

          1 5

          存在風險,因為c=c++%5;這個表達式對c有兩次修改,行為未定義,c的值不確定

          int a=0; // data section

          int b; // data section

          static char c; // BSS

          int main(int argc,char *argv[])

          {

          char d=4; // stack

          static short e; // BSS

          a++;

          b=100;

          c=(char)++a;

          e=(++d)++;

          printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);

          return 0;

          }

          a=2,b=100,c=2,d=6,e=5

          2 a)ISR不能返回一個值;

          b)ISR不能傳遞參數;

          c)浮點一般都是不可重入的;

          d)printf函數有重入和性能上的問題。

          3 a) 用volatile關鍵字定義變量,相當于告訴編譯器,這個變量的值會隨時發生變化,每次使用時都需要去內存里

          重新讀取它的值,并不要隨意針對它作優化。

          建議使用volatile變量的場所:

          (1) 并行設備的硬件寄存器

          (2) 一個中斷服務子程序中會訪問到的非自動變量(全局變量)

          (3) 多線程應用中被幾個任務共享的變量

          b) 在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。

          在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數

          訪問。它是一個本地的全局變量。

          在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的

          模塊的本地范圍內使用。

          static全局變量與普通的全局變量有什么區別:static全局變量只初使化一次,防止在其他文件單元中被引用;

          static局部變量和普通局部變量有什么區別:static局部變量只被初始化一次,下一次依據上一次結果值;

          static函數與普通函數有什么區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝

          c) 一個指向常整型數的指針

          一個指向整型數的常指針

          一個指向常整型數的常指針

          4

          a) 0x12345678

          little endian big endian 剛好反過來

          高地址--〉 0x12 低地址--〉 0x12

          0x34 0x34

          0x56 0x56

          低地址--〉 0x78 高地址--〉 0x78

          b)參數<=4時候,通過R0~R3傳遞,>4的通過壓棧方式傳遞

          c) 異常:在產生時必須考慮與處理器的時鐘同步,實踐上,異常也稱為同步中斷。在處理器執行到由于編程失誤而導致的錯誤指令時,或者在執行期間出現特殊情況(如缺頁),必須靠內核處理的時候,處理器就會產生一個異常。

          所謂中斷應該是指外部硬件產生的一個電信號,從cpu的中斷引腳進入,打斷cpu當前的運行;

          所謂異常,是指軟件運行中發生了一些必須作出處理的事件,cpu自動產生一個陷入來打斷當前運行,轉入異常處理流程。

          異步與同步的區別`

          5

          6 高優先級任務需要等待低優先級任務釋放資源,而低優先級任務又正在等待中等優先級任務的現象叫做優先級反轉

          優先級繼承策略(Priority inheritance):繼承現有被阻塞任務的最高優先級作為其優先級,任務退出臨界區,恢

          復初始優先級。

          優先級天花板策略(Priority ceilings):控制訪問臨界資源的信號量的優先級天花板。

          優先級繼承策略對任務執行流程的影響相對教小,因為只有當高優先級任務申請已被低優先級任務占有的臨界資源

          這一事實發生時,才抬升低優先級任務的優先

        【嵌入式C語言面試題(附答案)】相關文章:

        精選C++面試題及答案05-23

        2016年c++經典面試題及答案03-19

        2016年嵌入式面試C語言試題「精選」03-07

        2016年嵌入式開發C語言問題詳解03-11

        2024年嵌入式面試試題(附答案)10-23

        2016年嵌入式工程師面試題及答案「精選」03-07

        計算機C語言試題及答案02-25

        Linux系統工程師面試題(附答案)03-02

        嵌入式開發中C語言中結構體解讀201603-11

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>