當前位置:
首頁 > 最新 > 考一考!嵌入式 Linux面試基礎題三道

考一考!嵌入式 Linux面試基礎題三道

題一:

請問uboot啟動過程都做了些什麼?

思考過後,再到下方尋找答案

題二:

為什麼uboot要關掉cache?

思考過後,再到下方尋找答案

題三:

nandflash和norflash的區別,對norflash的操作方式的理解?

思考過後,再到下方尋找答案

題一答案:

1、cpu剛開始初始化的時候,還未設置棧,所以先使用彙編代碼,構建異常項鏈表,然後設置cpu為svc(特權)模式,同時關閉FIQ和IRQ(防止突發中斷程序跑飛了)

註:在跳轉到內核之前,要滿足CPU出在SVC模式下。

2、對cp15協處理器進行設置,這裡主要是關閉MMU和cache

3、進入到板級初始化階段,這裡會進行時鐘、內存、串口的初始化。最後還要關閉看門狗。

4、接下來就是設置棧,為c語言準備運行環境,調用board_init_f,填充gd結構體。

5、對代碼重定位,搬運到內存中去,搬運之後,跳轉到內存中去執行board_init_r,這裡就可以開啟cache了,當然也可以不開啟。然後初始化其他設備。比如flash、網卡、emmc等。初始化完之後,在執行main_loop

題二答案:

1、cpu剛開始初始化的時候,還未設置棧,所以先使用彙編代碼,構建異常項鏈表,然後設置cpu為svc(特權)模式,同時關閉FIQ和IRQ(防止突發中斷程序跑飛了)

註:在跳轉到內核之前,要滿足CPU出在SVC模式下。

2、對cp15協處理器進行設置,這裡主要是關閉MMU和cache

3、進入到板級初始化階段,這裡會進行時鐘、內存、串口的初始化。最後還要關閉看門狗。

4、接下來就是設置棧,為c語言準備運行環境,調用board_init_f,填充gd結構體。

5、對代碼重定位,搬運到內存中去,搬運之後,跳轉到內存中去執行board_init_r,這裡就可以開啟cache了,當然也可以不開啟。然後初始化其他設備。比如flash、網卡、emmc等。初始化完之後,在執行main_loop

題三答案:

兩種晶元的結構不同 NORflash之所以可以片內執行,就是因為他符合CPU去指令解碼執行的要求。CPU送一個地址出來,NORflash就能給一個數據讓CPU執行,中間不需要額外的處理操作。

NAND flash不一樣是因為nandflash有地址,數據,命令共用IO口的問題,cpu把地址發出來之後,並不能直接得到數據,還需要控制線的操作才能完成。就是他沒有專用的SRAM介面。

嵌入式系統中代碼的執行方式主要有3種:

完全映射按需分頁eXecute In Place (XIP)片上執行。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嵌入式ARM 的精彩文章:

從一個不起眼的小公司逐漸成為半導體行業巨頭,Microchip CEO史蒂夫桑吉不一般的「擴張」之路
嵌入式Linux驅動開發基礎總結

TAG:嵌入式ARM |