如何在44B0板子的RAM中執行uclinux

2021-05-23 08:42:11 字數 1510 閱讀 4399

1、將編譯好的uclinux_rom.bin放在tftpd32的預設傳輸目錄下,在uboot中輸入命令tftp 0x0c## booting image at 0c208000 ...

image name:   uclinux_hfrk_www.21spacetime.net

created:      2009-01-15   6:56:28 utc

image type:   arm linux kernel image (gzip compressed)

data size:    1432456 bytes =  1.4 mb

load address: 0c008000

entry point:  0c008000

verifying checksum ... ok

uncompressing kernel image ... ok

starting kernel ...

(後面是uclinux的啟動資訊,省略……)

也可以通過串列埠傳送的方式將檔案uclinux_rom.bin放到ram中,不過此方式速度較慢,需要耐心等待了。

上面之所要將

uclinux_rom.bin檔案放在ram的0x0c 208000位置處,是因為uclinux_rom.bin是壓縮檔案 ,在用bootm啟動時需要將原始檔案解壓縮到0x0c008000位置(此位址在編譯時就確定了),然後跳轉到這裡開始執行。所以必須使得uclinux_rom.bin的存放位置避開程式解壓縮後的儲存區域,否則二者衝突將導致啟動失敗。

2、編譯uclinux後還會生成uclinux_ram.bin.gz,此檔案就是專為在ram中執行產生的。

使用命令gunzip uclinux_ram.bin.gz解壓縮後得到

uclinux_ram.bin,將此檔案放到tftpd32的傳輸目錄下,修改檔名為

uclinux_ram.bin,無論如何只要使得二者保持一致就可以了)。

使用命令tftp 0x0c008000將檔案傳輸到ram中,然後輸入命令go0x0c008000就可以啟動uclinux了。注意,這裡

uclinux_ram.bin檔案在ram中的位置必須是

0x0c008000,而且不需要使用bootm來啟動,因為此檔案本來就是非壓縮檔案,直接讓cpu從此處執行即可。如果

uclinux_ram.bin在ram中的位置不是

0x0c008000,那麼使用go命令是無法啟動kernel的,因為程式在編譯時就已經確定了其執行的位址空間的,所以必須把映象放在正確的位址上才能成功啟動kernel。

看到的輸出資訊如下:

上面uclinux的程式已經開始執行了,但是啟動到載入ramdisk時後來出錯了(紅色部分),這個問題就與啟動方法無關了,而是編譯出的映象的問題。目前,我還沒有找到解決上述問題的方法,如果有高手知道,請指點!

44B0的向量中斷

44b0 的向量中斷響應過程是中斷發生後晶元會自動跳轉到 0x00000018 處執行指令 entry b resethandler 0x00 b handlerundef 0x04 b handlerswi 0x08 b handlerpabort 0x0c b handlerdabort 0x1...

關於44b0的中斷呼叫的問題

關於44b0的中斷呼叫的問題 下面的 因為44b0中的各個中斷型別相似的,所以只是以timer為例。在init.s中有這樣的 首先是乙個巨集的定義 macro handlerlabel handler handlelabel handlerlabel sub sp,sp,4 decrement sp...

如何將flash中的程式搬到ram中執行

4.f28335如何燒寫 到flash中並執行?首先使用新增c ti controlsuite device support f2833x v133 dsp2833x common cmd f28335.cmd。此檔案即為配置 到flash中的ti官方配置檔案。然後參考c ti controlsui...