?? 00000011.htm
字號:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>vxworks下bsp制作教程 jacobw </title></head><body><center><h1>BBS 水木清華站∶精華區(qū)</h1></center><a name="top"></a>發(fā)信人: lzy (心靈鉆石), 信區(qū): Embedded <br />標(biāo) 題: 自己寫的一點,大家指正 <br />發(fā)信站: BBS 水木清華站 (Tue Jun 19 08:57:53 2001) <br /> <br />vxworks下bsp制作教程 <br />1 vxworks概述 <br />vxworks是WIND RIVER公司的產(chǎn)品。作為一種商用的嵌入式操作系統(tǒng)?vxworks擁有 <br />強大的功能和友好的用戶界面。與免費的嵌入式操作系統(tǒng)相比?商用操作系統(tǒng) <br />經(jīng)過嚴(yán)格的測試?具有良好的實時性?易用性和大量的文檔支持?但是它的源碼是 <br />不公開的并且價格昂貴;免費的嵌入式操作系統(tǒng)有很多?大都是linux的移植?公開 <br />源代碼?但缺乏文檔?要對照源碼進(jìn)行開發(fā)。 <br />2 BSP的流程 <br />BSP流程分成兩部分。首先是位于BootRom中的Boot代碼?它的作用是實現(xiàn)配置硬件和 <br />啟動vxworks下載程序。接下來是下載后跳轉(zhuǎn)到vxworks的入口地址運行操作系統(tǒng)和 <br />應(yīng)用程序。 <br />流程入圖: <br />ROM中的啟動代碼部分: <br />RomInit在文件在文件romInit.s中。它是運行的開始?實現(xiàn)這一部分是首先的。 <br />它實現(xiàn)判斷啟動類型?配置內(nèi)核和非內(nèi)核寄存器以及內(nèi)存和外圍設(shè)備的讀寫時序 <br />?因此可以在此處加入內(nèi)存檢測功能。在BSP中無法進(jìn)行調(diào)試?只能通過閃燈實現(xiàn) <br />云信正確與否的判斷。閃燈功能函數(shù)也要在此加入。 <br />判斷啟動類型和配置寄存器?這一部分不需要改動。 <br />配置內(nèi)存和外圍設(shè)備讀寫時序?要進(jìn)行改動。這一部分的SDRAM?ROM?FLASH?FPGA <br />有相應(yīng)的模板可以參考。它的實現(xiàn)是通過使用宏定義來實現(xiàn)的。但是要改動的 <br />話也不難?一般是改動空間大小的屏蔽位?讀寫位數(shù)?以及片選寄存器OR和BR。 <br />至于特殊外設(shè)的讀寫有待討論。 <br />內(nèi)存檢測在這里實現(xiàn)較復(fù)雜?它根據(jù)相應(yīng)的內(nèi)存檢測算法實現(xiàn)。主要是對地址線 <br />和數(shù)據(jù)線的檢測。通過寫入數(shù)據(jù)再會讀出數(shù)據(jù)來判斷。使用"走步1"和"走步0" <br />算法。這一部分較多的依賴硬件?可移植性較差?根據(jù)自己的單板改動。 <br />閃燈在這一部分是強烈推薦的。因為閃燈才能定位程序的運行位置。閃燈函數(shù) <br />可移植?一般要改動?因為燈可能接在不同的I/O口上。另外注意860SAR的PORT B <br />是32位的。具體的端口見相應(yīng)的CPU的I/O口的參數(shù)?配置相應(yīng)的寄存器。 <br />RomInit在函數(shù)結(jié)尾跳入RomStart。 <br />RomStart在BootInt.c文件中。它是系統(tǒng)運行的第一個C函數(shù)。這一部分是 <br />Wind River公司提供的標(biāo)準(zhǔn)程序?一般不需改動。該函數(shù)是C的入口函數(shù), <br />由匯編程序調(diào)用,主要完成清內(nèi)存,將ROM中的程序拷貝到RAM,解壓并跳 <br />至解壓后的程序處運行。 <br />UsrInit在BootConfig.c文件中。它主要是實現(xiàn)硬件的初始化。其中涉及 <br />到串口?網(wǎng)口的初始化?CONSOLE的配置等。 <br />其中串口和網(wǎng)口的配置是BSP的重要部分?但860CPU對串口和王口有很好的 <br />支持?只要做很小的改動即可?串口很簡單?網(wǎng)口較復(fù)雜一些。 <br />UsrRoot在BootConfig.c文件中。它主要是實現(xiàn)vxworks文件的下載?并且 <br />跳轉(zhuǎn)到vxworks的入口地址。從而進(jìn)入到操作系統(tǒng)中去。 <br />VXWORKS文件中的代碼部分: <br />SysInit在sysAlib.s中。它是vxworks的啟動代碼。它與RomInit的作用 <br />相同?對于這個文件?我們一般不需要去改動它。 <br />UsrInit在Usrconfig.c中。它的作用與Boot中的UsrInit的作用相同? <br />他們都調(diào)用SysLib.c中的子函數(shù)。實現(xiàn)相同的硬件初始化功能。 <br />UsrRoot在UsrConfig.c中。它的作用與Boot中的UsrRoot的作用類似 <br />。但是這里的UsrRoot是最終進(jìn)入到應(yīng)用程序中去。 <br /> <br />-- <br /> <br />※ 來源:·BBS 水木清華站 smth.org·[FROM: 202.38.81.18] <br /><a href="00000010.htm">上一篇</a><a href="javascript:history.go(-1)">返回上一頁</a><a href="index.htm">回到目錄</a><a href="#top">回到頁首</a><a href="00000012.htm">下一篇</a></h1></center><center><h1>BBS 水木清華站∶精華區(qū)</h1></center></body></html>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -