最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

UCOS學習報告之C8051F060移植篇

作者:shan318 欄目:嵌入式系統(tǒng)
UCOS學習報告之C8051F060移植篇
              UCOS學習報告之C8051F060移植篇


   掩飾不住內(nèi)心的喜悅,我用了6天就將UCOS移植到C8051F060,這期間得到了楊屹,牛毅,郝剛等廣大網(wǎng)友的幫助,在此一并表示感謝。本文來自于網(wǎng)絡,落葉于網(wǎng)絡,回饋給像我一樣不知該怎么入門的網(wǎng)友,若你能從中學到什么或有同感,我將甚感欣慰。若你要拍磚砸我,請讓我死的瞑目(呵呵,開個玩笑,真心希望你的頂,我們一塊討論,一塊進步)各位網(wǎng)友說過的已經(jīng)比較明了的問題我就不說或少說
前言:我以前學過2個月的ARM7+uClinux,深知移植的難處,那時叫交叉編譯,我當時就交叉編譯這個概念就1個星期沒搞懂,當面對開發(fā)板移植好的uClinux心里總是不甘心,心想自己也想移植一個,可眼睜睜的看了好一段時間,就是不知道怎么下手,那么多代碼啊,(有同感的朋友頂一下。┥磉呌譀]有做這一塊的,別人都學VxWorks,就這樣我把ARM當成了單片機用拉,看懂理解bootloader,然后遍一些簡單的程序,交叉編譯環(huán)境更是2個星期沒搞定。郁悶之中,項目選用了C8051F060,我又被該派成學習它,干一個愛一個啊,我就努力中。ARM7+uClinux成了我心中的遺憾。
  言歸正傳,本文章我們主要說一下移植過程中遇到的實際問題及我的切身體會,需要源碼和有疑惑者可來信,我將知無不言,言無不盡。(畢竟這是我第一篇。
我下面說一下我的移植體會,對于下面的問題我將給于解答,不對之處,敬請指出。說的時候頭一句,腳一句,讓大家笑話了^-^
1,    貝貝翻譯的書可按其說名看一邊,做到心中有數(shù),以后再慢慢翻閱,知道一直要做那些工作即可。書中有個程序結(jié)構(gòu)圖,看好好看,知道那些代碼跟移植有關,那些代碼跟應用程序有關
2,    找個源嗎仔細研究,對于51+KEIL推薦楊屹大俠的,他的思路比較清晰,我就是按他的程序,結(jié)構(gòu)思路來的。
3,    分析一個C函數(shù),和4個匯編函數(shù),想一想,為什么要自己編寫它,寫完了干什么?它們是怎么運動的?想想這些函數(shù)名一定要定義這個樣子嗎,能寫成其他的樣子嗎?
4,    仔細看看里面的C語言知識,這是你可能回發(fā)現(xiàn)這我們平時用的簡單的C51知識點多多了。
5,    OS里面很注重保護,保護各種各樣的量,重入函數(shù)本身就是一種保護它的局部變量,由于我接觸過VC++,了解了里面的多線程編程,所以對這一塊我比較好理解些。時間一長,大家就會明白。
6,    對移植來說我感覺一個難點是堆棧的設計,我比較了牛毅和楊屹的堆棧設計,一開始我心中有好多疑惑如何保證用戶堆棧在片外,局部變量如何保存才不被破壞
7,    時間節(jié)拍函數(shù)是怎么回事,理解了其工作原理之后,我該怎么提筆寫程序,這是像我這樣的初學著深深體會的,(自己曾有過不少這樣的體會,我學習C8051F060的CAN總線時就時這樣,看了一個星期后,就感覺差不多了,就是不知道程序該怎么寫,心理想誰要是能給我一個例程,我可能很快就上手,一天晚上當我得到例程,第二天我高興的5點就起床了,一天就感覺胸有成竹了,然后就沒什么了)看來,像我這樣的網(wǎng)友們水平都一般,但好在大伙都學習的激情,相信日積月累我們會有收獲的,相信有一天,我們能達到自己認為理解了的東西,都能夠用程序?qū)崿F(xiàn)出來。
8,    最后就是結(jié)合自己要移植的硬件,我原別人移植好的該程序,這期間會遇到各種各樣的問題,正如不幸的家庭千奇百狀。后文我會提出一些。
  不知大家看到這里有什么體會,我是針對入門著來說的,高手可不必看了,如果看,一定要提寶貴意見啊,呵呵,手都敲累了,休息5分鐘。
繼續(xù),下面我解答上面的問題和針對KEIL+ C8051F060具體細節(jié)做出說明,是本文的關鍵。
   C8051F060有256B+4K的片內(nèi)RAM,如果用戶的任務消耗資源不是太多的話,應該不用外括。
1,對于KEIL我們要裝上新華龍?zhí)峁┑尿?qū)動,并選用硬件仿真,點擊一旁的SET,彈出對話框,選用COM3,其它的都默認即可。點擊確定返回。這樣KEIL下編譯環(huán)境就建立好了,把所需文件加到工程里即可,在option for target 里面選用large模式,C429:  'data' segment too large就是沒設置large模式造成的錯誤。我寫這篇文章的時候沒有keil環(huán)境(在別人的機器上),有些單詞或說明的不準確,但我相信不防礙我思想的表達,設置好后,編譯連接生成目標文件后,即可點擊那個帶d的按鈕,激動人心的時刻到來了,你會發(fā)現(xiàn)FLASH正在燒寫,我第一次看到時高興的跳了起來,那種感覺太爽了。
   2,我說一下在編譯過成中我遇到的問題,首先是工程里的包含文件,startup.a51要使用,并修改RAM的地址,大家看一下我的源碼即可明白。對于UCOS的SOURCE源代碼只包含ucos_ii.c即可,因為它里面包含了源代碼。下面我將按要修改的文件分別說明。
a)    INCLUDES.h是個主包含文件你要把所有的頭文件都要放在里面。
b)    OS_CFG。H決定了你編譯文件的取舍
c)    OS_CPU_A.asm中只要把別人移植好的理解后,需要改動的代碼只有時間節(jié)拍函數(shù),針對C8051F060可把楊屹的serial函數(shù)去掉,直接printf即可。
d)    OS_CPU_C可不用改動。
e)    對于主測試程序,建議在每個任務中對不需要打斷的代碼中加上保護,這就是上文中所說的保護,否則輸出的是被打斷的內(nèi)容,大家一看我的源碼即可明白
f)    對于編譯的文件就簡單的說以上5點,下面說以下各位大俠給我的意見,在次一并轉(zhuǎn)給各位網(wǎng)友。牛毅回答的(僅供參考):
問:OSStartHighRdy等4個匯編子程序是否為可重入的?
答: 不可重入好些因為它們就不占?C_XBP空間
問:typedef bit               BOOLEAN;
     我看有的說一定要把 BOOLEAN定義成CHAR
      答:這個定義要看實際聲明的變量怎么賦值
     問:在你的OS_STK  *OSTaskStkInit(。。。)中
stk      -= sizeof(void *);
         *(void **)stk   = (void *)os_pdata;  
答:stk      -= sizeof(void *);
*(void **)stk   = (void *)os_pdata;  
stk是指向?C_XBP的堆棧指針(堆棧類型是滿向下的);第一句是調(diào)整其指針使其空出(void *)個空間,第二句把stk強制轉(zhuǎn)換為(void *)類型后對其賦值
問:你是如何包證建立的用戶任務棧在片外ram的?我知道系統(tǒng)棧應該在片內(nèi)的
答:把SP  COPY   到?C_XBP中OSTaskStkInit()函數(shù)就是模擬入棧
問:os_pdata(R3,R2,R1)用寄存器傳遞os_pdata實際應用中,通常是不是沒有參數(shù)
答:通常不用傳遞有效參數(shù),就傳遞0,但必須有
     楊屹回答的(僅供參考):
     問:此外冒昧問一下你的OS_CPU_A.ASM沒有包含OS_CFG.H是為什么?
     答:不需要的頭文件不必包含
問:對于可重入函數(shù),只加上那個關鍵字就可以嗎?我看有些移植的代碼中對他操作了好多,都很難看懂了,麻煩你說一下,另外我看了你的關于重入函數(shù) 說明的文檔,對這個問題還是不太理解
答:重入函數(shù)加上關鍵字并處理仿真堆棧指針
    問:upstart51.a這個文件有什么用,和設置的堆棧關系大嗎?好像是跟堆棧有關系
答:startup51是初始化文件,用于初始化指針、內(nèi)存等
3,對C語言的知識我想說明2點,extrn是用來聲明外部定義好的,在本程序中的應用。
   Public是聲明定義在本程序中,將來讓另外的文件調(diào)用的,是預留的接口。
4,有些函數(shù)名不一定要定義成書上說的樣子,只要函數(shù)原型聲明對了即可
5,對于時間節(jié)拍函數(shù)是用我們的硬件定時器產(chǎn)生的,大家一看就明白。
好了,手又敲累了,想必大家也看累了。羅嗦了這些,希望能對大家有那么一點點幫助,我這段時間來的付出就沒有白費,歡迎大家和我交流。同時也希望大家多支持我的UCOS學習報告,我會繼續(xù)學習,有什么體會繼續(xù)發(fā)表出來,將來還會把ARM+linux的遺憾彌補掉。
語言草率之處,請大家涼解,技術(shù)錯誤之處,再次懇請之處,讓我們共同進步。
最后感謝我的女朋友一直支持我的工作,原諒我陪她逛街的次數(shù)一壓再壓,以至于我們2個星期沒好好玩了。

QQ:12928376
EMAIL:shan318@163.com


2樓: >>參與討論
阿南
很好,頂!
 
3樓: >>參與討論
liaozhihua
ding
 
4樓: >>參與討論
roosvelt
丁頁...
 
5樓: >>參與討論
good_ys
很好!!
 學習中......

6樓: >>參與討論
dspxiao
需要源代碼
能不能給份源代碼啊,謝謝,請發(fā)到dspxiao@tom.com

參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
關于ARM的FLASH和圖形GUI
ARM+DSP+FPGA綜合開發(fā)平臺
關于ADS
上海哪里有培訓WINCE,LINUX?
顯示過程中出現(xiàn)花屏,各位指導指導吧!
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號