學習arm開發(5)
蔡軍生 2005/07/16 寫於深圳
上一次說到要學習uboot的**,但在看之前,首先要知道目標機器的程式設計資源,這裡的資源,是指s3c44b0所提供的執行程式的資源,對任何嵌入式軟體開發,都首先要對硬體有乙個很好的了解,這跟pc機的程式設計是大不一樣的。因為pc機都已經發展了30多年,但整個程式設計的體系是沒有很大的變化,就是說現在的pc都是在虛擬機器上編寫了,跟硬體打交道的機會很少,所以不用去了解它。但是在嵌入式的軟體裡,每樣硬體都是千差萬別的,所以一定要去看原版的s3c44b0說明手冊,一定要看英文原版的,不能看那種中文版的,哈哈,為什麼要看英文原版的呢?第一,每個cpu都有很多特別暫存器,而這些暫存器都是用英文縮寫的,看中文,就不知道它是什麼意思了,並且還要死記,沒有英文整句好記。第二,中文是經過翻譯的,並且都不是三星廠家進行翻譯,都是一些業餘水平的人來做,很難保證按原文的意思進行。有一次,我看中文的s3c44b0資料找特別暫存器,就找不到,我說為什麼沒有呢,原來別人都不翻譯那些,結果在英文原版中,一看就找到了。因此,喜歡看英文原版的。並且只要學習過幾個cpu之後,發現嵌入式軟體就那幾樣東西了。
對開發軟體的人來說,最重要的東西是什麼呢?哈哈,當然是儲存器和暫存器了。每次拿到開發板之後,一定要去了解儲存器是怎麼樣分配的,是從什麼位址開始,儲存器有多大。是什麼樣的儲存器,是flash的,還是sdram的。flash的儲存器對映在s3c44b0的什麼位址空間呢?sdram又是對映在什麼位址空間呢?一定要把這些問題搞清楚,否則就很難對它開發軟體。所以看s3c44b0的手冊時,就要注意看它的儲存管理。目前,s3c44b0的儲存器管理,分為很多bank的。bank0一般用來對映flash儲存器,並且在bank0後面一段空間裡進行特別暫存器對映,它的空間是4m大小。並且一般的開發板,都是把flash儲存器對映在0x0000_0000 到 0x001f_ffff,這裡的位址空間,就是2m大小。把sdram對映在bank6裡面,位址空間就是0x0c00_0000 到 0x0c7f_ffff,這裡就是8m的sdram了。
特別暫存器的位址空間是從 0x01c0_0000到0x0200_0000的4m空間裡,這裡的暫存器,大多數都是跟io有關的。比如序列通訊,dma,pwm,看門狗,io口等等。
看懂了存寄器和儲存器,就可以進行彙編練習。當然s3c44b0它還有arm標準的暫存器,共有37個吧。這些是所有arm的cpu都具有的。
把cpu和s3c44b0特別的功能深入了解之後,就可以去看uboot**。
下一次,開始看uboot**,並且動編譯它,執行它,測試它,這樣一定能學習好的。當然,也是在開發產品,不久,我們的產品,就可以開發出來了。
學習ARM開發20 21
學習arm開發 20 os的任務切換 有了前面的tick中斷,那麼基本的任務切換條件已經是 萬事俱備,只欠東風 了。不過,這個 東風 也是很難搞得懂的,只有不斷地通過實踐才會找到合適的方法。現在我就需要去找這個東風了,就是解決不同的任務切換的問題。從簡單到複雜,這是任何事物的認識過程,也是行之有效的...
學習ARM開發 9
學習arm開發 9 上一次把引導的彙編看完,已經準備c的執行環境,下面就開始學習c的源程式,從start.s檔案裡到跳檔案 lib arm board.c裡執行.引導程式從彙編start.s裡跳到這裡執行。蔡軍生 2005 07 19 void start armboot void 宣告乙個全域性指...
學習ARM開發 11
學習arm開發 11 昨天又是星期天,在家裡又可以對那塊開發板進行軟體研究了。由於前幾次,把編譯好的uboot寫到flash老是執行不了。那麼怎麼辦呢?思考了很久,也檢視 了源程式,還是沒有發現問題。也許那個uboot的源程式太大,有很多的編譯開關,還有很多驅 動程式選擇,所以一頭霧水,不知怎麼辦好...