首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式操作系统VxWorks中文FAQ 06

嵌入式操作系统VxWorks中文FAQ 06

2.7 工程
2.8 目标机服务器
2.9 Shell
2.10 Telnet
2.11 Tornado
2.12 版本控制
2.13 可视化集成
2.14 Windsh
2.15 WindView


3.BSP FAQ
3.1 不同BSP
3.2 处理器
3.2.1 Power PC
3.2.1.1 问题关于MPC860BSP(新手上路):在读前辈程序的时候遇到这样一些语句:
lis r3, 0x0090
ori r3, r3, 0x0000 #plp=9, 50M clk
stw r3, PLPRCR(r4) #PLPRCR
不知道LIS、ORI、STW是什么语言?望指教!谢谢
A:是PowerPC汇编,
lis r3, 0x0090 放数据0x0090到r3
Rejoicer:应该将立即数附给r3,然后左移位,注意,低位就为0
ori r3, r3, 0x0000 #plp=9, 50M clk 后两数之间取"或"放入前面r3
Rejoicer:r3低位或0x00(立即数)
stw r3, PLPRCR(r4) #PLPRCR PLPRCR(r4)按位右移#PLPRCR,放入r3
Rejoicer: 将r3的内容写到 地址 r4 + PLPRCR 指向的寄存器(PLPRCR寄存器)中,(估计r4放的IMMR值)

3.2.1.2 如果要在mpc860上加一个硬盘,用什么方法呢? 谢谢!
A:你加一个网络文件系统,然后通过网络文件系统可以访问你机器的硬盘

3.2.1.3 mpc860在下载中遇到的问题,我用veisionice仿真器下载程序的时候,发现程序老是下不下去。
在检查中,我发现CLKOUT只有1。25M。我用的是外围5M晶体振荡器,MODCK [1-2] 设置为10。[MF+1]为8。
我的主频是40M。应当说在没有程序运行的情况下,CLKOUT应该为5M。这是怎么回事?请大家指教。
A:clkout的输出(输入CLK的分频系数)也是通过860的一个寄存器配置来得到的,你可以查一下860的相关的
寄存器看一下。

3.2.1.4 860中的程序调用,在860的BSP文件 romInit.s中,在程序末尾有条指令是跳转到 romStart(),
在这之前有个计算 romstart() 入口地址的公式. romstart入口地址= romstart - romInit + ROM_TEXT_ADRS
我对这个公式的理解不是很明白,谁能解释一下,在汇编里调用某个C函数,那该怎么来实现或\
计算跳转地址.单独在一个汇编程序里,我可以理解,但一个汇编调用一个C程序我糊涂了
who can help me ? thanks
A:可以这样理解ROM_TEXT_ADRS=romInit,这样则romstart=romstart,上述些方式为了防止ROM_TEXT_ADRS
不等于romInit情况下,还能得到正确的romstart地址. 这里不涉及C程序还是汇编程序.只是传了一个
地址.romstart已在前面声明为一个外部函数. 原标号只是相对地址,不信你自己跟一下,或查看一下生成的
bootrom.bin文件,分析一下机器码你所提到的三个地址:romInit,romStart,ROM_TEXT_ADRS,其实只有
第三个是绝对地址,前两个都只是标号,也即相对地址.在romIinit.s中由于取指令还得从NVRAM中取,
所以必须用绝对地址,那么romStart的绝对地址在哪里呢?只有算一算了,我们只知道romInit肯定是在
ROM_TEXT_ADRS所标识的地址,而且肯定是bootRom目标程序中的最低地址,所以romStart的绝对地址是
(romStart - romInit) + ROM_TEXT_ADRS

3.2.1.5 vxworks下,是否有api可以获取网卡mac地址呢?
A1:如果是MPC860,可以试一下这个函数
char macBuffer[8]; // MAC地址
sysCpmEnetAddrGet(0, macBuffer);
或直接读网卡MAC地址的寄存器.
A2:为什么一定要用api呢,
不管是860 scc 口,还是8260 Fcc口,都可以读参数区的PADDR1_H,-M -L得到嘛,
如果你是做BSP的,一般都会从利用这个变量unsigned char sysFccEnetAddr [6]
syslib.c
A3:vxworks操作系统是通过BSP来了解自己的网口地址的,具体说是通过系统函数sysCpmEnetAddrGet(),
这个函数属于BSP的范畴,它的函数实现是可以修改的。
返回列表