在架構bootloader是遇到的錯誤

在設置svc模式好之後調試時出現了一下的問題

Make al

Arm-linux-gcc -g -c start.o -o strart.S

Arm-none-linux-gnueabi-gcc;start.o:no such file or directory

Arm-none-linux-gnueabi-gcc;no input file

Make:*** [start.o]錯誤1

經過檢查發現錯誤:

在編譯時把  arm-linux-gcc -g -c $@  -o $^

修改成 arn-linux-gcc -g -c $^之後問題解決

二:在編寫makefile文件時要時刻注意空格鍵與tab鍵到底用的是那個;我遇到的是在以下代碼中

 all: start.o

 arm-linux-ld -Tgboot.lds -o gboot.elf $^

B arm-linux-objcopy -O binary gboot.elf gboot.bin

A %.o : %.S

B arm-linux-gcc -g -c $^

A %.o : %.c

B arm-linux-gcc -g -c $^

 

 

C .PHONY: clean

D clean:

B rm *.o *.elf *.bin

經過本人驗證:

A處前面的空格要一空格鍵打出,不然就會出現錯誤

B處的空格要以tab鍵打出,不然顯示的是 遺漏分隔符

Ctab鍵和空格鍵那個都不報錯,但若用了tabclean將不起作用

D處雖然tab鍵和空格鍵都不報錯,但

在語句裏面空格鍵那個都行

 

三:在循環點亮led時我寫的以下延時程序雖無錯誤但無法點亮led

  Int time

dely(time)

{

for(;time>0;time--)

;

}

 

當我修改到以下程序時就可以點亮了:

 

 

dely(int time)

{

for(;time>0;time--)

;

}

總結:用C編寫相關的功能函數時,若將變量定義在函數外面,有可能對實現該功能造成影響!

四:一個細節,一旦粗心就會出錯,在使用或配置寄存器時要看看之前宏定義時的方式  比如:#define NFSTAT (volatile unsigned char *)0x70200028

在使用時要用*NFSTAT)配置或傳參

#define *NFSTAT (volatile unsigned char *)0x70200028

使用時要用NFSTAT配置或傳參

不然可能會出現操作數無效或無法計算的錯誤

五:出現underfined  reference to xxxxxx的問題

在建立串口控制檯時,第一由於是初次在文件中套文件  即一個文件上級makefile要鏈接下級makefile所以會出現問題,

我出現的問題是第一次有一個函數書寫錯誤導致編譯不通過,但改正之後還是同樣的錯誤!經過不斷地測試;我發現當我挨個將每個文件或出現問題的文件make clean 即清除一下之後就ok了,而且如果不這樣做,在上級直接make clean是不會clean掉下級中的文件的,然後再make,一般就好了!

 

六:linux編譯時遇到警告:檢測到時鐘錯誤,您的創建可能不完整

root的終端輸入find . -type f -print | xargs touch即可。。。

在有的網頁上看到find . -type f -exec touch{}\;這個我一回車馬上提示exec缺少參數,不知道是怎麼回事,不過現在先有個感觀上的認識吧,然後慢慢的深究,一定能找到原因的。。。


發佈了24 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章