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