DDK中使用float类型数据和atof函数

lyingbo 2011-05-26 06:28:14
在驱动的代码里面
1:怎么使用float,double类型数据参与运算
2:怎么使用atof函数
...全文
230 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyingbo 2011-12-30
  • 打赏
  • 举报
回复
二:代码的检视以及配合联调
检视记录
联调的过程中走了几张问题单
1. DTS2011121904879 【自验单/优化单】概率查询OLT接收ONT光模块结果总是初始化值-50dB
之前的支持1db精度光模块特性开发的时候引入的问题
2. DTS2011122003143 【自验优化单】CTC3.0流分类OLT下发的OAM消息不正确
输入参数解析偏移不正确导致
3. DTS2011122104240 【自验优化单】CTC3.0流分类查询显示消息不正确
开发的时候只修改了设置流分类特性对CTC3.0的支持,没有提供查询的支持
4. DTS2011122003143 【自验提单】【H802EPBD+SCUN】互通测试环境上,添加不同型号不同版本的ont上线后,0号pon口有大量ont无法上线
对接以前的ont版本上不来,FW问题。
5. DTS2011120500623 【自验/优化单】华为私有OAM消息优化时,非华为ONT异步消息返回时需要释放节点,否则节点需要在超时后才能释放,影响效率
之前的一个特性开发时引入的
联调的过程中积累了一些常用的定位问题的命令

总结
短期目标:能独立开发特性,独立定位问题。
不足之处:
刚开始开发的过程中,对代码结构、OAM消息的交互原理、异步消息的机制不怎么了解,导致开发效率比较低,对编写的代码不能完全理解,检视的时候问题比较多,需要在后续的工作中改进。
需要深入了解EPON的知识,学习定位问题的方法,逐步积累,丰富经验。

致谢:
需要感谢导师:殷学智跟余红明的耐心指导,还有陈钟等其他兄弟的帮助。
lyingbo 2011-12-30
  • 打赏
  • 举报
回复
本月工作主要分为两部分:前期是CTC3.0的开发,后期是配合线路联调。
一:开发部分主要有四个OAM消息:
1、 设置、查询ONU的MAC地址老化时间
2、 设置、查询onu上环路端口控制状态
3、 查询ont的Capabilities-3
4、 设置、查询Classification&Marking特性
外加TK刷新FW,几个OAM需要修改:
5、 363对应的Get ONU Information消息
6、 235对应的Get CTC ONU Serial Number消息
lyingbo 2011-06-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiangnandexue 的回复:]
引用 3 楼 q342210738 的回复:

引用 2 楼 huntercao 的回复:
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你……
[/Quote]

我自己定义了一种结构
typedef struct customfloat
{
LONG num;
LONG pos;
}CustomFloat;

我用这个结构来表示的我的float类型数据,因为我对精度要求不高
num表示整形数值,pos表示小数点位置
NLP_MT 2011-06-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 q342210738 的回复:]

引用 2 楼 huntercao 的回复:
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你自己去实现了一个内核可以运行的版本。或者,你直接将……
[/Quote]
请问你最后是怎么解决的。可否把方法发我邮箱:ganer_7@163.com 谢谢!
lyingbo 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 huntercao 的回复:]
没有在浮点运算空间里面打印过浮点数值。

可能是DbgPrint的问题。
[/Quote]

谢谢你的解答~~结贴了~~·
曹大夯 2011-05-31
  • 打赏
  • 举报
回复
没有在浮点运算空间里面打印过浮点数值。

可能是DbgPrint的问题。
lyingbo 2011-05-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huntercao 的回复:]
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你自己去实现了一个内核可以运行的版本。或者,你直接将函数编译进去看看,系统带的版本能否使用。
[/Quote]

谢谢你的回复~~我也是按这么来做的,可是调试输出的就是不对,麻烦你帮我在看这个代码有没问题:
	KFLOATING_SAVE saveData;
NTSTATUS status;

float ret;

status = KeSaveFloatingPointState(&saveData);
if (NT_SUCCESS(status))
{
DbgPrint("============char2float============\n");

DbgPrint("Exemp1:%8.3lx\n",11.23);
ret = 11.23;
DbgPrint("Exemp2:%8.3lx\n",ret);

KeRestoreFloatingPointState(&saveData);

}

在DriverMonitor里面的输出就是
Exemp1:8f5c28f6
Exemp2:80000000
这个是什么原因呢~~
谢谢你了
曹大夯 2011-05-27
  • 打赏
  • 举报
回复
驱动里面可以用KeSaveFloatingPointState/KeRestoreFloatingPointState将浮点运算代码包起来。

http://msdn.microsoft.com/en-us/library/ff553243(v=VS.85).aspx

至于atof,可能要你自己去实现了一个内核可以运行的版本。或者,你直接将函数编译进去看看,系统带的版本能否使用。
lyingbo 2011-05-27
  • 打赏
  • 举报
回复
知道的告诉我下~~不胜感激了~~

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧