社区
其它技术问题
帖子详情
'The exception Privileged instruction ' 是什么毛病??
zouzoumao
2005-09-05 10:32:31
pc104编程,有_outp操作。一运行就报这个错。
谢谢,非常着急!
...全文
464
9
打赏
收藏
'The exception Privileged instruction ' 是什么毛病??
pc104编程,有_outp操作。一运行就报这个错。 谢谢,非常着急!
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zouzoumao
2005-09-06
打赏
举报
回复
wuwu.............
谢谢大家,给分了哦。见者有份。
mituzhishi
2005-09-05
打赏
举报
回复
能不能贴一下代码?
firstdreamer
2005-09-05
打赏
举报
回复
最好贴出代码让大家看看
Jagen在路上
2005-09-05
打赏
举报
回复
to zouzoumao(走走猫~), 你的操作系统是32位,除了写驱动,没有办法了:(
本来在普通主板上0x3f0对应的是COM1,但是在PC104上却找不到,看来应该只有些驱动才行了!
wanguodu
2005-09-05
打赏
举报
回复
要写硬件端口或管理级寄存器只能在内核态下写。
mituzhishi
2005-09-05
打赏
举报
回复
没搞过这么复杂的东西.
zouzoumao
2005-09-05
打赏
举报
回复
操作系统是NT
请问除了写驱动外还有什么别的办法吗?
wanguodu
2005-09-05
打赏
举报
回复
大意是在用户模式下访问管理(内核)模式下的寄存器。如果你是在象Linux这种操作系统下开发设备驱动的话,你的驱动代码是不能在用户空间跑的,必须集成或动态加载在内核中方可正常运行。
zouzoumao
2005-09-05
打赏
举报
回复
谢谢各位的关注。代码如下。
这是用来给pc104设置watchdog timer的程序,基本完全是copy用户手册上给出的例程。有人说是访问了不该访问的寄存器导致的,需要虚拟一下,我可是一点也不知道该怎么做。。。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define IO_INDEX_PORT 0x3F0
#define IO_DATA_PORT 0x3F1
#define UNLOCK_DATA 0x87
#define LOCK_DATA 0xAA
#define DEVICE_REGISTER 0x07
void EnterConfigMode()
{
_outp(IO_INDEX_PORT, UNLOCK_DATA);
_outp(IO_INDEX_PORT, UNLOCK_DATA);
}
void ExitConfigMode()
{
_outp(IO_INDEX_PORT, LOCK_DATA);
}
void SelectDevice(unsigned char device)
{
_outp(IO_INDEX_PORT, DEVICE_REGISTER);
_outp(IO_DATA_PORT, device);
}
unsigned char ReadAData(short int reg)
{
_outp(IO_INDEX_PORT, reg);
return (_inp(IO_DATA_PORT));
}
void WriteAData(unsigned char reg, unsigned char data)
{
_outp(IO_INDEX_PORT, reg);
_outp(IO_DATA_PORT, data);
}
void SetWatchDogTime(unsigned char time_val)
{
EnterConfigMode();
SelectDevice(8);
//Set Register F2
//Set Watch-Dog Timer 1~ 256 steps
WriteAData(0xF2, time_val);
ExitConfigMode();
}
void main(int argc, char* argv[])
{
int time_value=0;
char *ptr;
if (argc == 1)
{ printf("\n Syntax: 3412WD [step] \n");
printf(" step range : 1 ~ 256 steps \n");
printf(" timer range: 0:16 ~ 127:16 (min:sec) \n");
return ;
}
if (argc > 1)
{
ptr = argv[1];
time_value = atoi(ptr);
}
if (time_value > 0 && time_value < 256)
{
SetWatchDogTime((unsigned char) time_value);
printf("Watch Dog reset Timer set up : %02d:%02d ",(time_value-1)/2,
((time_value-1)%2)*30+16);
}
}
单步执行的时候可以看到,就是在EnterConfigMode处走不下去了。
【日记】周六居然要停水(814 字)
此外,某些投机是必然的和不可避免的,因为就大多数普通股而言,其赚钱和亏损的机会同在,所以必须有人去承担这些风险。(2)在缺乏足够的知识和技能的情况下,把投机当成一种严肃的事情,而不是当成一种消遣;[2] 投机从以下两个方面来说是有益的:首先,没有投机,那些未经检验的公司[如亚马逊网站和早期的爱迪生电气(Edison Electric Light Co.)],就永远无法筹集其发展所需的资本金。买家必须承担股票的下跌风险,而卖家也承担着对应的风险,即卖出后股票上涨的风险。2025 年 4 月 10 日。
20181103 周六 日记
20181103 周六 日记 8.40来,早餐: 鸡蛋饼 1、上午: 2、中饭:两个菜 减肥 3、中午: 4、下午: 5、晚饭: 6、晚上:学数据结构高分笔记p10 orbbec代码
20181110 周六 日记
20181110 周六 日记 6.20来,早餐: 鸡蛋饼+荠菜饼 1、上午:去河南 2、中饭:面包 3、中午:睡觉-2pm 4、下午:到河南工业大学附近宾馆 5、晚饭:螺蛳粉 6、晚上:调试程序 7、建模大赛二等奖 ...
20181201 周六 日记
20181201 周六 日记 9点20点,早餐: 粥, 1、上午:去找于老师 2、中饭:2个菜,2个皮蛋 3、中午:睡觉到12点20 4、下午:找于老师,不在,郑代签 去拿快递,橙子46元11个 打羽毛球2点到2点40 3点学习orbbec的代码 5、晚饭: 6、晚上: 学6个小时最多...
20181208 周六 日记
20181208 周六 日记 12点,早餐:没吃 1、上午:睡 2、中饭:益新食堂 3、中午:改专利 4、下午:改专利 5、晚上:改专利、数据结构第8章、排序
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章