處理器boot的簡單概念及誤區

2022-09-02 05:54:09 字數 856 閱讀 9507

研一的時候在s3c6410的開發板上完成了乙個簡單的bootloader的設計,有一些想法可以顧及到其他處理器的設計上,在這裡和大家分享一下。 晚一些的時候我再跟大家講如何去設計 :)

首先什麼叫做bootloader?在我看來,其實bootloader就是乙個搬運工,負責將序列或並行flash中的資料搬運至sdram,再將pc指標切換至sdram的對映位址。大家也許會問,8/16位微控制器或者cortex-m系列的處理器為啥不需要bootloader,在這裡其實是有誤區的,其實這些處理器也是有bootloader的,後面我會給大家講具體流程。拿8051和cortex-m系列的處理器來說事,這兩種cpu都是哈佛結構的cpu,現在的cpu在設計時兼顧了哈佛和普林斯頓的優勢,所以已經沒有乙個比較清晰的界限來定義cpu是屬於哈佛或是普林斯頓結構。

有些人可能就會問了?我在使用keil或是iar的時候沒有看到相關的」搬移「工作啊?真是成也蕭何,敗也蕭何。這也算是當代軟體的乙個缺失吧,這些事情,keil的編譯器都幫你做了,它自動的生成這部分「搬移」**,而這個**作為程式設計師是沒有辦法在ide視窗中看到的,這也不能說不是一種悲哀。當然你如果感興趣,也可以看的到這方面的過程,具體方式有很多種。例如如果你使用的mentor公司的gnu工具鏈的話,因為gcc沒有自動生成」搬移「**,因此在startup.a中是可以看到這部分搬移過程的。keil中也可以看到,提醒大家一下,objdump :)

當代軟體有時候幫你做的事,從理論上減輕了你的工作量,但是卻讓你沒有辦法接觸到最為核心的知識。這種做法無異於飲鴆止渴,當然這僅僅只是我的看法,我是一直gnu的支持者,就向很多人是windows的支持者一樣。在工具使用方面,一直都是仁者見仁,智者見智,在這裡,應該提倡百家爭鳴!好啦!今天就寫這麼多吧,改天跟大家討論如何在bootloader中設計應該注意一些問題。

處理器位數的概念

今天看借的書時候發現乙個模糊的概念,處理器的處理位數即字長,也就是我們平時說的多少位多少位。平時沒少和電子裝置打交道,不過對於真正意義上的位沒有精確的概念,今天翻了翻大三時候的微機書,位,指的是這個意思.字長 字長是指計算機內部參與運算的數的位數。它決定著計算機內部暫存器 alu和資料匯流排的位數,...

MIPS4k處理器boot學習

mips4k處理器boot學習 hdguy 發表於 2006 5 11 16 09 00 mips暫存器約定 暫存器編號 助記符 用法 0 zero 永遠返回值為0 1 at 用做彙編器的暫時變數 2 3 v0,v1 子函式呼叫返回結果 4 7 a0 a3 子函式呼叫的引數 8 15 t0 t7 暫...

MIPS4k處理器boot學習

mips暫存器約定 暫存器編號 助記符 用法 0 zero 永遠返回值為0 1 at 用做彙編器的暫時變數 2 3 v0,v1 子函式呼叫返回結果 4 7 a0 a3 子函式呼叫的引數 8 15 t0 t7 暫時變數,子函式使用時不需要儲存與恢復 24 25 t8 t9 16 25 s0 s7 子函...