00000011.htm

来自「水木社区 embeded 版精华区 下载」· HTM 代码 · 共 72 行

HTM
72
字号
<?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>发信人:&nbsp;lzy&nbsp;(心灵钻石),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;自己写的一点,大家指正&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Tue&nbsp;Jun&nbsp;19&nbsp;08:57:53&nbsp;2001)&nbsp;<br />&nbsp;<br />vxworks下bsp制作教程&nbsp;<br />1&nbsp;vxworks概述&nbsp;<br />vxworks是WIND&nbsp;RIVER公司的产品。作为一种商用的嵌入式操作系统?vxworks拥有&nbsp;<br />强大的功能和友好的用户界面。与免费的嵌入式操作系统相比?商用操作系统&nbsp;<br />经过严格的测试?具有良好的实时性?易用性和大量的文档支持?但是它的源码是&nbsp;<br />不公开的并且价格昂贵;免费的嵌入式操作系统有很多?大都是linux的移植?公开&nbsp;<br />源代码?但缺乏文档?要对照源码进行开发。&nbsp;<br />2&nbsp;BSP的流程&nbsp;<br />BSP流程分成两部分。首先是位于BootRom中的Boot代码?它的作用是实现配置硬件和&nbsp;<br />启动vxworks下载程序。接下来是下载后跳转到vxworks的入口地址运行操作系统和&nbsp;<br />应用程序。&nbsp;<br />流程入图:&nbsp;<br />ROM中的启动代码部分:&nbsp;<br />RomInit在文件在文件romInit.s中。它是运行的开始?实现这一部分是首先的。&nbsp;<br />它实现判断启动类型?配置内核和非内核寄存器以及内存和外围设备的读写时序&nbsp;<br />?因此可以在此处加入内存检测功能。在BSP中无法进行调试?只能通过闪灯实现&nbsp;<br />云信正确与否的判断。闪灯功能函数也要在此加入。&nbsp;<br />判断启动类型和配置寄存器?这一部分不需要改动。&nbsp;<br />配置内存和外围设备读写时序?要进行改动。这一部分的SDRAM?ROM?FLASH?FPGA&nbsp;<br />有相应的模板可以参考。它的实现是通过使用宏定义来实现的。但是要改动的&nbsp;<br />话也不难?一般是改动空间大小的屏蔽位?读写位数?以及片选寄存器OR和BR。&nbsp;<br />至于特殊外设的读写有待讨论。&nbsp;<br />内存检测在这里实现较复杂?它根据相应的内存检测算法实现。主要是对地址线&nbsp;<br />和数据线的检测。通过写入数据再会读出数据来判断。使用&quot;走步1&quot;和&quot;走步0&quot;&nbsp;<br />算法。这一部分较多的依赖硬件?可移植性较差?根据自己的单板改动。&nbsp;<br />闪灯在这一部分是强烈推荐的。因为闪灯才能定位程序的运行位置。闪灯函数&nbsp;<br />可移植?一般要改动?因为灯可能接在不同的I/O口上。另外注意860SAR的PORT&nbsp;B&nbsp;<br />是32位的。具体的端口见相应的CPU的I/O口的参数?配置相应的寄存器。&nbsp;<br />RomInit在函数结尾跳入RomStart。&nbsp;<br />RomStart在BootInt.c文件中。它是系统运行的第一个C函数。这一部分是&nbsp;<br />Wind&nbsp;River公司提供的标准程序?一般不需改动。该函数是C的入口函数,&nbsp;<br />由汇编程序调用,主要完成清内存,将ROM中的程序拷贝到RAM,解压并跳&nbsp;<br />至解压后的程序处运行。&nbsp;<br />UsrInit在BootConfig.c文件中。它主要是实现硬件的初始化。其中涉及&nbsp;<br />到串口?网口的初始化?CONSOLE的配置等。&nbsp;<br />其中串口和网口的配置是BSP的重要部分?但860CPU对串口和王口有很好的&nbsp;<br />支持?只要做很小的改动即可?串口很简单?网口较复杂一些。&nbsp;<br />UsrRoot在BootConfig.c文件中。它主要是实现vxworks文件的下载?并且&nbsp;<br />跳转到vxworks的入口地址。从而进入到操作系统中去。&nbsp;<br />VXWORKS文件中的代码部分:&nbsp;<br />SysInit在sysAlib.s中。它是vxworks的启动代码。它与RomInit的作用&nbsp;<br />相同?对于这个文件?我们一般不需要去改动它。&nbsp;<br />UsrInit在Usrconfig.c中。它的作用与Boot中的UsrInit的作用相同?&nbsp;<br />他们都调用SysLib.c中的子函数。实现相同的硬件初始化功能。&nbsp;<br />UsrRoot在UsrConfig.c中。它的作用与Boot中的UsrRoot的作用类似&nbsp;<br />。但是这里的UsrRoot是最终进入到应用程序中去。&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;202.38.81.18]&nbsp;<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 + =
减小字号Ctrl + -
显示快捷键?