?? hello_world編入內(nèi)核筆記.txt
字號:
搞定UCLINUX移植以后就開始整個最小的程序吧,當(dāng)然是HELLOWORLD了:)
一 先寫個helloworld.c (對于小代碼我喜歡先在WINDOW下建個“新建 文本文檔.txt”再在里面寫代碼,然后保存后改名成helloworld.c 注意的是擴(kuò)展名也要從TXT改成C才行,原來說過,不多說了)
里面寫下面等號里的代碼:
==================
#i nclude <stdlib.h>
#i nclude <stdio.h>
int main(void)
{
printf("hello world ! I got it!\n");
return 0;
}
==================
不用解釋了吧:)
二 然后編寫個makefile吧,別總用arm-elf-gcc了。
為以后編寫大規(guī)模程序打個基礎(chǔ):)
建個makefile(和前面一樣,先TXT然后改名,沒有擴(kuò)展名)
=====================
EXEC = helloworld
OBJS = helloworld.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
romfs:
$(ROMFSINST) /bin/$(EXEC)
clean:
rm -f $(EXEC) *.elf *.gdb *.o
======================
基本能看明白吧?MAKE的語法比較復(fù)雜,就不多講了,可以看我在前幾篇筆記里推薦的ZLG那本書。但幸運(yùn)的是基本不用自己動手了,LINUX源代碼里有很多MAKE 拿來改改吧:)
三 下面就是有朋友問我怎么把程序下到板子里了
一般說來有幾種方法。
1 板子掛載宿主機(jī)的NFS共享目錄,把程序拷貝到/tmp目錄(在RAM里)測試一下,但缺點是掉電要消失,只適合做調(diào)試時用。
2 做JFFS之類的日志文件系統(tǒng),和上面一樣NFS掛載拷貝過來,JFFS文件系統(tǒng)可以保證掉電不消失,類似U盤里拷貝程序(只是結(jié)果類似,原理完全不同)。
3 直接把程序燒寫進(jìn)ROMFS文件系統(tǒng),這里就只介紹這種。原因有兩點 首先 我還沒學(xué)怎么做JFFS,其次 我還沒學(xué)怎么做JFFS。哈哈
好了,那開工。
1)在uClinux-dist/user/下建立目錄hello
把helloworld.c和makefile拷貝到里面,怎么拷貝不用說了吧?VMWARE-TOOLS共享文件夾吧。
2)修改uClinux-dist/user/makefile
在適當(dāng)位置 找一行(這句語法扎堆的地方)加
dir_$(CONFIG_USER_HELLO) += hello
3)記住CONFIG_USER_HELLO這個名(自己可以改的 )
在uClinux-dist/config/Configure.help里加(扎堆)下面兩行
CONFIG_USER_HELLO
Only print hello world
上面是名(和前面必須一致)下面是注釋
4)改uClinux-dist/config/Configure.in里按照扎堆的原則加下面幾行
#############################################################################
mainmenu_option next_comment
comment 'Hello World'
bool 'demo' CONFIG_USER_MYAPP_DEMO
endmenu
#############################################################################
#號中間加的就是語法了,基本意思就是在Hello World--->下加個[]demo
編譯過內(nèi)核的都熟悉吧:)
5)像編譯內(nèi)核一樣編譯了
進(jìn)內(nèi)核源代碼目錄,比如uClinux-dist
make menucinfig
把主菜單選好了,不用說了吧?我的編譯內(nèi)核筆記里有,當(dāng)然如果不想修改內(nèi)核就只選上以下這個
Kernel/Library/Defaults Selection --->[*] Customize Kernel Settings (NEW)
意思是修改USER程序
EXIT 保存
然后在Customize Kernel Settings菜單里最后會出現(xiàn)Hello World--->
回車進(jìn)去以后看見[]demo了吧?
選上
EXIT 保存
6)編譯
幾大命令~~~
make dep
make clean
make lib_only
make user_only
make romfs
make
之后在生成uClinux-dist/image下有了uclinux_rom.bin
7)燒寫到板子里
板子里有UBOOT了吧?
順序做下面步驟(我在UBOOT編譯筆記里寫過,再寫一次)
A:loadb 0xc500000
B:發(fā)送(KERMIT協(xié)議)uclinux_rom.bin
C:erase 0x50000 0x1fffff
D:cp 0xc500000 0x50000 文件大小
注意:文件大小就是在傳輸完uclinux_rom.bin后顯示的數(shù)字 0X開頭=什么的那個0X數(shù)字
比如提示是0X0012a7f1=1222641
就0X0012a7f1/4+2=0x4A9FE命令就是:cp 0xc500000 0x50000 0x4A9FE
E:重起板子 就進(jìn)UCLINUX了
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -