一
請問uboot啟動過程都做了些什么?
二
為什么uboot要關掉cache?
三
nandflash和norflash的區(qū)別,對norflash的操作方式的理解?
請先思考后在看答案哦
一
uboot啟動過程都做了些什么
1、cpu剛開始初始化的時候,還未設置棧,所以先使用匯編代碼,構建異常項鏈表,然后設置cpu為svc(特權)模式,同時關閉FIQ和IRQ(防止突發(fā)中斷程序跑飛了)
注:在跳轉到內核之前,要滿足CPU出在SVC模式下。
2、對cp15協(xié)處理器進行設置,這里主要是關閉MMU和cache
3、進入到板級初始化階段,這里會進行時鐘、內存、串口的初始化。最后還要關閉看門狗。
4、接下來就是設置棧,為c語言準備運行環(huán)境,調用board_init_f,填充gd結構體。
5、對代碼重定位,搬運到內存中去,搬運之后,跳轉到內存中去執(zhí)行board_init_r,這里就可以開啟cache了,當然也可以不開啟。然后初始化其他設備。比如flash、網(wǎng)卡、emmc等。初始化完之后,在執(zhí)行main_loop
二
uboot要關掉cache
1、cpu剛開始初始化的時候,還未設置棧,所以先使用匯編代碼,構建異常項鏈表,然后設置cpu為svc(特權)模式,同時關閉FIQ和IRQ(防止突發(fā)中斷程序跑飛了)
注:在跳轉到內核之前,要滿足CPU出在SVC模式下。
2、對cp15協(xié)處理器進行設置,這里主要是關閉MMU和cache
3、進入到板級初始化階段,這里會進行時鐘、內存、串口的初始化。最后還要關閉看門狗。
4、接下來就是設置棧,為c語言準備運行環(huán)境,調用board_init_f,填充gd結構體。
5、對代碼重定位,搬運到內存中去,搬運之后,跳轉到內存中去執(zhí)行board_init_r,這里就可以開啟cache了,當然也可以不開啟。然后初始化其他設備。比如flash、網(wǎng)卡、emmc等。初始化完之后,在執(zhí)行main_loop
三
nandflash和norflash的區(qū)別及對norflash的操作方式的理解
兩種芯片的結構不同 NORflash之所以可以片內執(zhí)行,就是因為他符合CPU去指令譯碼執(zhí)行的要求。CPU送一個地址出來,NORflash就能給一個數(shù)據(jù)讓CPU執(zhí)行,中間不需要額外的處理操作。
NAND flash不一樣是因為nandflash有地址,數(shù)據(jù),命令共用IO口的問題,cpu把地址發(fā)出來之后,并不能直接得到數(shù)據(jù),還需要控制線的操作才能完成。就是他沒有專用的SRAM接口。
嵌入式系統(tǒng)中代碼的執(zhí)行方式主要有3種:
-
cpu
+關注
關注
68文章
11269瀏覽量
224734 -
Linux
+關注
關注
88文章
11751瀏覽量
218939 -
Uboot
+關注
關注
4文章
131瀏覽量
29912
原文標題:Linux面試基礎題3道
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
關于C語言的10道面試題
常見的嵌入式C語言面試題
java基礎練習、面試題
java經(jīng)典面試題深度解析
c語言面試題,c++面試題下載
Java的經(jīng)典面試題和答案詳細說明
Linux經(jīng)常出現(xiàn)的3道基礎面試題快來復習吧
評論