久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

用uboot調(diào)試裸機(jī)C語(yǔ)言

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年12月18日   【字體:

  昨天用uboot1.4調(diào)試了一下基于s3c44b0的一個(gè)LED燈實(shí)驗(yàn),成功,紀(jì)錄下:

  最初的設(shè)想是想用uboot的loadb命令來(lái)調(diào)試自己移植的uboot,發(fā)現(xiàn)串口沒(méi)顯示,當(dāng)時(shí)就暈了 就不想再動(dòng)了,原因可想而知是各種各樣的,難~~~  但再想想是不是思路有問(wèn)題,就打算寫個(gè)裸C來(lái)試下loadb命令。

整個(gè)程序就是實(shí)現(xiàn)個(gè)流水燈(也就只有三個(gè)LED),就叫做led.c吧,編譯成led.o,再用arm-elf-objcopy成led.bin,通過(guò)串口,用uboot命令loadb 0x0c008000 用超級(jí)終端傳送一下,(很快,一下而過(guò))發(fā)現(xiàn)板子沒(méi)反應(yīng),(又暈了)只有找google了(還是推薦google,百度還是差點(diǎn))發(fā)現(xiàn)還要鏈接,那就arm-elf-ld -Ttext 0x0c008000 -nostdinc -o led.elf led.o(不是很懂為什么要加-nostdinc 然道是為了幫ld省事,不要去找stdinc??)。再次loadb 發(fā)現(xiàn)板上的燈還是沒(méi)動(dòng)靜()這可雜辦呢~~~

再次使出google大法,再看看自己的led.c~~~~~(時(shí)間很長(zhǎng)

終于找到了一點(diǎn)有用的:“對(duì)于裸機(jī)C程序,入口函數(shù)應(yīng)該放在文件最前面”

然道我的燈不動(dòng)就是因?yàn)樵趀ntry()之前寫了一個(gè)delay()????

那就試著改一下吧,所有其他函數(shù)都寫在entry()之后,再次arm-elf-gcc arm-elf-as arm-elf-ld arm-elf-objcopy~~(各種難啊~~)最后loadb 0x0c00800~~~~~~~

終于是見(jiàn)到板上的LED如程序所寫一樣的動(dòng)起來(lái)了~~(激動(dòng)啊

    激動(dòng)之后再想想,覺(jué)的所謂的裸C程序,入口函數(shù)應(yīng)該在文件最前面 這一點(diǎn)甚是不懂啊,再次請(qǐng)教google大叔,哎,發(fā)現(xiàn)有關(guān)的太少了,看樣子是沒(méi)多少人研究這個(gè)了~~~

突然想到arm-elf-readelf這個(gè)東西,還是用用吧,打開(kāi)led.elf看看,于是在arm-elf-readelf -a led.elf作用下,顯示了一大堆,當(dāng)時(shí)就眼花了,怕了~~~

還是慢慢來(lái)吧,一步一步來(lái),先arm-elf-readelf -h led.elf

還是能看懂的,非常簡(jiǎn)單的幾個(gè)english word  再次arm-elf-readelf -s led.elf

感覺(jué)自己要的東西出現(xiàn)了~~~~

出現(xiàn)了類似表單的文本,不懂頭幾個(gè)單詞的意思()卻在下面發(fā)現(xiàn)了entry ~~

還在同一行看到了0c008000 應(yīng)該是說(shuō)在0x0c008000這個(gè)地方有一個(gè)entry 哈哈,這個(gè)我懂啊,所謂的程序入口函數(shù)嘛,我的程序就是要在0x0c008000處開(kāi)始運(yùn)行啊

于是我再改回我原來(lái)的led.c,把delay()放在entry()前面,再次arm-elf-readelf -s led.elf,發(fā)現(xiàn)

在0c00800 一行上對(duì)應(yīng)的是 .gcc2_compiled  而entry這一行對(duì)應(yīng)的地址卻是0c00802c

哎,這才總算在猜測(cè)+測(cè)試中發(fā)現(xiàn)所謂的裸C程序入口函數(shù)為什么要放在最前面了(只是猜測(cè)沒(méi)人告訴我why)裸C程序里的函數(shù)放置地址是按函數(shù)實(shí)現(xiàn)的地址來(lái)放置的 就是說(shuō)在內(nèi)存中函數(shù)的放置地址順序與在文件中的實(shí)現(xiàn)順序是對(duì)應(yīng)的~~ 而非裸C程序,甚至只要加了個(gè)符號(hào)鏈接的話,在內(nèi)存中的執(zhí)行地址與程序文本中的實(shí)現(xiàn)地址是無(wú)關(guān)的~~

~~~由此牽扯出的一大堆問(wèn)題怕是難以一下解決的了,哎  難~~~

   路漫漫其修遠(yuǎn)兮~~~~~~~
 

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 国产成人高清成人av片在线看 | 亚洲精品成人网 | 久久久久久亚洲精品 | 中文字幕成人免费视频 | a欧美 | 国产三级精品三级在线观看四季网 | 免费一区| 一区二区三区日韩 | 亚洲精选久久 | 久久夜夜| 亚洲一区二区三区免费 | 欧美性受xxxx白人性爽 | 国产精品日韩在线观看一区二区 | 青青久久久 | 亚洲欧美日韩精品久久亚洲区 | 日韩三级一区 | japanhdxxxx裸体 | 国产一区二区三区在线 | 日本a v在线播放 | 欧美日韩国产精品一区二区 | 国产一区二区三区在线看 | 成人黄色电影在线播放 | 一区二区三区国产精品 | 国产一在线观看 | 一级毛片免费看 | 欧美一区二区精品 | 国产成人99久久亚洲综合精品 | 偷拍自拍网址 | 国产精品久久久久久久午夜片 | 国产福利在线 | 成人在线免费网站 | 在线观看中文字幕 | 欧美理伦片在线播放 | 精品久久久久久亚洲综合网 | 欧美成人高清视频 | 亚洲国产欧美一区 | www.国产精| 精品国产精品 | 日韩精品三区 | 国产精品久久久久久久久图文区 | 亚洲高清视频在线 |