今天將以前在windows ads上寫好的一些裸機程式用linux + arm-linux tools 移植到 tq2440上,剛弄第乙個 led,就卡住了,
main.c 不加任何修改
#define rgpbcon (*(volatile unsigned *)0x56000010) //port b control
#define rgpbdat (*(volatile unsigned *)0x56000014) //port b data
#define rgpbup (*(volatile unsigned *)0x56000018) //pull-up control b
static
void led_conf (void)
static
void led_opt (int led_nr,int val)
else
} void delay (int dl) }
int main (void) }
ads 上的 start.s
/ * start.s */
area init,code,readonly
entry
import main
bl main
b .
end
linux 下 start.s
/* start.s for linux */
.global _start
.extern main
.text
_start:
bl main
b .
/* makefile */
all:
arm-linux-gcc -g -c -nostdlib start.s -o start.o
arm-linux-gcc -g -c -nostdlib main.c -o main.o
arm-linux-ld -ttext 0x00 -g start.o main.o -o led.o
arm-linux-objcopy -o binary -s led.o led.bin
sudo dnw -a 0x0 led.bin
@echo download compelete !
clean:
rm -f *.o *.bin
# sudo minicom casey
# make all
原以為是小菜,可是tq2440死活不幹活
我做了以下努力 :
2. 將 windows 下的bin和arm-linux 弄出的bin分別dump ,看他們的bl 位址,一直follow ,可是,對比仍舊無問題
4.ld 0x30000000的前提下,加上 ldr sp,=4096,反而g掉了
5.後來我再繼續dump,用沒有strip 的 elf 檔案dump,總算發現了,原來是ld 0x00 的時候 ldr sp,=4096,sdram 改變了sp 的位址,板子當然罷工,嘿嘿
然後將start.s 改成如下:
/* start.s for linux */
.global _start
.extern main
.text
_start:
ldr sp,=4096
bl main
b .
# 後面一切順利 !
乙個有趣的測試,相當神奇!
沒人逃得過的超準思維定向測試 切記要慢慢,請不要第一次就看完了全部!一定要慢慢的往下看!這樣你才能真 的體會到真的很很詭異的喔!請第一次看到這個測試的朋友,首先靜下心來,認真的,快速的用自己的心算來 坐下面這個測試,看清楚要求,真實的說出當時的第乙個腦子裡面的答案,才能看出這 個測試的最有效的結果!...
在LINUX下編譯乙個模組 相當於乙個簡單的驅動
假設在 root code下建乙個hello.c的原始檔 如下 以下原始碼 include include static int hello init void static int hello exit void module init hello init module exit hello e...
ubuntu 9 04源 相當快的乙個源
備份源sudo cp etc apt sources.list etc apt sources.list backup 然後執行 sudo gedit etc apt sources.list 命令 然後加入下面的源 儲存後執行 sudo apt get update 你會發現速度快的驚人 更多請參...