导 航┆主 站┆文 章┆资 料┆下 载┆美 食┆读 书┆笑 话┆博 客┆论 坛
>> Tony嵌入式开发论坛静态版首页
查看完全版本:Tony嵌入式开发论坛

 

    vwworks相关问题
    作者:lastwing 时间:2008-9-5 10:34:26

    vxworks 的启动(CF卡)

    (1) 需制作启动盘。先在CF卡上安装DOS操作系统,从而可以使用vxsys.com制作vxworks的引导扇区。具体方法为:将CF卡插到读卡器上,再将读卡器插到电脑的USB口上;利用一款叫做“USBOOT”或“超级急救盘_优盘版”的软件(http://doshome.com),通过USB口把Dos安装到优盘上。安装过程很简单,按提示操作即可(注意,安装过程中可能要求拔下优盘,然后再插上)。安装完后,在D:\Tornado2\host\x86-win32\bin找到vxsys.com文件,将它复制到CF卡。将CF卡拔下,插到PC104上。启动PC104,进入DOS环境(当前盘一般为C:\,表示CF卡的盘符)。在DOS提示符后输入lock C:,在运行vxsys C:。运行成功后就已经制作了CF卡的引导扇区。

    (2) 制作BOOTROM。BOOTROM用于引导Vxworks。主要任务是:将目录

    D:\Tornado2\target\config\pcPentium中的文件全部复制到PC104(自己创建,作为自己的BSP)目录下。

    在config.h中 修改#define DEFAULT_BOOT_LINE \:

    “ata=1,0(0,0)host:/ata1/vxWorks h=192.168.0.24 e=192.168.0.55 o=rtl"

    在config.h中包含定义:

    #define INCLUDE_ATA /*包含IDE或EIDE(ATA)硬盘驱动*/

    在config.h中将

    #define SYS_WARM_TYPE SYS_WARM_FD

    改为

    #define SYS_WARM_TYPE SYS_WARM_ATA /*定义热启动设备为硬盘*/

    在config.h中把

    #define SYS_WARM_ATA_CTRL 0

    改为

    #define SYS_WARM_ATA_CTRL 1 /*使用1#硬盘控制器进行热启动*/

    在config/bspname/pc.h中找到

    #define ATA1_INT_LVL 0x9

    改为

    #define ATA1_INT_LVL 0xf /*定义中断请求号*/

    创建bootable image 工程。在Project菜单中点击Build Boot Rom,即可在PC104目录中生成Bootrom_uncmp文件,这就是bootrom文件。此外还需在windows提示符下,运行vxcopy D:\Bootrom_uncmp D:\bootrom。将该bootrom复制到CF卡上(注意,最好将前面的DOS系统文件全部删除,以便于系统快速启动)。

    (3) 制作vxworks。与第二步类似,只需点击build即可。将生成的vxworks复制到CF卡。将CF卡插入PC104启动即可。

    Tornado2.2中为何不能启动Vxsim?

    这主要是由微软XP系统的补丁造成的。可在网站上下载WindowsXP-KB924867- x86-CHS.exe,运行之即可。

    如何将.o文件静态连接到vxworks中?

    一般将.o文件设为EXTRA_MODULES的值。可在workspace窗口中点击builds标签,选择该工程的default,再点击Macros,在下拉列表中选择EXTRA_MODULES,修改其值。注意,一定点击add/set按钮。如果.o文件使用cpp文件编译的,有可能连不进去。如果.o文件使用c文件编译的,且仍然连不进去,一个可行的方法是删除该工程下的default目录,重新编译即可。

    2、请教Linux中的3种timer的区别与联系?

    Linux
    中有3种timer:

    1、Real Time Clock(RTC)

    2、Programmalbe Interval Timer(PIT)

    3、Time Stamp Counter.(TSC)

    其中RTC是位于CMOS中的,其频率范围是2HZ--8192HZ.
    PIT
    主要由8254时钟芯片实现的

    TSC的主体是位于CPU里面的一个64位的TSC寄存器。每个CPU时钟周期其值加一。

    但这三者的具体联系我不是很清楚,那位大虾介绍一下吧。

    RTC是PC主板上的晶振及相关电路组成的时钟电路的生成脉冲,RTC经过8254电路的频产生一个频率较低一点的OS(系统)时钟TSC,系统时钟每一个cpu周期加一,每次系统时钟在系统初起时通过RTC初始化。8254本身工作也需要有自己的驱动时钟(PIT),可以参考一些单片机方面的书籍。


    还是不明白。

    按你的意思,那就是RTC的精确度比TSC更高了。但是我查资料发现8254的震荡频率最高是4.194304MHz,也就是说TSC的频率比这个频率更少,而现在的CPU的频率已经超过了GHz,如果每个cpu周期TSC时钟加一,那么TSC的频率岂不可以达到GHz级,这样岂不矛盾了吗?

    另外一些资料说利用TSC可以实现比PIT更精确的定时,也就是不可能由PIT产生了。麻烦你再详细一点好吗?

    8254本身只是一个定时/计数器,他本身要正常工作需要一个晶振的支持,就好像一个将1mA的电流放大到1A的放大器本身工作也需要一个驱动电流一样,4.194304MHz应该就是你的8254的工作晶振,4.194304MHz不是RTC,RTC是输入给8254的脉冲,经过分频产生os时钟,linux每个系统时钟周期10ms,cpu本身工作(处理指令,数据)也有自己的指令周期,他们是不同的,另外你所说的资料我没看过,有些地方说法可能会有点误差。

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:tearring 时间:2008-9-5 23:21:42

    有些都是tornado 2.0,vx5.4的教程吧

    希望能有些针对2.2,vx\5.5的

    尤其是BSP方面的知识

    虽说比较通用

    但还是有些差别,把人搞的晕头转向的

    [em06]

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:chenlei188 时间:2008-9-5 11:19:20

    高人啊!~~~~

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------



查看完全版本:Tony嵌入式开发论坛
Copyright 2006-2008 Cevx.Com Cevx.Net 制作 版权所有
网友发帖仅代表个人观点,与本论坛立场无关