PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   請教高手 ARM linux kernel 的一個問題 (https://www.pcdvd.com.tw/showthread.php?t=937663)

darkangel 2011-08-02 01:13 AM

引用:
作者jamin
真是奇怪的特性

不過, 這些應該在 bootloader 就會做的事, 在 linux 做不是很奇怪嗎? :confused:


anomaly 大大說的應該沒錯, 從 boot loader 到 linux kernel 的 code 我有 trace 過, 照程式碼來看, linux kernel 本身應該就可以直接跑不需要 boot loader.
我剛突然想到, 搞不好現在 ARM pipeline 不止 5 stages(anomaly 大大提到的那五個), 查了一下 wiki 果然 ARM11 有 8 stages pipeline!
所以一開始連跑 8 nop, 應該是要確定 pipeline 的狀態無誤!

我一直還以為現在最多只有 5 stages pipeline... 所以才一直不清楚為什麼要跑八次, 這樣看起來應該是誤會.

http://en.wikipedia.org/wiki/ARM11
http://en.wikipedia.org/wiki/ARM9

非常謝謝各位高手!

:stupefy: :stupefy: :stupefy: :stupefy: :stupefy:

darkangel 2011-08-02 01:25 AM

引用:
作者latw
小弟淺見...
一般來說在linux kernel被載入之前會有boot loader.
boot loader將linux載入後會call linux的start function.
但是這個start function未必是0x00的地方, 但是這個位置應該是由linker來決定....
--
基本上當載入linux kernel已經算是非常後期...對崁入式系統來說....
都有stack可用, 表是基本的相關硬體都已經弄好了.
而且就連最夯的u-boot大部分也都是用C在寫, 組合語言佔的比例真的很少很少了


以 ARM 來說, boot loader 是以跳到 kernel 的第一個 byte 把控制權移交的, 配置 C runtime environment 的部份還是 linux kernel boot 前面那段 asm 做掉的.

nawtequalizer 2011-08-02 04:01 AM

引用:
作者darkangel
anomaly 大大說的應該沒錯, 從 boot loader 到 linux kernel 的 code 我有 trace 過, 照程式碼來看, linux kernel 本身應該就可以直接跑不需要 boot loader.
我剛突然想到, 搞不好現在 ARM pipeline 不止 5 stages(anomaly 大大提到的那五個), 查了一下 wiki 果然 ARM11 有 8 stages pipeline!
所以一開始連跑 8 nop, 應該是要確定 pipeline 的狀態無誤!

我一直還以為現在最多只有 5 stages pipeline... 所以才一直不清楚為什麼要跑八次, 這樣看起來應該是誤會.

http://en.wikipedia.org/wiki/ARM11
http://en.wikipedia.org/wiki/ARM9

非常謝謝各位高手!

:stupefy: :stupefy: :stupefy: :stupefy: :stupefy:

長知識了,
也謝謝你提出問題。

passerx 2011-08-02 06:10 AM

程式碼不是有寫註解,

"sort out different calling conventions"

這跟ABI有關,細節要去翻ABI的定義.

kiten 2011-08-02 07:51 AM

引用:
作者darkangel
anomaly 大大說的應該沒錯, 從 boot loader 到 linux kernel 的 code 我有 trace 過, 照程式碼來看, linux kernel 本身應該就可以直接跑不需要 boot loader.
我剛突然想到, 搞不好現在 ARM pipeline 不止 5 stages(anomaly 大大提到的那五個), 查了一下 wiki 果然 ARM11 有 8 stages pipeline!
所以一開始連跑 8 nop, 應該是要確定 pipeline 的狀態無誤!

我一直還以為現在最多只有 5 stages pipeline... 所以才一直不清楚為什麼要跑八次, 這樣看起來應該是誤會.

http://en.wikipedia.org/wiki/ARM11
http://en.wikipedia.org/wiki/ARM9

非常謝謝各位高手!

:stupefy: :stupefy: :stupefy: :stupefy: :stupefy:

ARM架構除了嵌入式系統,平板電腦,手持裝置.....外
桌機,筆電,伺服器會出頭嗎??
我是連x86系列的assembly都搞不出名堂的咖
看到板上ARM討論這麼熱烈,驚駭莫名 :ase

yctsai88 2011-08-02 08:31 AM

引用:
作者kiten
ARM架構除了嵌入式系統,平板電腦,手持裝置.....外
桌機,筆電,伺服器會出頭嗎??
我是連x86系列的assembly都搞不出名堂的咖
看到板上ARM討論這麼熱烈,驚駭莫名 :ase


Cortex A8, A9應該還沒辦法打入目前Intel掌控的範圍
不過Cortex A15應該有機會 尤其是在每瓦效能上 ARM是大幅領先

passerx 2011-08-02 08:41 AM

引用:
作者darkangel
.......
所以一開始連跑 8 nop, 應該是要確定 pipeline 的狀態無誤!
........



要清掉pipeline只要一個jump就夠了.

darkangel 2011-08-02 10:02 AM

引用:
作者passerx
程式碼不是有寫註解,

"sort out different calling conventions"

這跟ABI有關,細節要去翻ABI的定義.


就是有那個註解我才會疑惑, 所以一開始我也是認定為保留用.
但是網友大都頃向為可能是 pipeline 的機制, 我才去查 ARM 現在的 pipeline.
我還是不能理解, 一開機時 GOT 都還沒配置, 會跟 ABI 有啥關係?
請高手指點.

latw 2011-08-02 10:07 AM

引用:
作者darkangel
就是有那個註解我才會疑惑, 所以一開始我也是認定為保留用.
但是網友大都頃向為可能是 pipeline 的機制, 我才去查 ARM 現在的 pipeline.
我還是不能理解, 一開機時 GOT 都還沒配置, 會跟 ABI 有啥關係?
請高手指點.

根據室友不可靠說法..
若boot loader只有把linux kernel載入的話,那應該是清pipleine.
有些CPU需要幾個nop指令去清除.

anomaly 2011-08-02 10:14 AM

引用:
作者passerx
要清掉pipeline只要一個jump就夠了.


能夠避開CPU內部的Hazard都是好方法

http://en.wikipedia.org/wiki/Hazard_(computer_architecture)


所有的時間均為GMT +8。 現在的時間是12:50 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。